SonarQube代码扫描规则
最近在研究sonarqube自定义扫描规则,看了官方的【规则】文章,如下。
概述
SonarQube 对源代码执行规则以生成问题。有四种类型的规则:
- 代码异味(可维护领域)
- 错误(可靠性域)
- 漏洞(安全域)
- 安全热点(安全域)
对于代码异味和错误,预计零误报。至少这是目标,因此开发人员不必怀疑是否需要修复。
对于漏洞,目标是让超过 80% 的问题是真实的。
安全热点规则将注意力引向对安全敏感的代码。预计80%以上的问题会在开发者审核后快速解决为“已审核”。
规则页面是您可以发现所有现有规则或基于提供的模板创建新规则的入口点。
规则
默认情况下,当进入顶部菜单项“规则”时,您将看到安装在 SonarQube 实例上的所有可用规则。您可以根据左侧窗格中的搜索条件缩小选择范围:
- 语言:规则适用的语言。
- 类型:错误、漏洞、代码异味或安全热点规则。
- 标签:可以向规则添加标签,以便对它们进行分类并帮助更轻松地发现它们。
- 存储库:为 SonarQube 提供规则的引擎/分析器。
- 默认严重性:规则的原始严重性 - 由 SonarQube 定义。
- 状态:规则可以有 3 种不同的状态:
- Beta : 该规则是最近实施的,我们还没有从用户那里得到足够的反馈,所以可能会出现误报或漏报。
- 已弃用:不应再使用该规则,因为存在类似但更强大和更准确的规则。
- 就绪:规则已准备好在生产中使用。
- 可用时间:首次在 SonarQube 上添加规则的日期。例如,这对于列出自上次插件升级以来的所有新规则很有用。
- 模板:显示允许创建自定义规则的规则模板(见本页稍后部分)。
- 质量配置文件:包含在特定配置文件中或从其排除
如果选择了质量配置文件,还可以检查其活动严重性以及它是否被继承。有关更多信息,请参阅质量配置文件文档。
规则详情
要查看规则的详细信息,请单击它,或使用向右箭头键。除了基本规则数据外,您还可以查看它在哪些(如果有)配置文件中处于活动状态,以及使用它提出了多少未解决的问题。
仅当您具有正确的权限(“管理质量配置文件和门户”)时,以下操作才可用:
- 添加/删除标签:
- 可以在规则上添加现有标签,或创建新标签(只需在文本字段中键入时输入新名称)。
- 请注意,某些规则具有无法删除的内置标签 - 它们由提供规则的插件提供。
- 扩展说明:
- 您可以扩展规则说明,让用户了解您的组织如何使用特定规则或提供有关规则的更多信息。
- 请注意,该扩展将作为规则详细信息的正常部分提供给非管理员用户。
规则模板和自定义规则
规则模板由插件提供,作为用户在 SonarQube 中定义自己的自定义规则的基础。要查找模板,请从“模板”下拉列表中选择“仅显示模板”方面:
要从模板创建自定义规则,请单击“自定义规则”标题旁边的“创建”按钮并填写以下信息:
- 姓名
- 密钥(自动建议)
- 说明(支持 Markdown 格式)
- 默认严重性
- 地位
- 模板指定的参数
您可以通过单击“自定义规则”部分中的链接,从模板导航到从模板定义的自定义规则的详细信息。
自定义规则
自定义规则被视为与任何其他规则一样,不同之处在于您可以编辑或删除它们:
注意:删除自定义规则时,它不会从 SonarQube 实例中物理删除。相反,它的状态设置为“REMOVED”。这允许与此规则相关的当前或旧问题在 SonarQube 中正确显示,直到它们被完全删除。
扩展编码规则
可以添加自定义编码规则。有关详细信息和教程,请参阅添加编码规则。
规则类型和严重性
规则是如何分类的?
SonarQube 质量模型将规则分为四类:错误、漏洞、安全热点和代码异味。根据以下问题的答案将规则分配给类别:
关于代码的规则是明显错误的,还是更可能是错误的?
如果答案是“是”,那么这是一个错误规则。
如果不...
是关于可以被黑客利用的代码的规则吗?
如果是这样,那么这是一个漏洞规则。
如果不...
关于代码的规则是安全敏感的吗?
如果是这样,那么这是安全热点规则。
如果不...
规则既不是错误也不是漏洞吗?
如果是这样,那么这是代码气味规则。
严重性如何分配?
为了给规则分配严重性,我们提出了更多的问题。第一个基本上是:
可能发生的最糟糕的事情是什么?
在回答这个问题时,我们试图在不预测世界末日的情况下考虑墨菲定律。
然后我们评估最坏事的影响和可能性(参见下面的严重性和可能性如何决定?)是高还是低,并将答案插入真值表:
如何确定严重性和可能性?
为了评估规则的严重性,我们从最坏的事情(请参阅上面的严重性如何分配?)开始,并询问特定类别的问题。
错误
影响:最坏的事情是否会导致应用程序崩溃或损坏存储的数据?
可能性:最坏的事情发生的概率是多少?
漏洞
影响:利用 Worst Thing 是否会对您的资产或用户造成重大损害?
可能性:黑客能够利用最坏的东西的概率是多少?
安全热点
安全热点未分配严重性,因为在审查它们之前,不知道是否真正存在潜在漏洞。