TscanCode和Sonar对比报告
检查代码的指标
Sonar(cppcheck)
其中:c++的检查由cppcheck完成,由sonar展示
1.不遵循代码标准: SonarQube可以通过PMD,CheckStyle,Find bug s等等代码规则检测工具规范代码编写。
2.潜在的缺陷:SonarQube可以通过PMD,CheckStyle,Fin db ugs等等代码规则检测工具检 测出潜在的缺陷。
3.糟糕的复杂度分布: 文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员 难以理解它们, 且如果没有 自动化 的 单元测试 ,对于程序中的任何组件的改变都将可能导致需要全面的回归 测试 。
4.重复: 显然程序中包含大量复制粘贴的代码是质量低下的,SonarQube可以展示 源码 中重复严重的地方。
5.注释不足或者过多:没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降 而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。
6.缺乏单元测试: SonarQube可以很方便地 统计 并展示单元测试 覆盖率 。
7.糟糕的设计:通过SonarQube可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则 通过SonarQube可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况, 检测耦合。
将问题级别分为bug,漏洞,警告(坏味道)
功能展示项较多,界面丰富。给出的报告中代码质量指标包括:可靠性,安全性,可维护性,覆盖率,重复率,代码行数,复杂度,对查出来问题能够一一标记,并对问题修改的进度进行管理;能够对每个问题修改花的时长进行一个预估。
TscanCode(用的版本2.1)
1.空指针检查: 包含可疑的空指针,判空后解引用比如Crash等共3类subid检查
2.数据越界: Sprintf_S越界共1类subid检查
3.内存泄漏: 分配和释放不匹配同1类subid检查
4.逻辑错误: 重复的代码分支,bool类型和INT进行比较,表达式永远True或者false等共18类检查
5.可疑代码检查: if判断中含有可疑的=号,*变量返回局部变量等共计15类检查
6.运算错误:判断无符号数小于0,对bool类型进行++自增等,共计11类检查
并将问题级别分为:致命、严重、警告、提示、风格
功能展示项不多,界面少。
给出的报告包括:具体代码在哪行出现了哪个程度的错误,仅此而已。