SonarQube 代码质量检测

我们所说的SonarQube实际分为两个部分,一个为服务器SonarQube,一个为扫描器Sonar-Scanner。

服务器主要是用来定义扫描规则,存放扫描代码之后的检测结果。

Sonar-Scanner是用来扫描代码做具体事情的。

一、SonarQube的安装

这里以windows为例

SonarQube下载地址https://www.sonarqube.org/downloads/

下载后解压:

我下的版本为sonarqube-8.9.1.44547

注意sonarqube7.9以后就不支持mysql数据库了,所以要用其他的数据库,我这里用的是postgresql,并且需要Java11+

在conf目录下配置

sonar.properties

添加如下配置

sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.username=postgres
sonar.jdbc.password=1234
sonar.sorceEncoding=UTF-8
sonar.login=admin

在bin目录下根据自己的操作系统选择启动就行了,我这里用windows,双击StartSonar.bat即可

出现如下结果即为成功启动。

访问 http://localhost:9000/出现表示成功

二、Sonar-Scanner的安装

下载地址:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/

sonar-Scanner的配置在conf下的sonar-scanner.properties

配置如下

sonar.host.url=http://localhost:9000
sonar.sourceEncoding=UTF-8
sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.username=postgres
sonar.jdbc.password=1234
sonar.login=admin
sonar.password=1234

添加到环境变量path中

查看结果命令行下输入sonar-scanner -version出现结果表示成功

三、代码扫描,这里介绍两种方式扫描

1.sonar-scanner 命令扫描

在要扫描的项目根目录下创建一个sonar-project.properties文件

文件中写如下配置

sonar.projectKey=sonar
sonar.projectName=sonar-name
sonar.version=0.0.1-SNAPSHOT
sonar.sources=E:/sonarqube/src/main/java
sonar.java.binaries=E:/sonarqube/target/classes

然后到项目目录下使用打开命令行输入sonar-scanner命令,就会开始分析代码,并将结果上传到sonar服务器

可以在服务器上看到分析的结果

2.sonar-scanner-api Java程序扫描

这种扫描方式使用的是sonar-scanner-api,添加pom依赖到pom文件

<!-- https://mvnrepository.com/artifact/org.sonarsource.scanner.api/sonar-scanner-api -->
<dependency>
   <groupId>org.sonarsource.scanner.api</groupId>
   <artifactId>sonar-scanner-api</artifactId>
   <version>2.16.1.361</version>
</dependency>

实现代码如下

public static void main(String[] args) throws GitAPIException {
	LogOutput logOutput = new StdOutLogOutput();
	Map<String, String> sonarPropertiesMap = new LinkedHashMap<String, String>() {{
		put("sonar.host.url", "http://localhost:9000/");
		put("sonar.sourceEncoding", "UTF-8");
		put("sonar.login", "admin");
		put("sonar.password", "1234");
	}};
	Map<String, String> projectSettingMap = new LinkedHashMap<String, String>() {{
		put(ScanProperties.PROJECT_KEY, "pms");
		put(ScanProperties.PROJECT_NAME,"pms-git-name");
		put(ScanProperties.PROJECT_SOURCE_ENCODING, "UTF-8");
		put(ScanProperties.PROJECT_BASEDIR,"D:\\pms");
		put("sonar.java.binaries", "D:\\pms");
		put(ScanProperties.SKIP, "D:\\pms\\.git,D:\\pms\\.scannerwork");
	}};
	//使用sonar的分析器来分析代码
	//规则从服务器下载
	//分析的结果再上传到服务器上去
	EmbeddedScanner scanner = EmbeddedScanner.create("sonar", "1.0.0", logOutput);
	scanner.addGlobalProperties(sonarPropertiesMap);
	scanner.start();
	scanner.execute(projectSettingMap);
}

执行mian方法,查看分析结果

到此介绍就结束了,原创不易,谢谢支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值