Sonar——代码质量管理利器
2012-10-24 01:06
295 查看
一、Sonar简介
Sonar是一个开源的代码质量管理平台,集成了FindBugs、Checkstyle、PMD、JaCoCo等一系列代码分析、测试工具。Sonar并不是简单地对这些工具进行集成,而是通过对这些结果数据进行处理,从以下7个方面对代码质量进行度量:结构设计、重复、单元测试、复杂度、潜在Bugs、编码规范、注释。
Java是Sonar内建支持的语言。通过丰富的插件,Sonar还可以支持C/C++、C#、PHP、Python、JSP、ABAP、SQL等十多种语言。Sonar可以使用Sonar Runner、Sonar Ant Task、Maven多种构建方式对代码进行分析,同时也提供对Hudson/Jenkins、Bamboo、Continuum等持续集成工具的支持。同时,Sonar也提供对Eclipse等IDE的支持,通过Sonar插件联机查看结果。此外,Sonar还具有代码评审的功能。
Sonar主界面
Sonar代码质量分析结果
二、使用Sonar进行代码质量管理
1、分析Maven工程
首先对Maven的配置文件settings.xml添加如下配置:
然后执行以下命令:mvn clean install sonar:sonar。
Maven 插件会自动把所需数据(如单元测试结果、静态检测结果等)上传到 Sonar 服务器上,之后由Sonar会对这些数据进行分析和处理,并以各种方式展示结果,从而使我们方便地对代码质量进行管理。
2、分析非Maven工程
对于简单的非Maven工程,可以编写Ant脚本定义Sonar target进行分析,build.xml如下:
也可以编写Gradle脚本进行分析,build.gradle如下:
Sonar是一个开源的代码质量管理平台,集成了FindBugs、Checkstyle、PMD、JaCoCo等一系列代码分析、测试工具。Sonar并不是简单地对这些工具进行集成,而是通过对这些结果数据进行处理,从以下7个方面对代码质量进行度量:结构设计、重复、单元测试、复杂度、潜在Bugs、编码规范、注释。
Java是Sonar内建支持的语言。通过丰富的插件,Sonar还可以支持C/C++、C#、PHP、Python、JSP、ABAP、SQL等十多种语言。Sonar可以使用Sonar Runner、Sonar Ant Task、Maven多种构建方式对代码进行分析,同时也提供对Hudson/Jenkins、Bamboo、Continuum等持续集成工具的支持。同时,Sonar也提供对Eclipse等IDE的支持,通过Sonar插件联机查看结果。此外,Sonar还具有代码评审的功能。
Sonar主界面
Sonar代码质量分析结果
二、使用Sonar进行代码质量管理
1、分析Maven工程
首先对Maven的配置文件settings.xml添加如下配置:
<profile> <id>sonar</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <sonar.jdbc.url> jdbc:mysql://10.19.250.30:3306/sonar?useUnicode=true&characterEncoding=utf8 </sonar.jdbc.url> <sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver> <sonar.jdbc.username>sonar</sonar.jdbc.username> <sonar.jdbc.password>sonar</sonar.jdbc.password> <sonar.host.url>http:// 10.19.250.30</sonar.host.url> </properties> </profile>
然后执行以下命令:mvn clean install sonar:sonar。
Maven 插件会自动把所需数据(如单元测试结果、静态检测结果等)上传到 Sonar 服务器上,之后由Sonar会对这些数据进行分析和处理,并以各种方式展示结果,从而使我们方便地对代码质量进行管理。
2、分析非Maven工程
对于简单的非Maven工程,可以编写Ant脚本定义Sonar target进行分析,build.xml如下:
... <!—定义Sonar全局属性 --> <property name="sonar.jdbc.url" value="jdbc:mysql:// 10.19.250.30:3306/sonar?useUnicode=true&characterEncoding=utf8" /> <property name="sonar.jdbc.username" value="sonar" /> <property name="sonar.jdbc.password" value="sonar" /> ... <!—定义Sonar工程属性 --> <property name="sonar.projectKey" value="com.test.sonar:test" /> <property name="sonar.projectName" value="Simple Java Project analyzed with the Sonar Ant Task" /> <property name="sonar.projectVersion" value="1.0" /> <property name="sonar.language" value="java" /> <property name="sonar.sources" value="src" /> <property name="sonar.binaries" value="build" /> ... <!-- 定义Sonar target --> <target name="sonar"> <taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml"> <!—添加sonar-ant-task-*.jar引用 --> <classpath path="path/to/sonar/ant/task/lib/sonar-ant-task-*.jar" /> </taskdef> <!—执行Sonar --> <sonar:sonar /> </target> ...
也可以编写Gradle脚本进行分析,build.gradle如下:
apply plugin: "java" apply plugin: "sonar" …… sonar { server { url = System.getProperty("sonar.host.url") ?: "http://10.19.250.30/" } database { url = System.getProperty("sonar.jdbc.url") ?: " jdbc:mysql:// 10.19.250.30:3306/sonar?useUnicode=true&characterEncoding=utf8" driverClassName = System.getProperty("sonar.jdbc.driver") ?: "com.mysql.jdbc.Driver" username = System.getProperty("sonar.jdbc.username") ?: "sonar" password = System.getProperty("sonar.jdbc.password") ?: "sonar" } …… }
相关文章推荐
- 代码质量管理平台SONAR
- 使用Sonar管理代码质量(二)–Sonar工作区
- 分布式架构学习之持续集成:011--SonarQube代码质量管理平台的安装、配置和使用
- Sonar代码质量管理工具
- 持续集成之代码质量管理-Sonar [三]
- 代码质量管理平台SonarQube的安装、配置与使用
- Sonar代码质量管理平台
- SonarQube 6.4代码质量管理平台安装与使用
- sonar 代码质量管理
- sonarQube代码质量管理笔记
- sonarQube代码质量管理笔记
- sonarQube代码质量管理平台
- sonarQube代码质量管理平台
- Sonar代码质量管理工具
- 持续集成篇_05_SonarQube代码质量管理平台的介绍与安装
- centos7.2 sonarqube代码质量管理平台的安装与使用
- 使用sonar进行maven项目代码质量管理
- 代码质量管理平台sonar
- SonarQube代码质量管理平台安装与使用
- 持续集成篇-- SonarQube代码质量管理平台的配置与使用