Sonar系统接入规范
-
目的
为规范代码管理流程、提高代码质量,特制定本规范。 -
范围
原则上灿谷内部所有研发项目源代码均需接入sonar系统,科技线先行。 -
Sonar系统地址
http://10.42.3.161:9000/ -
系统功能
Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量:
a) 不遵循代码标准
Sonar可以通过PMD, CheckStyle, Findbugs等等代码规则检测工具规范代码编写。
b) 潜在的bug
sonar可以通过PMD, CheckStyle, Findbugs等等代码规则检测工具检测出潜在的bug。
c) 糟糕的复杂度分布
文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们,且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试。
d) 重复
显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示源码中重复严重的地方。
e) 注释不足或者过多
没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降,而过多的注释又会使得开发人员将精力过多地花费在阅读注释上。
f) 缺乏单元测试
sonar可以很方便地统计并展示单元测试覆盖率。
g) 糟糕的设计
通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则 通过sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况, 检测耦合。
-
接入方式
Sonar系统可方便的与Jenkins集成,在执行构建任务时检测代码质量。具体方法请详见附件1 -
检测周期
Jenkins每次构建时触发检测,项目负责人需每周定时查看结果,修复相关问题。 -
修复原则
a) 原则上被检测为“bug”、“漏洞”类型的问题需全部修复;
b) 严重程度为“阻断”的问题需全部修复。
如下图示:
一. MAVEN项目
以http://10.42.0.230:8080/对应的jenkins说明,如图1
图1
构建时使用 Maven 3.3.9 prd(该maven已经和对应的sonarqube配置完毕)
目标为:sonar:sonar -Dsonar.login=664151fd226fdfc4d4a5012940c0f2f6526e72fe
二.Gradle项目
以http://10.42.0.230:8080/对应的jenkins说明,如图2
图2
构建时使用 Gradle5.2.1(该gradle已经和对应的sonarqube配置完毕)
Tasks为:sonarqube -Dsonar.host.url=http://10.42.3.161:9000 -Dsonar.verbose=true -Dsonar.login=664151fd226fdfc4d4a5012940c0f2f6526e72fe
同时需要修改自身项目跟路径下的build.gradle修改内容如下
• 顶部增加插件配置,如图3
图3
plugins {
id “org.sonarqube” version “3.1.1” // SonarQube
}
sonarqube {
properties {
property “sonar.sourceEncoding”, “UTF-8”
}
}
• 需要忽略的目录,如grpc项目自动生成的api代码部分,如图4
图4
sonarqube {
skipProject = true // SonarQube 忽略
}