代码质量检测(三)—— SonarLint和SonarQube的本地使用
在弹窗窗口里,填写这个SonarLint的名称,选择的右边配置,输入sonarQube IP和端口号,完成后点击Next.设置认证方式,有Token和用户名密码两种方式,根据自己的情况选择对应方式进行配置。这里选择账号密码的形式,默认为admin/admin。开启自动分析,这里上面红框。
根据《代码质量检测(一)—— 常用代码质量管理工具》的介绍和《代码质量检测(二)—— 如何选择代码检查工具》的分析,我们大概得出结论,在当前开源的代码质量检测工具中(阿里系列除外):
pmd:基于源代码分析,主要面向安全编码规则,如“避免声明同名变量”,包括风格类、类型使用等等,具备一定的数据流分析和路径分析能力。
checkstyle:基于源代码,与pmd类似,但更侧重编码的语法风格,分析深度不及pmd。
findbugs:基于字节码分析,大量使用数据流分析技术,侧重运行时错误检测,如空指针引用等,分析深度大于前述两个。
sonar:定位是代码质量平台,本身不进行代码分析,但可以集成各个静态分析工具以及其他软件开发测试工具(如上述的pmd、checkstyle、findbugs等),并基于集成工具的结果数据按照一定的质量模型,如iso-9126,对软件的质量进行评估。且具备和Jenkins、maven等集成的支持。
故本文优先选取SonarQube这一款开源工具来进行安装使用。
官网:Sonar官网
一、SonarLint
SonarLint是一个IDE的代码质量检测扩展插件,可以帮助我们检测出代码中的坏味道。它能帮助发现和修复我们所写代码质量问题,协助我们在代码提交前就暴露修复问题。
1.1 插件安装
其安装和配置可参考:IDEA中SonarLint插件的安装与配置_idea sonarlint_智鼎在线IT团队的博客-CSDN博客
(1)在线安装
IDEA -> File -> Settings -> Plugins -> Marketplace,搜索SonarLint,然后点击installed,再apply - ok就可以了。
(2)离线安装
1. 需要在Jetbrains的官网下载该插件的离线安装包(注意:需要关注选择的插件版本与自己使用的IDEA版本以及版本号是否适配,可以与自己使用的版本号进行比对)。
2. 打开IDEA,进入 settings.
3. 选择 Plugins, 点击 Install Plugin from Disk.
4. 选择下载后的插件压缩包,然后点击 OK.
5. 点击apply和ok,重启idea让插件生效。
1.2 配置SonarLint General Settings
(1)选择和禁用某些规则
(2)需要同步自定义的规则时,需要绑定到SonarQube
在弹窗窗口里,填写这个SonarLint的名称,选择的右边配置,输入sonarQube IP和端口号,完成后点击Next.
设置认证方式,有Token和用户名密码两种方式,根据自己的情况选择对应方式进行配置。
这里选择账号密码的形式,默认为admin/admin。
开启自动分析,这里上面红框Automatically trigger analysis有配置是否允许自动分析,默认是勾选上的。根据自己需求选择是否需要勾选开启,然后点击apply保存配置。
1.3 配置SonarLint Project Settings
(1)选择下图中SonarLint Project Settings的菜单
(2)勾选Enable binding to remote SonarQube server
(3)在Bind to server 右边下拉选择刚才配置的 sonar配置名称
(4)配置SonarQube project,可以点击Search in List,在弹出框里找到想使用的某个规则选择想使用的即可。若弹窗中没有项目,说明再SonarQube中未建立项目,可以现在SonarQube中新建一个空的项目,然后再绑定。
(5)点击Apply使得配置生效保存
1.4 使用SonarLint
在需要检测的单个文件或者单个项目上右键 --> Analyze --> Analyze with SonarLint,或者选中文件或目录,点击菜单栏 Analyze --> Analyze with SonarLint。
默认会在IDEA底部打开sonarLint标签窗口菜单,根据列出的代码质量问题一个个解决问题即可。
如果没有或者不小心关闭了底部的sonarLint标签窗口,可以点击菜单 view->Tool Windows中找到 SonarLint重新打开SonarLint窗口
有了代码质量检测工具以后,在一定程度上可以保证代码的质量。对于每一个问题,SonarLint都给出了示例,还有相应的解决方案,教我们怎么修改,极大的方便了我们的开发。比如,对于日期类型尽量用LocalDate、LocalTime、LocalDateTime,还有重复代码、潜在的空指针异常、循环嵌套等等问题。
有了代码规范与质量检测工具以后,很多东西就可以量化了,比如bug率、代码重复率等,还可以自定义各种指标,方便管理人员查看。为此,我们需要使用SonarQube平台来记录每次检测分析的结果,这样就可以进行分析和统计,并且可以直观的看到这一切!
二、SonarQube
SonarQube是一个开源的代码质量管理平台。下载地址
根据自己安装的jdk版本选择合适的SonarQube版本,一定要注意下载该SonarQube之前,需要去文档看下jdk要求:
2.1 安装
可以参考上述当前版本的SonarQube说明文档。
本文在windows上使用zip安装:
(1)解压之前下载的安装包
(2)在减压文件的bin目录下,找到对应的启动目录,然后执行其中的StartSonar.bat
(3) 启动成功后,访问http://localhost:9000 用初始管理员账号(admin/admin)登录
将初始密码修改成自己的密码
2.2 插件拓展
所有插件的安装方式都一样,汉化、质量检测插件等等。
(1) 汉化,安装中文插件
方式一:在线安装
汉化完重启
重启完后,重新登录,界面已经是汉化后的
方式二:离线安装
因为墙的问题,这让在 github 上的各种插件的下载成了问题,如果你的服务器是内网的,或者你的宽带访问 github 不正常,则需要通过离线下载插件包的方式进行离线处理。
在插件市场搜索插件并进入插件官方页面:注意,没有外网的,需要找个外网机器下载插件。
确定插件对应的版本:版本需要匹配
将下载的插件jar包放到sonarQube的安装目录下的/extensions/plugins文件夹中。需要确保该文件夹的权限,确保插件有读取权限。
重启 sonar 服务即可:在 UI 界面上重启,或者直接在服务器上重启 sonar 服务。
服务重启完成后,插件就正常被加载生效了。
如果插件目录和插件本身权限不对导致程序无法正确加载插件,查看 sonar 日志可以看到权限错误的异常,这个很容易排查。
(2) findbug插件
分析 Java 代码的基础包下载示例(这是必须的,不然有些插件无法运行);和汉化插件差不多,不在一一赘述。
如果知道对应的版本号,也可以直接到 Maven 中央仓库下载。
2.3 配置Scanner
接下来,为了把检测的结果传到服务器,我们需要配置一个Scanner,参照Sonar Scanner for Maven
Maven的SonarScanner被推荐作为Maven项目的默认扫描仪。通过常规Maven目标执行SonarQube分析的能力使其可以在Maven可用的任何地方(开发人员构建、CI服务器等)使用,而无需手动下载、设置和维护SonarQobe扫描仪安装。Maven构建已经拥有SonarQube成功分析项目所需的大量信息。通过基于该信息预配置分析,显著减少了手动配置的需要。
(1)在maven的settings.xml中的<pluginGroups>和<profiles>标签中加入:
<settings>
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- Optional URL to server. Default value is http://localhost:9000 -->
<sonar.host.url>http://localhost:9000/sonar</sonar.host.url>
<!-- 配置自己的账号、密码,就无需每次使用token密钥 -->
<sonar.login>admin</sonar.login>
<sonar.password>admin123</sonar.password>
</properties>
</profile>
</profiles>
</settings>
(2)在项目中添加sonar-maven-plugin 插件。
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.9.1.2184</version>
</plugin>
</plugins>
</pluginManagement>
</build>
若无网络,需要手动下载对应版本的插件,然后放置到maven仓库中:
然后再引入项目中。
(3)在maven中或命令端口执行命令:mvn clean compile sonar:sonar
或者执行命令时带上账户密码:
mvn clean verify sonar:sonar -Dsonar.projectKey=v1.1.1 -Dsonar.host.url=http:localhost:9000 -Dsonar.login=admin -Dsonar.password=admin123
说明:
projectKey:在sonarQube上创建项目时的项目标识;
host.url:本地sonarQube的地址;
login:sonarQube的登录账户;
password:sonarQube的登录密码(修改后的);
由于项目设置的jdk为1.8,会出现如下错误:
设置项目的jdk为11,然后重新使用上述命令编译:
成功后,可以在控制台中看到这样的输出
再次刷新 http://localhost:9000/ 会看到该项目的质量分析统计信息
2.3 关闭服务
关闭服务时,切勿直接关闭cmd窗口,否则会导致下次开启SonarQube的时候报错。
正确的做法:在cmd中Ctrl+c终止服务,然后再关闭cmd窗口。
更多推荐
所有评论(0)