gpt4 book ai didi

java - 验证方法体中是否使用了方法参数

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:05:44 30 4
gpt4 key购买 nike

我有一个如下所示的界面

interface Evaluator {
boolean requiresP2();
EvalResult evaluate(Param1 p1, Param2 p2, Param3 p3);
// some more methods
}

这个接口(interface)是由几个类实现的。 evaluate 方法的参数 p2 被一些人使用,其他人没有使用。 requiresP2 方法基本上返回一个 boolean 值,指示评估方法是否使用 p2

现在,脱离上下文,这个问题可能显得有点奇怪,但请相信我,这在我们的用例中是有意义的。另外,重构所有代码以消除对 requiresP2 方法的需要将需要大量时间,因此如果我们讨论除了代码库的自上而下重构之外的解决方案,我将不胜感激。

问题在于方法requiresP2 的返回值取决于evaluate 方法的实现方式。因此,每个人都必须确保在更改 evaluate 方法时更新了 requiresP2 方法。

我正在寻找方法,以便编译器/单元测试/linters 可以强制执行此操作,而不是将其留给开发人员内存。

编辑:我仍在探索模拟框架对这个问题的适用性。

我认为我可以在单元测试中进行反射(reflection),以检查单元测试中evaluate的主体,以检查它是否引用了p2,然后确保它与 requiresP2 方法返回的值匹配,但似乎无法使用反射检查方法主体。

我正在寻找有关如何执行此操作的建议。感谢任何输入。

最佳答案

还有一个您没有提到的选项:静态代码分析工具。

您可以使用 SonarQube + SonarLint组合以获得您想要的执行:

使用 SonarQube 服务器创建新的静态代码分析规则,该规则将基于您使用的界面和您的独特用例。

然后在您的 IDE/IDE(支持 Eclipse 和 IntelliJ)上安装 SonarLint,并将其连接到 SonarQube 服务器。

通过这种方式,静态代码分析扫描将检测到您的界面使用不当,并在 IDE 中的相关代码行(实际上是对您的代码进行 linting)上的视觉标记进行指示。

关于java - 验证方法体中是否使用了方法参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50401749/

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