问题:如何保证工程师提交的代码是符合标准的?
找个技术经理或架构师有事没事就Code Review或者不定期举行Review大会等等办法,它们有一个共同的特点:成本大,难持续,所以找一个自动化代码质量分析工具就势在必行了。
好用且开源的代码质量分析工具:Sonar Qube
官方很好几个版本:社区版、开发者版、企业版、数据中心版。
核心痛点
- 代码高质量检测分析能力,Bug 检查
- 支持定制化 review 检测
- 可以与企业员工系统的账户体系打通
- 与主流项目构建工具(Maven|Gradle)无缝融合
- 部署配置简单,文档充足
- 源码开源,大企业支撑(全球化)
Sonar与LDAP结合
结合windows统一账户管理,使用ldap帐号登陆和邮件发送服务体系。
参考技术文档: https://www.linuxhub.org/?p=4476
Sonar-scanner下载&文档地址:
https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/
简单的项目配置Sonar
在项目的根目录下添加sonar-project.properties文件,并修改sonar:projectName\projectVersion\sources\binaries
为具体项目值。
# must be unique in a given SonarQube instance
sonar.projectKey=my:project:nc-link
# this is the name displayed in the SonarQube UI
sonar.projectName=nc-o-link
sonar.projectVersion=2.0.2-SNAPSHOT
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# Since SonarQube 4.2, this property is optional if sonar.modules is set.
# If not set, SonarQube starts looking for source code from the directory containing
# the sonar-project.properties file.
sonar.sources=src
sonar.java.binaries=target
sonar.language=java
# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8
Maven配置Sonar
直接配置Maven进行全局管理,Maven本身自带sonar插件,不需要在根目录单独添加配置sonar-project.properties文件,只需要在maven的config/setting.xml中添加sonar插件配置即可,如下:
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.host.url>http://localhost:9000</sonar.host.url>
</properties>
</profile>
在Project的根目录直接运行命令:mvn sonar:sonar
或者 mvn clean verify -DskipTests sonar:sonar
。第一次运行会下载相应的插件比较慢,可以根据项目具体情况进行使用,多项目结构官方推荐mvn clean install
+ mvn sonar:sonar
。
官方参考文档:https://docs.sonarqube.org/display/sonarqube53/analyzing+with+sonarqube+scanner+for+maven
注意插件版本问题
<!-- sonar自动化代码分析 -->
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.6.0.1398</version>
</plugin>
Maven Sonar Plugins
查看支持的版本地址:http://maven-repository.com/artifact/org.sonarsource.scanner.maven/sonar-maven-plugin
Mysql 库表自动生成
Mysql配置好后,重新启动Sonar会自动生产表,并初始化数据。
Sonar 使用界面
项目分析案例
1、执行sonar scaner 脚本:mvn sonar:sonar
2、分析结果报表展示
关注推荐
作者:Owen Jia,一个想法比较多的架构师。
他的博客网站:Owen Blog
推荐关注公众号:冬天就要吃胖点
不要随大流,做一个不一样的工程师