在工作中,我们使用几种工具来捕获几个指标(主要是环形复杂性和LCOM)。我们使用这些来获得警告标志,并指导先发制人的重视工作。这对于提高代码质量非常有益。

但是,该过程与构建过程无关。它是单独进行的。此外,我正在寻找可以使源代码固有的东西(与外部过程相反。)

是否有人知道可以从编译器运行的一组注释和可配置的注释处理器,如果代码不符合阈值循环/LCOM指标,则可以使构建失败?

我想我可以从Maven/Ant运行CKJM,CheckStyle和PMD,但有些在源代码上工作,而另一些则可以在字节码上使用。在汇编开始之前,拥有一个在源代码上使用的合并工具会很高兴。

另一件事是,如果有一组注释可以驱动此问题,那将是不错的(允许在角案例中不可避免地需要自定义。)

@LCOM3(Threshold=1.5)
public class SomeDumbPojo {... buch of gets/sets...}

// by default would be measured against a strict LCOM3
public class ActualBizClass
{
   @CYCLOMATIC_COMPLEXITY(Threshold=15)
   public void someFatIrreducibleMethod(){...}
}

然后,当我们运行该工具时,默认情况下应用了严格(可配置)的度量阈值,除非在那些带有(希望记录和合法的)更轻松的阈值的文物上。对于某些不能/不应减少的方法,放松的循环复杂性是有道理的。对于具有行为的普通波约斯,LCOM需要放松……等等。

看着和谷歌搜索,我找不到任何东西(希望是开源的)。但是我不妨在这里问,以防万一有人知道任何类型的东西。

谢谢。

有帮助吗?

解决方案

在汇编开始之前,拥有一个在源代码上使用的合并工具会很高兴。

我不太确定这意味着什么,因为必须将代码编译到 某物 为了进行静态分析。所有这些工具都需要能够将代码编译到字节码或某种语法树中。

我建议保持简单:如果有任何循环复杂性或其他指标越过给定阈值的警告,则配置PMD将使构建失败。与其使用允许的复杂性注释该方法(您将如何获得公认的价值?什么是什么防止偶然将复杂性从12增加到15增加的人,以使注释增加注释),而是注释它以完全抑制警告。

@SuppressWarnings("PMD.CyclomaticComplexity")
public void someFatIrreducibleMethod() { ... }

然后,您可以定期地搜索代码库,以获取可能需要删除和重构的被抑制警告的方法。

另外,PMD支持在某个语法中留下评论以标记谁审核警告,以及何时何时提供某种可追溯性。

其他提示

SD Java指标 工具计算大多数基本指标(不是LCOM,而是循环复杂性),并从命令行运行。

它产生一个XML输出文件,并具有有关层次结构的方法和汇总摘要的详细指标(类,包,包,子系统)。使用XLST(或Awk或Perl或...),要为完整摘要或单独方法提取所需的度量非常容易,然后检查阈值。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top