gpt4 book ai didi

java - 用于强制圈复杂度和 LCOM 约束的注释

转载 作者:行者123 更新时间:2023-11-29 08:17:58 25 4
gpt4 key购买 nike

在工作中,我们使用多种工具来捕获多种指标(主要是圈复杂度和 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(){...}
}

然后,当我们运行该工具时,默认情况下应用严格(且可配置)的度量标准阈值,但那些用(希望记录在案且合法的)更宽松阈值注释的工件除外。对于一些不能/不应该减少的方法,宽松的圈复杂度是有意义的。对于没有行为的普通 POJO,LCOM 需要放松......等等。

尽我所能寻找和谷歌搜索,我还没有找到任何东西(希望是开源的)。但我不妨在这里问一下,以防万一有人知道这类事情。

谢谢。

最佳答案

It would be nice to have one consolidated tool that works on the source code before compilation begins.

我不太确定这意味着什么,因为必须将代码编译成某物 才能使静态分析起作用。所有这些工具都需要能够将您的代码编译成字节码或某种语法树。

我建议保持简单:如果圈复杂度或其他指标的任何警告超过给定阈值,则将 PMD 配置为使构建失败。而不是用允许的复杂性来注释方法(你将如何得出一个可接受的值?是什么来防止有人意外地将复杂性从 12 增加到 15 而只是增加注释),注释它以完全抑制警告

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

然后您可以定期在代码库中搜索带有抑制警告的方法,您可能想要删除和重构这些方法。

或者,如果您想提供某种可追溯性,PMD 支持以某种语法在代码中留下注释,以标记谁审核了警告以及何时审核。

关于java - 用于强制圈复杂度和 LCOM 约束的注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2924348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com