如何使用 jqassistant 排除个别约束?

How to exclude individual constraints with jqassistant?

背景

我们正在尝试使用 jqassistant 进行自动审计合规性检查。作为那个领域的典型,有很多限制,但它们不一定是硬性限制。

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

然而,当您进入合规时,基本上有第三种选择:有意接受违反约束的行为,并给出在这些特定情况下可以违反约束的理由。

一个具体的例子:你在做项目规划,一般来说,有一个规则,你必须做一些风险管理任务。然而,一个项目是一个 2-3 天的小项目,任何风险的影响都可以忽略不计。因此,运行 完整的风险管理流程没有任何意义。

手头的问题

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

你怎么做最好?

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

行不通的想法

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

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

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

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

  2. 更复杂的方法(未验证但应该有效):顶级组 "default" 包括所有已知约束,但也包括未定义的组 "overrides"但必须明确地提供给每个分析项目。它包括将严重性从 MAJOR 降低到 MINOR 或 INFO 的约束,请参阅 http://buschmais.github.io/jqassistant/doc/1.6.0/#_severity_of_rules 示例。