代码检查入门

2024-02-23 23:16:19 1点赞 5收藏 0评论

【摘要】 代码检查中,提到的编程规范,规则集,规则,规则用例(场景、误报、检出)分别代表什么意思呢?

在 SAST 静态检查领域,代码检查服务可以帮助开发者发现和修复代码中的风格、质量和安全等方面的问题。那么在代码检查服务中,提到的编程规范,规则集,规则,规则用例(场景、误报、检出)分别代表什么意思呢?

编程规范

在 SAST 静态代码检查领域,编程规范是一套在组织层面关于代码编写的标准或准则。它可以帮助开发者遵循一致的风格和习惯,提高代码的可读性、可维护性、可移植性、安全性与可靠性,目的在于指导公司、部门、项目组编写出 Clean Code 及高质量的软件。

编程规范通常会参考业界标准及实践,并包含命名、缩进、注释、格式等方面的内容,业界内比较有名的有华为编程规范。

编程规范内的规则通常被用于在特定场景下使用,检测出代码中的漏洞和缺陷。但是这些规则并非就是万能完美的,在一些场景下,可能会导致误报率、漏报率高的情况发生。如果在日常使用中发现某些规则不适合或者无法遵循,经过团队共同研讨决策,是可以对规范中的规则进行改进甚至下线处理的。

注意,团队内在使用编程规范的时候,是希望团队成员都具有相应语言的基础编程能力,而不是说希望通过编程规范来学习某个具体的语言。

规则集

规则集则是一组用于做代码检查的规则组成的集合。

一般根据不同的检查目标和需求,规则集也有相应的分类,比如对安全类、安卓应用、编程风格这些类别进行检查的时候,规则集内的规则也会有不同的选择。

规则集可以应用在不同的范围上,比如:公司最小规则集可以在全公司范围内使用,产品线规则集则可以在最小规则集的基础上再额外加些产品线特有的规则进去,构建一个范围更大的产品线级规则集。

规则集也可以在不同的阶段使用。比如针对本地 IDE 编码阶段,可以构建一个 IDE 插件检查规则集在本地实时进行检查。在提交增量代码阶段,使用一个更大范围的规则集对增量代码进行自动化检查。在要进行版本级扫描阶段,与流水线协同提供全面、深度的全量检查。

代码检查入门

华为云 CodeArts Check 的系统推荐规则集

规则

规则是一种用来指导和约束代码检查的标准和准则。它可以根据不同的编程语言、编码规范、质量要求等因素来制定。每个规则可以说都定义了一个缺陷模式,当该模式在目标代码中匹配成功后会生成一个检查问题。

每个规则都会包含一个 ID 和一个操作。ID 可以说是规则唯一的标识符,用于区分不同的规则;操作则用于指定改规则在代码检查期间应该执行的动作,比如告警等。

规则一般会包含描述信息(包含编写这条规则的背景等)、正确的代码示例、错误的代码示例、修复建议、参考的规范等信息。

代码检查入门

华为云 CodeArts Check 的规则信息

规则用例

规则用例是一种用于验证代码检查规则是否按照预期正确工作的测试用例。一般它会包括一个或多个测试输入(代码片段),执行条件以及预期的检查结果(包括是否有问题,问题的类型,问题的位置等)。

规则用例可以说是检验和验证规则的一种手段,可以帮助开发人员和测试人员评估代码检查规则的有效性、准确性和覆盖性。

而和规则用例配套的术语则有:场景,误报,检出等。

场 景

场景是一种描述代码检查规则应用的具体情况或背景的方法,它可以说是规则用例的集合(包含 1 个或多个规则用例)以及一些相关的信息(项目类型、编程语言、编码规范等)的结合。场景可以比规则用例更全面的模拟代码检查规则的使用场景。

误 报

误报是指代码检查服务错误地报告了一个不存在的问题或一个错误的问题类型的状况。误报一般是由于代码检查规则的设计缺陷、实现错误、使用场景不匹配或配置不当等原因造成的,会导致开发人员和测试人员对代码检查服务的信任度降低。

检 出

检出则和误报完全相反,是个好的现象,是指代码检查服务正确地报告了一个确实存在的问题及正确的问题类型的状况。检出高可以帮助开发人员预防和修复潜在的缺陷。

参考文献

1.https://ilcc.gitbooks.io/wiki/content/StyleGuide/Huawei-C/index.html

2.https://learnku.com/go/wikis/38426

3.https://en.wikipedia.org/wiki/Coding_conventions

展开 收起

UGREEN 绿联 DX4600 Pro 4盘位NAS(奔腾N6005、8GB)

UGREEN 绿联 DX4600 Pro 4盘位NAS(奔腾N6005、8GB)

1799元起

ZSpace 极空间 私有云 Z4Pro 8G版 4盘位NAS存储(N97、8GB)

ZSpace 极空间 私有云 Z4Pro 8G版 4盘位NAS存储(N97、8GB)

2485.01元起

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

2599元起

ZSpace 极空间 私有云 Z4Pro 性能版 NAS存储(N305、16GB)

ZSpace 极空间 私有云 Z4Pro 性能版 NAS存储(N305、16GB)

3479.01元起

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

2849元起

UGREEN 绿联 DX4600 四盘位NAS存储 (赛扬N5105、8GB)

UGREEN 绿联 DX4600 四盘位NAS存储 (赛扬N5105、8GB)

1749元起

ZSpace 极空间 私有云 Z4Pro 16G版 4盘位NAS存储(N97、16GB)

ZSpace 极空间 私有云 Z4Pro 16G版 4盘位NAS存储(N97、16GB)

2783.51元起

ZSpace 极空间 私有云 Z423 旗舰版 8盘位NAS存储(锐龙R7-5825U、64GB)

ZSpace 极空间 私有云 Z423 旗舰版 8盘位NAS存储(锐龙R7-5825U、64GB)

5899元起

UGREEN 绿联 DX4600+ 4盘位NAS(赛扬N5105、8GB)

UGREEN 绿联 DX4600+ 4盘位NAS(赛扬N5105、8GB)

1999元起

ASUS 华硕 AS6702T 4盘位NAS存储 黑色(Core2 Quad Q8300、4GB)

ASUS 华硕 AS6702T 4盘位NAS存储 黑色(Core2 Quad Q8300、4GB)

4299元起

TERRAMASTER 铁威马 F4-424 Pro 四盘位NAS(Intel Core i3、32GB)黑色

TERRAMASTER 铁威马 F4-424 Pro 四盘位NAS(Intel Core i3、32GB)黑色

2499元起

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

3299元起

Synology 群晖 DS920+ 4盘位 NAS存储(J4125、4GB)

Synology 群晖 DS920+ 4盘位 NAS存储(J4125、4GB)

2190.84元起

Synology 群晖 DS220+ 2盘位NAS (赛扬J4025、2GB)

Synology 群晖 DS220+ 2盘位NAS (赛扬J4025、2GB)

2179元起

UGREEN 绿联 DH2600 双盘位NAS (N5105、4GB)

UGREEN 绿联 DH2600 双盘位NAS (N5105、4GB)

1349元起

sgwbox 拾光坞 N3 NAS私有云网盘 星光版-V

sgwbox 拾光坞 N3 NAS私有云网盘 星光版-V

386元起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
目录
5
扫一下,分享更方便,购买更轻松