【发布时间】:2022-06-13 16:17:06
【问题描述】:
我想知道在 java 17 中使用检查器框架的正确方法。我查看了文档并最终来到这里:https://github.com/typetools/checker-framework/blob/master/docs/examples/MavenExample/pom.xml
但它似乎不起作用。这是我的pom:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>learn</artifactId>
<groupId>tutorial</groupId>
<version>1.0.0-Final</version>
</parent>
<artifactId>checkerframework</artifactId>
<name>checkerframework</name>
<packaging>jar</packaging>
<properties>
<checkerframework.version>3.22.1</checkerframework.version>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.checkerframework/checker -->
<dependency>
<groupId>org.checkerframework</groupId>
<artifactId>checker</artifactId>
<version>${checkerframework.version}</version>
<scope>compile</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.checkerframework/checker-qual -->
<dependency>
<groupId>org.checkerframework</groupId>
<artifactId>checker-qual</artifactId>
<version>${checkerframework.version}</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<!-- Must fork or else JVM arguments are ignored. -->
<fork>true</fork>
<release>17</release>
<compilerArgs combine.children="append">
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
</project>
我省略了其他 JDK 的配置文件。但是,当我单击 IntelliJ 中的运行按钮时,它不会引发警告。或者它甚至没有显示黄色下划线,说明检查框架发现了这个问题或类似的东西。
我在这里错过了什么?
我以前用过龙目岛,这并不麻烦。只需添加依赖项,IJ 将负责处理。
那么我怎样才能在这里实现呢?我看到修改 IJ 的注释设置,但我认为这是一个矫枉过正,特别是我希望这是跨平台的。所以我寻找纯粹的脚本。
这是我用来检查的主要课程:
public class Main {
public static @Positive int positiveInteger;
public static void main(final String[] args) {
positiveInteger = -4;
System.out.println(positiveInteger);
// should show warning underline or something on positiveInteger ???
}
}
我也尝试过添加所有注释处理器,如此处所示 (https://www.baeldung.com/checker-framework),但这也失败了:
【问题讨论】:
标签: maven java-17 checker-framework