1

背景

我们正在尝试使用jqassistant自动审计合规性检查。与该领域的典型情况一样,存在很多约束,但它们不一定是硬约束。

例如,在软件架构中,违反准则只能导致两种可能的结果:要么必须更改代码以匹配约束,要么必须更改准则,因此必须更改约束。

但是,当您进入合规性时,本质上还有第三种选择:自愿接受违反约束的行为,并说明在这些特定情况下可以违反约束的理由。

一个具体的例子:您计划项目,并且通常有一条规则,您必须执行某些风险管理任务。但是,该项目是一个 2-3 天的小型项目,任何风险的影响都可以忽略不计。因此,运行完整的风险管理流程没有任何意义。

手头的问题

让我们一起来回顾一下jqassistant:有一大堆约束需要验证。但是,在这种情况下,应忽略检查风险管理概览文档是否存在的特定约束。

你怎么做最好?

是否有一些配置参数允许明确排除某些约束?或者,也许我正在以错误的方式思考这一切?

行不通的想法

我知道能够明确指定应使用-constraintsor-groups参数检查的单个或一组约束。但是,使用这些有两个主要缺陷:

  1. 那时可能有很多东西需要重新定义。当我遗漏带有要排除的约束 C 的组时,我需要明确地包含该组中的所有其他约束并重新定义仍包含原始组的所有父组。
  2. 组和约束的集合在别处维护。因此,即使我明确指定了剩余的约束——当其他人向该组添加新约束时,我可能不知道它并且不会对其进行检查。
4

1 回答 1

2

目前规则(即概念、约束和组)只能包含但不能排除。所以此刻我看到了两个选择:

  1. 如果有办法让多个约束始终一起执行,那么它们应该被放入组中,然后包含在顶级组中。这种方法很简单,但仍有可能错过某个组。

  2. 一种更复杂的方法(未经验证但应该有效):顶级组“默认”包括所有已知约束,但还包括未定义但必须明确为每个分析项目提供的组“覆盖”。它包括将其严重性从 MAJOR 降低到 MINOR 或 INFO 的约束,有关示例,请参见http://buschmais.github.io/jqassistant/doc/1.6.0/#_severity_of_rules 。

于 2019-09-04T18:35:26.517 回答