This project comprises a Java compiler plugin and an IntelliJ plugin. The former modifies javac and the latter fixes the IDE's error reporting.
- no exception checking
- statements before delegating constructor calls
- reassigned variable capture in lambdas and inner classes
- final field reassignment in initializers
These plugins extend Java to make the following example legal.
class Example {
final String a, b;
Example(String a, String b) {
this.a = a = "not effectively final";
this.b = b;
Runnable capturingRunnable = () -> System.out.println(a);
Runnable throwingRunnable = Thread.currentThread()::join;
}
Example(String s) {
var ab = s.split(":");
this(ab[0], ab[1]);
}
void evilMethod() {
Files.writeString(Path.of("file.txt"), "text");
throw new IOException();
}
}
GitHub releases: download and install manually
It requires Java 17 or later and is hosted as net.auoeke:uncheck
at Central.
repositories {
mavenCentral()
}
dependencies {
annotationProcessor("net.auoeke:uncheck:latest.release")
}