sonar的详细介绍(1)

2024-01-03 15:24:31

背景:对于代码的静态扫描工具,这边主要介绍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)?

文章来源:https://blog.csdn.net/weixin_44249280/article/details/135333959
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。