Sonar静态扫描的使用

一、简介

SonarQube是一个用于代码质量管理的开源平台,用于管理多源代码的质量,目前支持Java、JS、PHP、Python、C等25+语言。
通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。

简单来说,SonarQube是一个质量平台,用于收集质量数据(代码扫描结果、测试覆盖率等),并对数据进行各维度的统计分析。
而代码分析(也就是得到质量数据的过程),需要用到Sonar的客户端(或插件)。下面就简单介绍一下sonar客户端(插件)的使用。

Sonar的客户端共有四种:
  1. Sonar-Scanner。一个独立的扫描器,通过简单的命令就能对项目进行静态扫描,并将扫描结果上传至SonarQube。
  2. sonar maven插件。一个maven插件,能通过maven命令执行静态扫描。
  3. sonar ant插件。ant上的插件。
  4. sonar IDE插件。可以直接集成到IDE中(比如IntelliJ)。

以下主要介绍前两种的用法。

二、Sonar-Scanner的使用

1. 下载Sonar-Scanner包,并解压。(需要注意的是,Sonar-Scanner版本与SonarQube存在版本兼容性,若不兼容会有相应的报错提示)
2. 将Sonar-Scanner目录/bin路径加入环境变量。
3. 编辑Sonar-Scanner目录/conf/sonar-runner.properties文件,如下所示,填写SonarQube的相关信息(安照实际情况填写url和login信息):
sonar.host.url=http://127.0.0.0:8090

#----- MySQL
sonar.jdbc.url=jdbc:mysql://127.0.0.0:3306/sonar?useUnicode=true&characterEncoding=utf8

#----- Default source code encoding
sonar.sourceEncoding=UTF-8

#----- Security (when 'sonar.forceAuthentication' is set to 'true')
sonar.login=admin
sonar.password=admin
4. 在需要扫描的项目根目录,新建一个文件sonar-project.properties,文件中填入以下必要信息:
# 需要扫描的源代码目录
sonar.sources=src
# 项目的Key,可任意,必须唯一
sonar.projectKey=org.sonarqube.demo
# 项目在SonarQube上显示的名称
sonar.projectName=php demo
# 项目版本
sonar.projectVersion=1.0
# 扫描的语言
sonar.language=php

备注1:还可以填写其它参数,详细见官方文档。
备注2:在Jenkins中,可以通过sonar插件配置以上数据,可免去在项目中配置该文件。

5. 打开终端,进入项目根目录,mac下执行sonar-runner,windows下执行sonar-runner.bat命令即可。

扫描成功后,数据会自动上传到SonarQube。

三、Maven中Sonar的使用

1. 打开"maven安装目录/conf/settings.xml",在<profiles></profiles>标签中增加以下配置信息(安照实际情况填写url、账号等):
<profile>
   <id>sonar</id>
   <activation>
       <activeByDefault>true</activeByDefault>
   </activation>
   <properties>
        <sonar.jdbc.url>
        jdbc:mysql://127.0.0.1:3306/sonar?useUnicode=true&amp;characterEncoding=utf8
        </sonar.jdbc.url>
        <sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
       <sonar.host.url>http://127.0.0.1:8090</sonar.host.url>
       <sonar.login>admin</sonar.login>
       <sonar.password>admin</sonar.password>
   </properties>
</profile>
2. 在pom.xml中配置sonar插件
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>2.6</version>
</plugin>
3. 执行mvn sonar:sonar即可。

猜你喜欢

转载自blog.csdn.net/weixin_33790053/article/details/86874437