sonar的详细介绍(1)

背景:对于代码的静态扫描工具,这边主要介绍sonar的一些简介和工作原理,下一篇再详细介绍soar的安装配置。

一.sonar简介

一种自动静态代码审查工具,用于检测代码中的错误、漏洞和代码异味。 可以从七个维度检测和扫描代码质量:

可靠性:发现代码中的潜在bug

安全性:发现代码中的安全漏洞

可维护性:发现代码中不符合代码编写规范的地方

单元测试:可以统计并展示单元测试的覆盖率

重复:可以统计并展示重复的行,块,密度等数据

注释:可以统计并展示代码的行数,注释的行数,占比等数据 、

复杂度:可以显示代码的圈复杂度和认知复杂度

二.sonar扫描的意义

1. 测试左移,项目过程中,问题发现的越早,解决的成本越小,通过代码静态扫描,帮助开发人减轻开发和修复的负担。

2. 规范代码编写规范,包括良好的命令,注释习惯等,可以使代码更好维护和传承,减少人员变动带来的交接成本。

三.集成现有工作流,实现代码质量持续扫描

CI流程:

1.开发人员在 IDE 中开发和合并代码,最好使用SonarLint插件在编辑器中接收即时反馈

2.Jenkins上配置CI流程,集成git+SonarQube 扫描器(SonarScanner)

3.开发人员推送代码到git中

4.CI工具-Jenkins触发自动构建, 执行SonarScanner

5.扫描器将结果发布到 SonarQube 服务器 6.服务器通过 SonarQube 界面、电子邮件等方式向开发人员提供反馈 7.开发人员根据扫描出的问题,评估修改相关代码

四.sonar扫描配置及结果说明

1.  评级说明:

A-没有问题;

B-只要有一个次要问题;

C-只要有一个重要问题;

D-只要有一个严重问题;

E-只要有一个阻断级别问题;

bug:代码中的bug,原则上都需要修复

漏洞:指安全方面的问题,即可能会被黑客攻击利用的地方。比如密码在代码中明文传输

异味:主要是代码编写规范方面的问题,需要评估是否需要修改,可能会导致一些隐藏bug。比如父类和子类的命名一样,一个不变的字符串多次出现,就应该提取成一个常量,方便使用

覆盖率:单元测试覆盖率

重复块:连续十行代码重复,则定义为一个重复块

重复度:重复的代码行数和总的代码行数比例

2. 可以在质量配置,激活更多的校验或者把评估后没有必要的校验关闭

五.当前项目扫描发现的常见问题

  1.当前项目中常见阻断类(P0)bug:

资源没有关闭-Use try-with-resources or close this "xxx" in a "finally" clause.

循环没有写退出条件-Add an end condition to this loop.

2.当前项目中常见严重类(P1)bug:

Finally块中不应该写return,throw,break等-Remove this throw statement from this finally block.

随机数重复使用-Save and re-use this "Random".

0做为被除数  

3.当前项目中常见阻断类(P0)漏洞:

代码中密码等凭证使用硬编码-PWD' detected in this expression, review this potentially hardcoded credential.

不可信的XML应该使用本地静态DTD进行解析,否则会被XML实体攻击-Disable XML external entity (XXE) 

  • 24
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值