gpt4 book ai didi

java - 如何使用 checkstyle 或 PMD 强制执行构造函数注入(inject)?

转载 作者:行者123 更新时间:2023-12-04 08:03:07 26 4
gpt4 key购买 nike

我想在 GWT 项目中使用 Guice 注释 com.google.inject.Inject 强制执行构造函数注入(inject)它可以放置在用于字段注入(inject)的字段上,也可以放置在用于构造函数注入(inject)的构造函数上。
该项目已经使用 checkstyle 和 PMD。
Afaik 我可以通过禁止字段上的注释来简单地强制构造函数注入(inject),但是我发现没有 checkstyle 模块或 PMD 规则来执行此操作。我确定我遗漏了一些东西,因为它似乎是静态代码分析工具的日常任务。

最佳答案

这听起来很适合 Checkstyle 的 MatchXpath查看。您可以将两个模块添加到您的配置中,如下所示:

<module name="MatchXpath">
<property name="query" value="//VARIABLE_DEF/MODIFIERS/ANNOTATION/IDENT[@text='Inject']"/>
<message key="matchxpath.match"
value="Inject annotation only allowed on constructors."/>
</module>

<module name="MatchXpath">
<property name="query" value="//METHOD_DEF/MODIFIERS/ANNOTATION[./IDENT[@text='Inject']]"/>
<message key="matchxpath.match"
value="Inject annotation only allowed on constructors."/>
</module>

示例 java 文件:
public class Communication {
@Inject @Named("SMSComms")
CommunicationMode smsComms;

@Inject
public void setEmailCommunicator(@Named("EmailComms") CommunicationMode emailComms) {
this.emailComms = emailComms;
}

@Inject
public Communication(@Named("IMComms") CommunicationMode imComms) {
this.imComms = imComms;
}
}

结果:

➜ src java -jar checkstyle-8.40-all.jar -c config.xml Communication.java
Starting audit...
[ERROR] src/Communication.java:2:6: Inject annotation only allowed on constructors. [MatchXpath]
[ERROR] src/Communication.java:5:5: Inject annotation only allowed on constructors. [MatchXpath]
Audit done.
Checkstyle ends with 2 errors.

关于java - 如何使用 checkstyle 或 PMD 强制执行构造函数注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66352648/

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