`
brandNewUser
  • 浏览: 456905 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Sonar系统使用说明

阅读更多

1.      Sonar简介

 

Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量

 

通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测

 

 

2.      Sonar的安装

作为一个代码分析平台,Sonar由以下三个部分组成:

数据库:存放配置信息和分析结果信息;

一个Web服务器:发布应用,在线浏览,配置分析;

一个客户端:执行源代码分析;

 2.1          数据库

Sonar中内置了derbyH2数据库,不需要任何安装。但一般情况下我们不使用Sonar自带的内建数据库。

 

SonarQube解压后,其中的conf/sonar.properties配置其数据库信息。,一般需要配置以下的属性:

属性

含义

sonar.jdbc.url

数据库连接地址

sonar.jdbc.driver

数据库驱动类

sonar.jdbc.user

数据库用户名

sonar.jdbc.password

数据库密码

 

 

 2.2          Web服务器

如何启动sonar?在SonarQubebin目录下对应各种平台的启动方式,这样就会默认启动Sonar内置的web服务器,启动完成后,通过http://localhost:9000访问。

 

可以在conf/sonar.properties文件中修改一些web服务的相关信息,比如sonar.web.hostportcontext

 

建议将Sonar安装到单独的web服务器中,比如tomcat,安装的方式为:

 

运行SONARwar目录下的build-war.bat, 执行完成后,会在本目录下生成一个名称为sonar.war的部署文件;将此war文件放置到对应的tomcat\webapps目录下,启动tomcat即可。

 2.3          客户端

除了数据库和web服务器之外,Sonar还有很重要的一部分:客户端。客户端使用具体的程序工具进行分析,不同的语言,不同的项目构建类型可以使用不同的客户端程序。

 

Sonar提供很多类型的客户端:

客户端

说明

Sonar Runner

推荐默认客户端

Maven

如果项目使用Maven构建推荐使用此种方式

Ant

如果项目使用ant构建则推荐

CI Engine

持续集成,比如HudsonJenkins

 

Sonar Runner

Sonar Runner是最常用的分析客户端之一,可以对绝大多数类型的项目进行分析,在SonarQube的下载页面中,同样可以下载到Sonar Runner,下载后的安装过程:

1.  解压下载包;

2.  将解压的路径设置成环境变量:SONAR_RUNNER_HOME;

3.  修改配置文件$SONAR_RUNNER_HOME/conf/sonar-runner.properties

         其中最主要是数据源的配置,sonar-runner会将分析的结果存放在数据库中,下图中就是配置Postgres的示例配置文件:

#Configure here general information about the environment, such as SonarQube DB details for example
#No information about specific project should appear here
#----- Default SonarQube server
sonar.host.url=http://localhost:8888/sonar/
#----- PostgreSQL
sonar.jdbc.url=jdbc:postgresql://localhost/sonar
#----- MySQL
#sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
#----- Oracle
#sonar.jdbc.url=jdbc:oracle:thin:@localhost/XE
#----- Microsoft SQLServer
#sonar.jdbc.url=jdbc:jtds:sqlserver://localhost/sonar;SelectMethod=Cursor
#----- Global database settings
sonar.jdbc.username=postgres
sonar.jdbc.password=postgres
#----- Default source code encoding
sonar.sourceEncoding=UTF-8
#----- Security (when 'sonar.forceAuthentication' is set to 'true')
#sonar.login=admin
#sonar.password=admin

 

 

3.      Sonar执行检查

 在使用Sonar做代码分析时,有很多途径,但推荐使用sonar runner

3.1          简单工程

 

将要进行项目分析的根路径下,创建配置文件,文件名为sonar-project.propertiessonar-runner执行分析时,会读取该文件,示例sonar-project.properties,其中配置了工程名称、版本、标识,对应的src路径,执行的测试用例,对应的bin文件夹和库信息,对应的编程语言等。

# required metadata

sonar.projectKey=my:project

sonar.projectName=My project

sonar.projectVersion=1.0

# path to source directories (required)

sonar.sources=srcDir1,srcDir2

# path to test source directories (optional)

sonar.tests=testDir1,testDir2

# path to project binaries (optional), for example directory of Java bytecode

sonar.binaries=binDir

# optional comma-separated list of paths to libraries. Only path to JAR file and path to directory of classes are 

supported.

sonar.libraries=path/to/library.jar,path/to/classes/dir

# The value of the property must be the key of the language.

sonar.language=cobol

# Additional parameters

sonar.my.property=value

 

 3.2          多模块工程

 

如果是多模块工程,在Sonar分析时,可以使用两种方式配置项目的结构。一种需要在项目下配置一个总文件,一种可以在每个模块下各自配置一个文件。

 

项目下配置总文件

# Root project information
sonar.projectKey=org.mycompany.myproject
sonar.projectName=My Project
sonar.projectVersion=1.0-SNAPSHOT
# Some properties that will be inherited by the modules
sonar.sources=src
# List of the module identifiers
sonar.modules=module1,module2
# Properties can obviously be overriden for
# each module - just prefix them with the module ID
module1.sonar.projectName=Module 1
module2.sonar.projectName=Module 2

 各模块配置单独文件

 

此时,不仅需要有一个总配置,还需要在每个模块下都存在一个子配置。

总配置文件的内容如下:

# Root project information
sonar.projectKey=org.mycompany.myproject
sonar.projectName=My Project
sonar.projectVersion=1.0-SNAPSHOT
# Some properties that will be inherited by the modules
sonar.sources=src
# List of the module identifiers
sonar.modules=module1,module2

  

 

         子配置示例如下:

# Redefine properties
# Note that you do not need to prefix the property here
sonar.projectName=Module 1

 

         相对于统一配置文件,这种方式显然更加灵活,子配置设置可以将父配置覆盖。

 

5.      Sonar扩展

         如果想要成为全局管理员,编写插件,扩展Sonar则需要首先了解Sonar的概念体系。

5.1          Sonar架构

Sonar中主要包括以下几个部分:

概念

定义

分析器

用于分析源代码计算代码快照的一组规则

客户端

执行分析器的调用模块

数据库

用于存放Sonar的配置规则和代码分析快照

服务器

访问用于浏览代码分析结果和在线配置的Web

         架构图如下:

 

 

 

5.2          Java度量指标

度量指标是Sonar的核心,熟练地使用Sonar意味着必须理解这些指标的概念和每个指标的计算规则。

Java指标分为几大类,主要包括:代码规模,单元测试,重复率,设计,复杂度,规则,配置管理SCM,如果安装额外的插件,指标可能更多。

 

5.3 扩展Sonar插件

         可以先从其他人的插件代码下手,通过调试进行Sonar插件的研究。

         比如在github上的相关示例插件项目,sonar-examples,其中对CheckStylePMD都有进行扩展,除了规则扩展,references-plugin中还对Sonar使用的界面进行了扩展,下面就以PMD中的插件为示例,说明一下扩展插件的基本方法和原则。

         sonar-pmd-extension-plugin项目中执行mvn clean install,将构建出来的target文件夹下sonar-pmd-extension-plugin-0.1-SNAPSHOT.jar包拷贝至$SONAR_HOME\extensions\plugins目录,启动Sonar

         sonar-runner客户端调用执行方式进行调试工作,此时需要配置sonar-runner的启动参数,set SONAR_RUNNER_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000,此时启动sonar-runner,就会等待远程连接,在eclipse或者intellij中将源码关联,设置其远程调试模式,就可以继续进行sonar-runner,并在相应的代码位置进行调试。

 

 

 

 

 

6.      常见问题

 

对于较大的工程项目,经常会出现内存不够的问题,需要重新设置sonar-runner的虚拟机内存,在sonar-runner.bat中:

Set SONAR_RUNNER_OPTS=-Xmx512m  –XX:MaxPermSize=128m

 

 

 

  • 大小: 147.4 KB
分享到:
评论

相关推荐

    sonar安装及使用说明

    ### sonar安装及使用说明 #### 一、环境要求 为了确保SonarQube能够正常运行,必须满足一定的系统环境要求。具体来说: - **Java版本**:SonarQube推荐使用JDK 1.8及以上版本。这是因为较新的Java版本能够提供更...

    SONAR 7 官方中文手册-PDF版

    ### SONAR 7 相关知识点 #### 一、SONAR 7 概述 **SONAR**是一款专业级别的音频编辑与音乐制作软件,由...通过这些指南,用户可以逐步掌握SONAR 7 的使用方法,无论是音乐制作新手还是有经验的专业人士都能从中受益。

    13 sonar安装指导.docx

    如果系统返回了MySQL的相关路径,则说明已经安装;如果没有,则需要先行安装MySQL。 2. **启动MySQL服务**:通过`service mysql restart`命令启动MySQL服务。 3. **进入MySQL命令行工具**:使用`sudo mysql -u ...

    sonar

    而"工具"标签则说明SonarQube是一个实用的开发辅助工具,可以帮助开发者在编码阶段就发现潜在的问题,而不是等到测试或生产环境才暴露出来。 在提供的压缩包中有一个名为"sonar.docx"的文件,这很可能是关于...

    Sonar10.5.1版本安装包,可直接启动

    2. **配置环境变量**:在系统环境变量中添加`SONAR_HOME`,值设定为SonarQube安装目录。同时,确保`JAVA_HOME`指向有效的Java运行环境,SonarQube需要JDK 8或更高版本。 3. **修改配置文件**:进入`conf`目录,编辑...

    sonar-runner-dist-2.4

    这里主要关注 sonar-runner-dist-2.4 的使用。 #### Java 监控工具 除了 SonarQube 外,还提到了几种常用的 Java 监控工具,这些工具可以用来辅助进行 Java 应用程序的性能调优和问题诊断。 ### VisualVM VisualVM...

    sonarqube7.9中文插件包 sonar-l10n-zh-plugin-1.26.jar

    3. **适应性优化**:考虑到中文语言的特点和使用习惯,该插件可能对某些提示和说明进行了适应性优化,使本土用户更易于理解和接受。 在使用SonarQube的过程中,有几点需要注意: 1. **安装与更新**:确保你的...

    sonar-check-api-3.7.4.zip

    标题中的"sonar-check-api-3.7.4.zip"是一个开源项目的压缩包,它包含了SonarQube检查API的一个特定版本,即3.7.4。SonarQube是一款强大的静态代码分析和代码质量管理工具,它能帮助开发者在编码阶段发现并修复代码...

    maven+jenkins+sonar搭建

    【Sonar 报表说明】 4.1 报表结构 SonarQube 报表主要分为六大部分:概述、质量门禁、规则、复杂度、代码覆盖率和历史。这些部分提供了关于代码质量、潜在问题、代码结构和历史变化的详细信息。 4.2 错误提示 在 ...

    maven+jenkins+sonar环境搭建

    Sonar 报表说明** Sonar 报告主要分为6部分,涵盖了代码质量的多个维度: 4.1 报表结构 - 代码概况:展示代码总览、健康度等信息。 - 问题列表:列出所有检测到的问题,按严重性分类。 - 新旧问题对比:显示...

    sonarlint-cli-2.1-RC1.zip

    2. 将SonarLint CLI添加到系统路径,以便在任何目录下都能运行。 3. 在项目根目录下运行SonarLint CLI,指定源代码路径和必要的配置选项。 4. 查看分析结果,SonarLint将输出问题列表,包括问题的严重性、位置和建议...

    2012款三菱欧蓝德EX_汽车使用手册用户操作图示驾驶指南车主车辆说明书电子版.pdf

    * 车辆功能:自适应前照灯系统(AFS)、主动稳定性控制(ASC)、SONAR系统等 二、仪表和控制器 * 组合大灯和调光开关 * 转向信号灯手柄 * 前雾灯开关 * 后雾灯开关 * 主动稳定性控制(ASC)OFF 开关 * SONAR 开关 ...

    gitlab+jenkins+sonar架构

    通过以上的知识点说明,可以看出“gitlab+jenkins+sonar架构”的搭建是一个复杂的工程,涉及到多个层面的配置和协调。在实际操作中,还需要注意系统性能调优和错误排查,以及确保所有的安全设置和最佳实践都得到了...

    SONARX1汉化

    2. **说明.txt**:这是一个文本文件,通常用来提供安装指南、使用说明或者汉化过程中的注意事项。在这个特定的上下文中,说明.txt文件可能包含汉化步骤、兼容性信息、安装提示,以及可能遇到的问题和解决方案。用户...

    workspace-sonar.rar

    在“workspace-sonar.rar”这个压缩包中,包含了“sonarqube-7.1”版本的软件以及一个名为“解压即可用.txt”的说明文件,这表明我们可以直接解压并启动SonarQube,无需进行复杂的配置。 1. **SonarQube核心功能** ...

    PX4FLOW 智能光流传感器使用说明(中文).doc

    PX4FLOW 智能光流传感器使用说明 PX4FLOW 智能光流传感器是一款智能光学流动传感器,拥有原生 752×480 像素分辨率,计算光学流的过程中采用了 4 倍分级和剪裁算法,计算速度达到 250Hz(白天,室外),具备非常高...

    wave_sonar_pdf_cw信号_声呐_水下声信号

    "wave_sonar_pdf_cw信号_声呐_水下声信号"这一主题聚焦于声呐系统中的连续波(CW)信号及其在水下的应用。声呐是利用声波在水中传播的特性来探测和测量水下物体的技术。以下将详细阐述相关知识点: 1. **连续波...

    deploy-sonar代码扫描分析工具

    1. **系统要求**:首先,确保服务器满足SonarQube的硬件和软件需求,通常需要Java运行环境(JRE)或Java开发工具包(JDK)。 2. **下载与安装**:从官方网站下载最新版本的SonarQube压缩包,例如"deploy-sonar-...

Global site tag (gtag.js) - Google Analytics