Please see the EISOP Checker Framework manual (HTML, PDF).
The history of releases and changes is in file docs/CHANGELOG.md.
See below for EISOP Checker Framework development notes.
-
Clone this repository in some empty directory:
git clone git@github.com:eisop/checker-framework.git cd checker-framework -
Build the EISOP Checker Framework (requires JDK 8+):
./gradlew assembleThis will clone the required eisop/jdk project to a sibling directory called
jdkand build everything without running the test suite. There will be warnings about missing javadoc, but overall the build should be successful. -
Run a simple test:
./checker/bin/javac -processor nullness docs/examples/NullnessExampleWithWarnings.javaThis will result in two errors:
docs/examples/NullnessExampleWithWarnings.java:24: error: [assignment.type.incompatible] incompatible types in assignment. foo = bar; ^ found : @Nullable String required: @NonNull String docs/examples/NullnessExampleWithWarnings.java:34: error: [argument.type.incompatible] incompatible argument for parameter arg0 of List.add. foo.add(quux); ^ found : @Nullable String required: @NonNull String 2 errors
If you only want to run the latest development version rather than modify it,
every CI run
attaches the jars it built to the run, under "Artifacts" on the run's summary
page. The archive holds checker.jar, checker-qual.jar, checker-util.jar
and javac.jar -- the contents of checker/dist after a build. Runs happen on
every pull request as well as on master, so there is an artifact for a proposed
fix too. With the GitHub CLI:
gh run download --repo eisop/checker-framework --branch master \
--name checker-framework-jars
GitHub serves these only to signed-in users and deletes them 30 days after the run, so they are for trying a build out, not for depending on.
There is a lot more to explore!
Please see the EISOP Checker Framework manual (HTML, PDF) to learn about all the different type systems, how to integrate them into your build system, and much more.
Developer notes are in docs/developer, including a Developer Manual.
Import the EISOP Checker Framework source folder into your IDE of choice. See the IDE configuration section for notes.
To run all test cases, run:
./gradlew alltests
There are many AI assistants that might help you navigate the source code, for example DeepWiki.
Contributions are always welcome! For guidelines, see the Contributing summary and the Contributing section in the manual.