SonarQube使用介绍
Posted 小小张自由—>张有博
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SonarQube使用介绍相关的知识,希望对你有一定的参考价值。
目录
⑤:禁止使用 System.out.println(""); 打印内容
⑥:Controller类中不要抛出异常,需要用try,catch捕获
SonarQube使用介绍
SonarQube® 是一种自动代码审查工具,用于检测代码中的错误、漏洞和代码异味。它可以与您现有的工作流程集成,以实现跨项目分支和拉取请求的持续代码检查。
SonarQube 是一个用于代码质量管理的开源平台,用于管理源代码的质量。 通过插件形式,可以支持包括 java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十几种编程语言的代码质量管理与检测。
工作流程:
工作流程介绍
1.开发人员在IDE中开发和合并代码,并将代码签入到DevOps平台。
2.持续集成工具(如jenkins)检查、构建和运行单元测试,集成SonarQube扫描仪分析结果。
3.扫描程序将结果发布到SonarQube服务器,该服务器通过SonarQube界面、电子邮件、IDE内通知(通过SonarLint)和拉入或合并请求的装饰(使用Developer Edition及更高版本时)向开发人员提供反馈。
主要作用
编写整洁代码
把出现在代码里的新问题都解决掉,就可以创建并维护一个干净的代码基础。即使是遗留项目,保持新代码的整洁,也能最终获得一个值得骄傲的代码基础。
修复代码缺陷
缺陷图例和默认质量阈都是基于新代码周期的 - 当前周期就是处理问题的时间。主要的关注点是上一个版本,通常会选择30天作为一个周期。
加强质量阈
项目的质量阈是在发布到生产环境之前所需要达到的一系列的条件标准。质量阈可以确保下一个版本的代码质量总能高于上一个版本。
Sonar的优点:
(1)支持所有语言的检测。一个工具,搞定所有。
(2)灵活扩展,插拔式使用。自定义的代码检测规则,可自定义插件,独立打成JAR包放到SONARQUBE插件目录下,重启即生效,开发使用非常方便。而且自带UT验证框架,开发效率高。
(3)规则支持多租户隔离。租户可定制自己的规则集。
(4)生态强大,业界有诸多插件,与jenkins友好集成。
(5)部署使用便捷。
(6)架构松耦合,通过与maven/jenkins等集成,将代码扫描的计算消耗迁移到业务或者构建方的资源上,极大的提升了自身的吞吐能力。
衡量代码质量的几个指标
1.Bugs Bug是出现了明显错误或是高度近似期望之外行为的代码。
2.漏洞 漏洞是指代码中可能出现被黑客利用的潜在风险点。
3.安全热点 安全敏感代码需要手工审核,以便判断是否存在安全漏洞。
4.异味 代码异味会困扰代码的维护者并降低他们的开发效率。主要的衡量标准是修复它们所需的时间。
5.重复率 新代码中的重复行密度 (%),重复行数,重复代码块
6.行数 程序中代码的行数
SonarQube的UI界面:
等等
个人解决项目中的bug,异味总结
①:变量声明后不使用,多余变量
正例:localValue/getHttpMessage()/GroupController
②:方法名、变量名不符合命名规范
例如:方法名、参数名统一使用驼峰命名法(Camel命名法),除首字母外,其他单词的首字母大写,其他字母小写,类名每个组合的单词都要大写;
③:常量命名不规范
禁止缩写。命名尽量简短,不要超过16个字符
采用完整的英文大写单词,在词与词之间用下划线连接,如:DEFAULT_VALUE。
同一组的常量可以用常量类封装在一起,便于引用和维护
代码中用到常量的,用静态常量表示,
正例:
Private final static String SUCCESS=”success”;
Private final static String ERROR = “error”;
调用:类名.SUCCESS
④:删除无用的依赖
import中灰色的部分
⑤:禁止使用 System.out.println(""); 打印内容
推荐使用
private static Log logger = LogFactory.getLog(AopGetService.class);
或者
log.info("章节拼接成功!");
⑥:Controller类中不要抛出异常,需要用try,catch捕获
⑦:删除无用的注释,例如用于测试的代码
⑧:将程序中的 //TODO 尽快完成
⑨:等等~~
如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦。
以上是关于SonarQube使用介绍的主要内容,如果未能解决你的问题,请参考以下文章