【工具链】用SonarQube做代码质量检查

简介

什么是 SonarQube

SonarQube (简称Sonar)是一个开源的代码质量管理平台,专用于持续集成分析和测量技术质量,从项目的组合到方法。

SonarQube 的功能

1、代码质量、安全扫描和分析平台。

2、多维度分析代码:代码量、安全隐患、编写规范隐患、重复度、复杂度、代码增量、测试覆盖率等。

3、支持25+编程语言的代码扫描和分析,包含Java,C#,JavaScript,Go,PHP,Ruby等。

4、涵盖了编程语言的静态扫描规则: 代码编写规范+安全规范。

5、能够与代码编辑器、CI/CD平台集成。

6、能够与SCM集成,可以直接在平台上看到代码问题是由哪位开发人员提交。

SonarQube 如何工作

Sonar静态代码扫描由两部分组成:SonarQube平台和sonar-scanner扫描器。

SonarQube平台(Web管理界面):

1、展示所有项目代码的分析结果;

2、配置质量规则、通知、SCM、管理项目等。

sonar-scanner(扫描器):

1、扫描和分析项目代码,完成后将扫描结果存储到数据库中。

SonarQube 安装和部署(以 SonarQube-8.4 为例)

下载

下载地址:https://www.sonarsource.com/products/sonarqube/downloads/,
选择社区版Community Edition,建议下载LTS版本,以便获得长期的维护和支持。

安装JDK11(Oracle JDK或OpenJDK);

通过adduser sonar添加普通用户sonar,并su sonar切换到sonar用户;解压SonarQube,以sonar用户在安装目录中执行./bin/linux-x86-64/sonar.sh start,启动Sonar;

安装PostgreSQL11替换SonarQube原有的H2数据库;

修改sonarqube-8.4/conf/sonar.properties中数据库配置,通过./bin/linux-x86-64/sonar.sh restart重启sonar;

5、登录Web管理界面:http://yourip:9000,默认账号密码为admin/admin。

整合 Maven

访问管理界面:http://yourip:9000,在右上角头像-My Accout-Security中,通过Generate New Token填入Token名称,点击Generate生成Token;

在源码目录下使用如下命令,即可调用mvn使用sonar分析项目:

mvn clean test sonar:sonar -Dsonar.host.url=http://yourip:9000/ -Dsonar.language=java:java -Dsonar.login=Token

分析结果在管理界面内查看。

FAQ

1、SonarQube如何排除不需要扫描的文件?

当存在不需要由sonar分析的源代码文件时,可通过两种方式做排除:

(1)管理员在Web管理界面配置排除

如对src/main/java/org/sonar/下的文件进行排除,在排除的源文件中添加要排队的文件路径src/main/java/org/sonar/*

(2)项目中sonar.properties配置sonar.exclusions:

添加一行:

<sonar.exclusions>/ src/main/java/org/sonar/

1 个赞