为什么今天要推荐SonarQube呢?这话题要从一次客户的项目交付说起。当时服务要部署入驻到客户方的机房,按要求向信息中心提交申请后,却被告知需提供《服务器安全漏洞扫描报告》和《代码安全审计报告》。按照惯例,这些报告一般由第三方做网络安全的公司提供,但谁知客户不想花钱找第三方公司,最后商量要我方用开源工具扫描,并修复完向他们提供报告。这如何是好,做与不做? 似乎没有选择,必须做。
开始找开源的质量管理工具。找了好多款开源质量管理工具(如:Cobra,CodeClimate等),安装部署、扫描及界面不友好、难使用等各种问题。由于本人以前在外企的工作经验,那时同事提供过来的代码检查报告,文档及内容展示等比较友好,能快速定位问题,由处理意见等,我似乎进入寻找曾经的那个“样子”,最终,SonarQube满足了需求。
SonarQube,一款用于代码质量管理的开源工具,是静态代码检查工具。可以很多开发语言,如:php,java, C#, go,C/C++, Cobol, JavaScrip, Groovy 等。
Sonar代码扫描,到底能检测什么?
检测项 | 描述 |
---|---|
代码规范 | 通过Findbugs,PMD,CheckStyle等检查代码是否符合规范。 |
潜在的缺陷 | 可通过Findbugs,PMD,CheckStyle等代码规则检测潜在的缺陷 |
复杂度分布 | 检测文件、类、方法的复杂度分布,过高或过低的复杂度都会影响代码的可维护性。 |
重复编码 | 程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示 源码中重复严重的地方。 |
代码注释问题 | 若代码注释过少,特别是人员变动后,其他人接手比较难接手;若过多,又不利于阅读。 |
测试覆盖率 | Sonar可以很方便地统计并展示单元测试覆盖率。 |
糟糕的设计 | 通过检测循环、类之间的相互依赖关系等,帮助发现设计上的问题。 |
组件 | 说明 |
---|---|
SonarScanner | 扫描器,负责将源文件进行代码分析,并将分析后的报告发送给SonarQube服务器 |
SonarQube Server | SonarQube服务器,负责处理分析报告,后台管理等 |
Database server | 数据库服务器,负责存储数据 |
这里我以我搭建的SonarQube 7.6为例,介绍安装使用的过程。
1,Java环境
SonarQube 是一个基于 Java 的应用程序,因此首先需要确保你的服务器系统上安装了 Java环境。
命令行命令java -version
这里建议使用Java11,我们的开发的Java版本,用的就是OpenJDK 11。
2,安装数据库
SonarQube 服务器支持数据库支持PostgreSQL, MySQL, Oracle等,这里我使用的是Mysql。由于SonarQube 7.6支持的MySql版本,需大于等于5.6,小于8.0。导致测试服务器上的Mysql8不能直接使用,只能新安装了一个Mysql5.7,供Sonar服务使用。
关于Mysql的安装过程,这里不做描述。
打开SonarqQube安装目录,修改\conf\sonar.properties文件,指定连接的数据库、用户名、密码,不同的数据库修改对应的jdbc连接、用户名密码等。
配置信息 sonar.jdbc.username=sonar sonar.jdbc.password=Mysql@sonardb! sonar.jdbc.url=jdbc:postgresql://localhost:3306/sonar?.........
4),访问 SonarQube Web 界面
服务启动成功后,在浏览器http://localhost:9000,默认用户名密码:admin/admin。
到这里,你就可以准备配置Sonar代码扫描啦。
4,SonarScanner 配置
下载安装Sonar-scanner-3.3.0,然后进入安装目录....\sonar-scanner-3.3.0.1492-windows\conf\,配置 sonar-scanner.properties,添加几行配置。
配置信息 sonar.host.url=http://127.0.0.1:9000 sonar.login=admin sonar.password=admin
配置环境变量:
1),建SONAR_SCANNER_HOME,值:...\Sonar-Scanner\sonar-scanner-3.3.0.1492-windows
2),PATH后加%SONAR_SCANNER_HOME%\bin;
5,SonarQube 创建项目
6,执行Sonar分析
配置sonar-scanner.properties 全局参数设置。
sonar.projectKey=test
sonar.projectName=test
sonar.projectVersion=1.0
sonar.sources=src/main/java
sonar.java.binaries=target/classes
sonar.login=6c8148e18e76fbc96e73354
打开cmd,进入你要扫描的项目所放磁盘的根目录,执行Sonar-Scanner。
如果命令行显示以上输出,则扫描成功。
7,在SonarQube中查看结果
打开SonarQube,进入前面创建的项目,查看检查结果。
8,生成pdf报告
下载插件地址:https://gitee.com/zzulj/sonar-pdf-plugin/releases,从3.0.xfor7.0 的分支获取,将下载好的jar包放在D:\....\sonarqube-7.6\extensions\plugins,目录下:
放好后,重启startsonar.bat,重新扫描刚才的代码,进入主页,就会出现more的标签。
Sonar PDF报告样例:
关于SonarQube的代码检测分析,今天就写到这里。当然在SonarQube服务实际搭建的过程中,还会有很多的问题需要处理,这里不做一一的赘述,如果你关系或想了解更多的相关内容,可关注此公众号,在我的获取本人联系方式,进行一对一交流讨论,欢迎骚扰!!!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有