简介
什么是 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/