公司安排代码检测的任务,使用sonarqube,记录windows下安装使用过程。
sonarqube 安装
安装过程很简单,安装数据库mysql有版本限制,上面博客里有讲。
使用sonarqube
sonar安装完了,还没能分析项目。官方给的分析方式
我使用了本地项目扫描的方式和maven的扫描方式。前端项目暂时只在本地分析过。结合jenkins在git上能不能用没试过。
本地扫描,安装sonar-scanner
官方下载
下载完解压。将文件的../sonar-scanner-3.3.0.1492-windows/bin
目录添加到系统变量,后面运行dos命令需要。
进入../sonar-scanner-3.3.0.1492-windows/conf
目录,里面有个sonar-scanner.properties
文件。我们对它进行编辑
sonar-scanner.properties1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30#Configure here general information about the environment, such as SonarQube server connection details for example
#No information about specific project should appear here
#----- Default SonarQube server
sonar.host.url=http://localhost:9000
#----- Default source code encoding
sonar.sourceEncoding=UTF-8
# must be unique in a given SonarQube instance
sonar.projectKey =bleg-blog
# 这是SonarQube UI中显示的名称和版本。
sonar.projectName =bleg-blog
# 版本
sonar.projectVersion = 1.0.0
# 配置要分析的项目根目录
sonar.projectBaseDir =E:/Code/BlegBlog/bleg-blog
# 配置包含源文件的目录(未设置,则从默认的Maven源代码位置检索)
sonar.sources=./src
# SonarJava 4.12 以后,不使用Maven等构建工具分析代码,则必须手动提供对应源代码的字节码
# 此处配置该项目的子项目的class字节码文件目录
sonar.java.binaries=./target/classes
# 指定分析的语言,可不配
sonar.language=java
接下来dos命令到sonar-scanner-3.3.0.1492-windows
目录,运行sonar-scanner
命令,等待分析。分析成功了进到sonar页面看分析的结果
这里分析可能有个问题,就是页面上没有配置可用的规则的话,会分析不成功。
页面上有个覆盖率的统计,是统计代码测试用例对代码的覆盖率。本地扫描我没有进行测试文件的扫描,实际上是不知道怎么扫所以没做。
maven扫描
这里顺便把测试用例的覆盖率一起讲了
测试用例的覆盖率,jacoco,junit扫描的,我参考的这篇博客
这个过程会出现一系列问题,上面博客说了一些。这里补充一点。
maven自带的maven-surefire-plugin
插件跑测试代码打包,必须保证测试代码没有问题,没有报错。否则会打包失败。他会列出你哪些测试方法有问题,跟着改完就好。
sonar 自定义规则。
规则自定义有两种,一种是xml的形式,一种是java的形式。xml的功能没那么强大,有很多束缚。相对来说写java代码实现更强大方便对我更友好。
官方的自定义规则示例
参考博客
把官方项目拉下来自己研究吧。这个的插件开发比较简单点,主要在于公开到二开的人手里面基本上可以直接重写对应的方法实现,规则注册,插件安装都很简单。我还在研究中。