sonar web功能介绍

前言

安装指南请查看另外一篇:链接

一、总项目概览:

sonar web功能介绍

  1. 点击展示有权限的项目
  2. bm-mallorder-parent项目的名称,maven项目一般以主pom下的artifactId 属性值为名
  3. 扫描结论, “错误” 表示这一次与上一次的扫描对比有新增bug。 "正常情况"表示首次扫描或者与上一次扫描没有新增问题。
  4. "157k"代表扫描的代码行数
  5. 代表扫描的语言类型
  6. bugs:包括各个等级的bug数量
  7. 漏洞:安全相关问题
  8. 异味:可能存在的问题,比如长发发,超长标识,太多参数等。
  9. 覆盖率: 单元测试的覆盖率,需要额外的单元测试插件
  10. 重复率:表示代码重复的数据。

二、单项目总览

sonar web功能介绍

重点关注标注颜色的地方

  1. 质量阈:这是判断项目是否正常的结论显示,如果显示错误,则不符合质量阈的配置的规则,现在配置主要的规则有代码重复率(不能大于5%),有代码bug以及漏洞级别(不能高与C级别)。一般是要第二次扫描才能做出对比。质量阈详细配置请查看后面的质量阈章节。
  2. 可靠性,也就是bug,可靠性等级为ABCDE,bug一般指的是明显的错误
    A表示代码无bug
    B代码有一个次要bug
    C包含一个重要bug
    D有一个严重bug
    E有一个最高等级的阻断级别的bug
  3. 安全性,也就是安全漏洞,等级也分为ABCDE
    A为没有漏洞时
    B为只要包含一个次要漏洞
    C为只要包含一个重要漏洞
    D只要包含一个严重漏洞
    E只要包含一个阻断漏洞
  4. 质量配置:
    也就是质量扫描规则,这个配置很重要,决定着你的代码bug量会有多少,默认的官方规则非常多,建议项目自定义规则,这个可以参考后面质量配置章节。
  5. 可维护性,也就是异味,一般就是指代码写法上的规范问题,一般指的是隐藏的错误,等级也分为ABCDE
    A:小于等于5%
    B: 大于5%小于等于10%
    C: 大于10%小于等于20%
    D:大于20%小于等于50%
    E:大于50%
    债务:代码修完预计需要时间,时间越长说明项目问题越多。
  6. 代码覆盖率:
    一般是指单元测试覆盖率,以maven项目来说,需要编写单元测试集成在代码里,然后执行mvn test,最后使用sonar 扫描即可上传。这里的代码覆盖率指的是行覆盖与条件覆盖。
  7. 代码重复率:
    sonar的官方标准是不超过3%,但这个是个复杂的定义,因为sonar之类的工具,对于特殊的文件,并不能完全统计出真实的重复率。所以要根据实际情况判断。比如,将不必要的文件排除后,再统计重复率就会准一点
    大体上也会给个标准:一般5% 以内为优秀,20%以内为及格。所以一般以20%作为判断标准

注意:sonar的严重程度的关键词有以下几个:
阻断:很严重错误,必须修复的
严重:可能会影响程序,需要审查
主要,次要 ,info :需要关注,也可以忽略。

三、问题查找与处理

sonar web功能介绍

最经常使用的问题筛选条件是:问题的类型,严重程度,以及规则。
最经常使用的问题处理方式:修改bug或者标记为误判或者标记不会处理。下次就会屏蔽。但不建议使用标记的方式,比较费时间。
问题批量处理:点击查看改规则,然后点击规则的序号
sonar web功能介绍

可以看到规则可以有以下的操作,拓展描述,或者直接修改规则的等级。某些情况下可以删除。删除该规则后,该问题就可以进行批量处理。

sonar web功能介绍

四、指标

sonar web功能介绍

  1. 总的项目指标概览,如右边的泡泡,点击泡泡可以看到一些信息。

  2. 复杂度,主要是以下关键词增加复杂性:if, for, while, case, catch, throw, return (不是方法的最后一个语句), &&, ||, ?,复杂度越高,越难以理解。
    圈复杂度可以计算出达到全面覆盖需要的最少测试用例。认知复杂度对应这个应用是否很难被理解。
    sonar web功能介绍

  3. 代码的重复率。官方标准是小于3%。

  4. 点击可以看到灰色竖条的重复代码,点击可以看到跟哪一行数据重复。

五、代码

sonar web功能介绍

1.可以看到你扫描的代码目录有哪些,有多少的代码行数,问题以及重复代码有多少。覆盖率是针对单元测试的,没有就为0

六、活动

sonar web功能介绍

  1. 可以看到各个时间段的扫描记录
  2. 可以选择不同的类型
  3. 可以看到不同时间段扫描后的bug,覆盖率等趋势图,也可点击自定义,显示其他的指标趋势。

七、代码规则

sonar web功能介绍

  1. 可以展示各种语言的规则显示,只能挂起**,要删选需要选择质量配置。
  2. 如果没有定制自己的规则,这里是显示默认规则,可以自己定制规则(基于官方的规则做筛选,如果新增自己的规则,则需要自己去创建一个插件规则,再重新打包成jar包,这个步骤就比较麻烦。)
  3. 点击进去可以详细看规则的内容以及例子。
  4. p3c可以参考我另外一篇文章:链接
    注意:如果是自己集成的规则,需要手动点击批量修改,修改成活动状态后才能用上,比如常用p3c规则。

八、质量配置

sonar web功能介绍

  1. 可以创建自己项目扫描的质量配置,包括规则定制(注意:如果你要自己筛选规则,父类不要选择继成sonar-way默认规则)

  2. 点击进去可以看到更多属性。点击进去后见下图

  3. 创建后可以修改属性

  4. 显示你使用的规则有多少,没有使用到的规则有多少。

  5. 点击更多**规则,可以添加更多的规则。见下图

  6. 将这个质量配置赋予用户权限

  7. 设置某些项目使用这个质量配置

  8. 切换可以看到**跟没**的规则内容

  9. 点击活动就**这条规则。

九、质量阈

sonar web功能介绍

  1. 默认是官方设定的条件准则,也可以自己设定指标准则,如下图

  2. 指标,显示的是各个指标数据在某个条件下就会判断为错误。默认的数据比较偏严格。

  3. 设定的项目。
    sonar web功能介绍

  4. 创建自己的质量阈

  5. 可以添加自己想要的添加,一般需要重复率,可靠性,可维护性,安全率。覆盖率单元测试有才需要。

  6. 添加适用的项目。

十、配置

sonar web功能介绍

  1. 配置可以配置数据库的清理时间,一天内多次项目扫描默认保留最新的分析,并完全删除其他分析
  2. 可以配置邮件的通知。比如扫描失败提醒,bug指派。这个设置后续在补充。
  3. 项目设置排除某些文件的扫描设定:下次的时候生效

十一、帮助

sonar web功能介绍

  1. 点击文档可以查看官方的文档,点击插件可以查看每个版本sonar支持的插件版本。
  2. 查看sonar提供的各个接口,可以通过该接口获取扫描结果。
  3. api接口可以参考我另外一篇文章:链接