java 在Maven中有没有办法让var成为编译时错误?

w80xi6nr  于 2023-02-02  发布在  Java
关注(0)|答案(3)|浏览(131)

我们正在更新Java 17。Maven中是否有办法使其在使用var时创建编译时错误,而不为旧版本的java编译?换句话说,我不希望必须告诉Maven为1.8或类似版本编译。
我也不喜欢使用以IDE为中心的解决方案,因为我们并不都使用相同的IDE。

zbwhf8kr

zbwhf8kr1#

通常考虑使用静态分析器作为插件运行你的代码。你可以定义一个规则,一旦在代码中观察到var,构建就失败。

cngwdvgl

cngwdvgl2#

您可以使用检查样式的非法类型检查。检查样式具有a Maven plugin
XML配置的相关部分如下所示:

...
<module name="IllegalType">
  <property name="illegalClassNames" value="var"/>
</module>
...

这个属性被称为“非法的ClassNames"有点滑稽,但是我测试了一下,它工作正常,正如Checkstyle的维护者所说的那样。

oymdgrw7

oymdgrw73#

就像Mark说的,这是静态代码分析器的工作,我会使用Checkstyle,它很容易成为integrated with Maven
我认为Checkstyle没有内置var的规则,但是你可以使用MatchXpath模块来实现你想要的,实际上,网站上的例子正好相反,要求所有变量都使用var,要得到你想要的结果,你应该能够简单地反转规则的第二部分:

<module name="MatchXpath">
  <property name="query" value="//VARIABLE_DEF[./ASSIGN/EXPR/LITERAL_NEW
          and (./TYPE/IDENT[@text='var'])]"/>
  <message key="matchxpath.match" value="'var' not allowed"/>
</module>

相关问题