官网介绍:https://cloud.tencent.com/product/tcap 官方开源:https://github.com/Tencent/CodeAnalysis
国内镜像:https://git.code.tencent.com/Tencent_Open_Source/CodeAnalysis
▼
代码分析发现了一些代码行有问题时,如果问题中出现“无需处理”或“误报”,则需要告知工具某规则需要过滤该行代码。
现实中代码易扩散到众分支或不同仓库,甚至文件系统以及其他代码管理仓。如在系统中配置代码行过滤,则难以跟踪管理,且与系统耦合,脱离系统后代码中无感知,丢失全部信息。
部分项目偶尔会调整工程结构,路径或文件名发生较大变更,那么系统中的配置会失效,问题再次暴露,需要再次在系统上处理过滤。
▼
一系列工具在静态不运行代码的情况下,缺少动态参数和逻辑,已知推测类规则会有误报,需要熟悉业务逻辑者确认。 例如代码中的一些关键密钥,技术上无法区分属于真实生产或调试或演示所用,需要熟悉业务者确认。 例如与IP地址结构一样的版本号被误报为IP地址等等。
综上,需要业务开发人员进行CodeReview确认,如果单纯使用工具系统标注,可能会多次出现重复操作“无需处理”或“误报”。
▼
代码注释忽略问题
对某处代码进行针对性忽略。设置成功后,该规则对此处无效,不影响其他代码扫描结果。
注释格式:// NOCA:规则名称(忽略原因)
示例:
忽略单个规则:// NOCA:DirtyWord(设计如此:该语境下不是脏字)
忽略多个规则:// NOCA:DirtyWord(设计如此:该语境下不是脏字),invalid-name(其他:老代码先不改)
忽略文件型规则:可以在文件任一行添加注释,建议在文件首行或前几行添加注释。
// NOCA:LowCommentRatio(设计如此:逻辑较简单,不需要过多注释)
#include <iostream>
int main() {
std::cout << "这是一个傻瓜式教程。";
std::cout << "这是一个傻瓜式教程。";
return 0;
}
以上demo.cpp文件,报出LowCommentRatio(代码注释率太低)的问题,该规则是针对整个文件的,会在第一行报出。可以在文件第一行添加忽略注释demo.cpp
使用 .code.yml 过滤文件问题
针对某文件或某路径进行过滤设置,使扫描对其无效。
注意1:以上两种方式设置后,工具系统需重新扫描后生效;其中.code.yml方式需要全量扫描后生效。
注意2:以上两种方式如同签字盖章,请勿轻易放过安全隐患类问题。