SonarQube 是一款用于代码质量管理的开源工具,它主要用于管理源代码的质量。 通过插件形式,可以支持众多计算机语言,比如 java, C#, go,C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等。sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具来检测你的代码,帮助你发现代码的漏洞,Bug,异味等信息。以下转自自己的CSDN博客:(关于截图背景颜色请无https://blog.csdn.net/qq_17238449/article/details/97392513
这里准备的是**sonarqube7.7.zip**,我的安装路径是/u02/ycc
使用unzip解压压缩包;
预置条件
1).已安装JAVA环境
2).已安装有MySQL数据库
3).sonarQube压缩包
# 创建数据库sonar
create database sonar character set utf8 collate utf8_general_ci;
# 创建数据库用户sonar可用地址为192.168.6.226密码sonar
CREATE USER sonar@'192.168.6.226' identified by 'sonar';
# 赋权给用户sonar对数据库sonar有所有权限
grant all on sonar.* to 'sonar'@'%' identified by 'sonar';
# 授权sonar用户可以在本地连接数据库
grant all on sonar.* to 'sonar'@'localhost' identified by 'sonar';
# 授权sonar用户可以在226连接数据库
grant all on sonar.* to 'sonar'@'192.168.6.226' identified by 'sonar';
# 刷新权限
flush privileges;
对权限的所有操作最后需要刷新下权限,即flush privileges;使之更改立马生效。
我的数据库在17,使用时更改这个地址到自己的数据库地址即可。
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://192.168.6.17:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL
修改wrapper配置文件的java路径
wrapper配置文件额sonar.properties在同一个目录里,这里需要注意一点,路径后面需要额外加上/java。不加会报
Unable to start JVM: Permission denied (13)的错误。
wrapper.java.command=/u02/ycc/jdk1.8.0_161/bin/java
启动
sh /u02/ycc/sonar.../bin/linux.../sonar.sh start
如果使用root的话会出现如下错误:
换个用户,并赋予这个用户sonar目录的权限即可。
将中文插件sonar-l10n-zh-plugin-1.28.jar复制到extensions/plugins
//解压文件
//进入文件
//编辑文件
[root@localhost local]#unzip sonar-scanner-cli-3.0.3.778-linux.zip
[root@localhost local]#mv sonar-scanner-cli-3.0.3.778-linux sonar-scanner
[root@localhost local]# cd sonar-scanner
[root@localhost sonar-scanner]# vim conf/sonar-scanner.properties
#Configure here general information about the environment, such as SonarQube DB details for example
#No information about specific project should appear here
#----- Default source code encoding
sonar.sourceEncoding=UTF-8
sonar.host.url=http://192.168.6.226:9000
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://192.168.6.17:3306/sonar?useUnicode=true&characterEncoding=utf8
sonar.login=sonar
sonar.password=sonar
在项目的根目录创建sonar-project.properties
#sonar登陆用户
sonar.login=admin
#sonar登陆密码
sonar.password=admin
#需要扫描的项目对应的key自定义即可
sonar.projectKey=content-receive
#需要扫描的项目对应的显示项目名自定义即可
sonar.projectName=content-receive
sonar.projectVersion=1.0-SNAPSHOT
sonar.sourceEncoding=UTF-8
sonar.language=java
#扫描的源码位置
sonar.sources=src/main/java/com/jsc/content
#扫描的test位置
sonar.tests=src/test/java/com/jsc/content
#扫描java的源码位置
sonar.java.binaries=target/classes/com/jsc/content
在项目当前目录执行scanner :
sh /sonarscannerdir/bin/sonar-scanner -X
运行结束在sonarQube页面即可看到刚才扫描的项目。
对于Maven项目,除了使用SonarQube Scanner进行分析之外,还可以使用maven-sonar-plugin插件进行分析。使用maven-sonar-plugin插件的步骤如下:(setting.xml)
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.jdbc.url>jdbc:mysql://192.168.6.226:3306/sonar</sonar.jdbc.url>
<sonar.jdbc.username>sonar</sonar.jdbc.username>
<sonar.jdbc.password>sonar</sonar.jdbc.password>
<sonar.host.url>http://192.168.6.226:9000</sonar.host.url>
</properties>
</profile>
</profiles>
<activeProfiles>
<activeProfile>UFindNexus</activeProfile>
<activeProfile>sonar</activeProfile>
</activeProfiles>
pom.xml的build中增加如下配置:
<pluginManagement>
<plugins>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.1.1</version>
</plugin>
</plugins>
</pluginManagement>
在对应项目的控制台输入mvn clean verify sonar:sonar 或mvn clean install org.sonarsource.scanner.maven:sonar-maven-plugin:3.1.1:sonar执行扫描;这里注意,如果有多个maven的setting.xml会使用环境变量配置的setting.xml。执行完即可在sonarqube页面查看。
如果这里执行报错的话可以使用IDEA的run maven运行:
也可以在pom.xml中增加profile,此时选中sonar-project,执行 clean install sonar:sonar即可。
<profiles>
<profile>
<id>sonar-project</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.jdbc.url>jdbc:mysql://192.168.6.213:3306/sonar</sonar.jdbc.url>
<sonar.jdbc.username>root</sonar.jdbc.username>
<sonar.jdbc.password>passok</sonar.jdbc.password>
<sonar.host.url>http://192.168.6.213:9000</sonar.host.url>
<!-- 需要忽略的-->
<sonar.exclusions>src/main/java/com/jsc/codec/**</sonar.exclusions>
</properties>
</profile>
</profiles>
SonarQube 是一个开源的代码分析平台, 用来持续分析和评测项目源代码的质量。 通过SonarQube我们可以检测出项目中重复代码, 潜在bug, 代码规范,安全性漏洞等问题, 并通过SonarQube web UI展示出来。
Jenkins中调用 通过jenkins插件调用sonarScanner或使用Maven、Gradle等内置扫描器 依据项目需要,对代码持续扫描,并将结果推送到sonarqube 进行页面展示
SonarQube Scanner 使用scanner,通过配置文件,修改项目信息,在命令行中调用scanner工具,进行扫描,并推送给sonarqube
Maven、Gradle等内置扫描器
以maven为例,需要修改maven和sonarqube配置文件,在mvn编译后,使用mvn命令,进行代码扫描,并推送给sonarqube(需要编译源代码) ,参见上文。
显示用户所有的项目概况,各项目质量评级,并提供条件筛选
通过在主页面选择单个项目,进入项目详情,该页面提供了当前项目最近一次扫描的结果评级,历史累计和新增问题数量,代码行数等信息 。
提供当前用户名下所有问题的列表,并提供条件筛选,包括问题类型,严重程度等 在当个项目中,问题页面显示单项目信息 。
选中单个问题,查看问题代码详情,sonarqube给出问题描述和修改意见 。
给出当前项目的评估概况信息,大小,可靠性,重复率,覆盖率等 。
以.java文件为依据,给出各个.java文件统计信息 。
页面展示了每次代码扫描的基本信息和代码情况的折线图,折线图可以根据需要调整显示bugs数量,代码行数,覆盖率等信息 。
略
进入系统管理–>系统配置界面。(这里选择测试环境的sonarQube地址)
进入系统管理–>全局工具配置
回到主页找到需要配置的项目,如果没有则需要新建项目,这里不赘述如何创建。选中项目配置sonar(这里使用
sonar-scanner)。
在构建历史中可以看到运行中的构建,点进去查看信息:
另外一种方式是使用maven命令打包,此时需要配置setting.xml,配置见前文。