Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
114 commits
Select commit Hold shift + click to select a range
e4b39e4
Add IntelliJ profiler usage guide to developer manual
zyf265600 Jul 21, 2025
36caf06
Use JDK 25 release in CI, start testing JDK 26 (#1409)
wmdietl Sep 26, 2025
7608398
Bump org.apache.maven.plugins:maven-compiler-plugin (#1403)
dependabot[bot] Sep 28, 2025
8f21610
Bump com.uber.nullaway:nullaway in /docs/examples/nullaway (#1397)
dependabot[bot] Sep 28, 2025
fc1d049
Bump org.apache.commons:commons-lang3 in /docs/examples/MavenExample …
dependabot[bot] Sep 28, 2025
af60965
Update plugin com.diffplug.spotless to v8 (#1408)
renovate[bot] Sep 29, 2025
0b83ee6
Bump gradle/actions from 4.4.3 to 4.4.4 (#1413)
dependabot[bot] Sep 30, 2025
690aca5
Bump com.google.errorprone:error_prone_core in /docs/examples/errorpr…
dependabot[bot] Sep 30, 2025
c901aa7
Bump com.google.errorprone:error_prone_core in /docs/examples/jspecif…
dependabot[bot] Sep 30, 2025
94887c7
Update dependency org.junit.jupiter:junit-jupiter-api to v5.14.0 (#1416)
renovate[bot] Sep 30, 2025
98139e1
Bump com.google.errorprone:error_prone_core in /docs/examples/nullawa…
dependabot[bot] Sep 30, 2025
9098d4a
Avoid assignment checking for signature polymorphic methods (#1418)
SirYwell Oct 2, 2025
bf4d724
Bump gradle/actions from 4.4.4 to 5.0.0 (#1422)
dependabot[bot] Oct 2, 2025
055a4f3
Spotless: properly format test files (#1421)
wmdietl Oct 2, 2025
1cb925e
Bump org.checkerframework in /docs/examples/errorprone (#1425)
dependabot[bot] Oct 8, 2025
1d389aa
Bump org.checkerframework in /docs/examples/jspecify (#1426)
dependabot[bot] Oct 8, 2025
9ee2666
Bump org.checkerframework from 0.6.59 to 0.6.60 in /docs/examples/lom…
dependabot[bot] Oct 8, 2025
0549f5e
Bump org.checkerframework in /docs/examples/nullaway (#1428)
dependabot[bot] Oct 8, 2025
b0f4219
Bump com.google.errorprone:error_prone_core from 2.42.0 to 2.43.0 in …
dependabot[bot] Nov 25, 2025
1875b6c
Bump com.google.errorprone:error_prone_core from 2.42.0 to 2.43.0 in …
dependabot[bot] Nov 25, 2025
51ed7c9
Bump com.google.errorprone:error_prone_core from 2.42.0 to 2.43.0 in …
dependabot[bot] Nov 25, 2025
d4489d0
Update dependency org.junit.jupiter:junit-jupiter-api to v5.14.1 (#1435)
renovate[bot] Nov 26, 2025
8189d21
Update dependency com.amazonaws:aws-java-sdk-bom to v1.12.794 (#1436)
renovate[bot] Nov 26, 2025
a2f9799
Update dependency commons-io:commons-io to v2.21.0 (#1437)
renovate[bot] Nov 26, 2025
714ccbc
Update versions.autoValue to v1.11.1 (#1440)
renovate[bot] Nov 26, 2025
1ae5c80
Update dependency org.checkerframework:stubparser to v3.27.1 (#1441)
renovate[bot] Nov 26, 2025
a3d98cb
Bump org.apache.commons:commons-lang3 in /docs/examples/MavenExample …
dependabot[bot] Nov 26, 2025
360673a
Update plugin com.diffplug.spotless to v8.1.0 (#1443)
renovate[bot] Nov 26, 2025
dbd30b6
Bump actions/checkout from 5 to 6 (#1447)
dependabot[bot] Nov 26, 2025
8038867
Update plugin com.gorylenko.gradle-git-properties to v2.5.4 (#1449)
renovate[bot] Nov 26, 2025
998aa69
Bump bazel-contrib/setup-bazel from 0.15.0 to 0.16.0 (#1462)
dependabot[bot] Dec 17, 2025
e79a14c
`AnnotatedTypeFactory`: Do not mention checker type in constructor do…
Mr-Pine Dec 17, 2025
0725825
Use method receiver in LiveVarTransfer (#1458)
Mr-Pine Dec 17, 2025
3fbc968
Bump org.checkerframework in /docs/examples/errorprone (#1466)
dependabot[bot] Dec 22, 2025
d2ccd71
Bump com.google.errorprone:error_prone_core in /docs/examples/errorpr…
dependabot[bot] Dec 22, 2025
0469d62
Bump com.google.errorprone:error_prone_core in /docs/examples/jspecif…
dependabot[bot] Dec 22, 2025
abc5038
Bump org.checkerframework in /docs/examples/jspecify (#1469)
dependabot[bot] Dec 22, 2025
be927de
Bump org.checkerframework from 0.6.60 to 0.6.61 in /docs/examples/lom…
dependabot[bot] Dec 22, 2025
26410d2
Bump org.checkerframework in /docs/examples/nullaway (#1471)
dependabot[bot] Dec 22, 2025
8b0c463
Bump com.google.errorprone:error_prone_core in /docs/examples/nullawa…
dependabot[bot] Dec 22, 2025
deb2847
Include cause in BugInCF exception for problem with initial store (#1…
Mr-Pine Dec 27, 2025
a2f02d1
Bump com.uber.nullaway:nullaway in /docs/examples/nullaway (#1474)
dependabot[bot] Dec 27, 2025
9bcb478
Update plugin biz.aQute.bnd.builder to v7.2.0 (#1475)
renovate[bot] Dec 29, 2025
c9c50b9
Update to Error Prone 2.45.0 and fix errors (#1477)
wmdietl Dec 30, 2025
5215ad2
Small coding tweaks (#1479)
wmdietl Dec 30, 2025
4697b73
Delete SKIP-REQUIRE-JAVADOC
wmdietl Dec 30, 2025
8b9e2ac
Fix ClassBound for anonymous types (#1476)
SirYwell Dec 31, 2025
bc00c05
Add more summary methods to `AbstractNodeVisitor` (#1459)
Mr-Pine Dec 31, 2025
bbf7507
Update dependency com.amazonaws:aws-java-sdk-bom to v1.12.797 (#1480)
renovate[bot] Jan 1, 2026
92a533a
Bump bazel-contrib/setup-bazel from 0.16.0 to 0.18.0 (#1490)
dependabot[bot] Jan 14, 2026
15fed21
Update plugin biz.aQute.bnd.builder to v7.2.1 (#1491)
renovate[bot] Jan 14, 2026
1d1711c
Update versions.errorprone to v2.46.0 (#1487)
renovate[bot] Jan 15, 2026
d68b983
Update dependency org.junit.jupiter:junit-jupiter-api to v5.14.2 (#1485)
renovate[bot] Jan 15, 2026
45330fc
Update plugin net.ltgt.errorprone to v4.4.0 (#1488)
renovate[bot] Jan 15, 2026
a71d661
Bump net.ltgt.errorprone in /docs/examples/errorprone (#1493)
dependabot[bot] Jan 20, 2026
5c696aa
Bump net.ltgt.errorprone from 4.3.0 to 4.4.0 in /docs/examples/jspeci…
dependabot[bot] Jan 20, 2026
372cb14
Bump net.ltgt.errorprone from 4.3.0 to 4.4.0 in /docs/examples/nullaw…
dependabot[bot] Jan 20, 2026
e810457
`-XDaddTypeAnnotationsToSymbol=true` no longer needed with gradle-err…
wmdietl Jan 20, 2026
73cc136
Use fixed bazel version 8.5.1 in CI (#1503)
thisisalexandercook Jan 21, 2026
7e01814
Bump com.google.errorprone:error_prone_core in /docs/examples/errorpr…
dependabot[bot] Jan 22, 2026
a9c9cfc
Bump com.google.errorprone:error_prone_core in /docs/examples/jspecif…
dependabot[bot] Jan 22, 2026
aec84ed
Bump com.google.errorprone:error_prone_core in /docs/examples/nullawa…
dependabot[bot] Jan 22, 2026
bf85d69
Update BazelExample for Bazel 9.0 & Enable Renovate auto-updates (#1504)
thisisalexandercook Jan 22, 2026
50efea1
Update dependency bazelbuild/bazel to v9 (#1505)
renovate[bot] Jan 22, 2026
efadb3c
Fix incorrect nullness annotations in `SourceChecker` (#1451)
Mr-Pine Jan 22, 2026
2965ce6
Bump com.uber.nullaway:nullaway in /docs/examples/nullaway (#1508)
dependabot[bot] Jan 24, 2026
16b6e59
Update plugin com.diffplug.spotless to v8.2.0 (#1510)
renovate[bot] Jan 24, 2026
71e52cd
Update Gradle to v8.14.4 (#1511)
renovate[bot] Jan 25, 2026
23ad7a6
Update JDK EA version in CI automatically (#1514)
thisisalexandercook Jan 29, 2026
c40f9b0
Update plugin com.diffplug.spotless to v8.2.1 (#1515)
renovate[bot] Jan 29, 2026
5620595
Bump gradle/actions from 5.0.0 to 5.0.1 (#1516)
dependabot[bot] Jan 29, 2026
f195de2
Update plugin net.ltgt.errorprone to v5 (#1517)
renovate[bot] Jan 30, 2026
41375fc
Bump org.apache.maven.plugins:maven-compiler-plugin from 3.14.1 to 3.…
dependabot[bot] Feb 4, 2026
cfb9f68
Update plugin de.undercouch.download to v5.7.0 (#1521)
renovate[bot] Feb 4, 2026
01c8c06
Configure Renovate to correctly detect and update JDK EA builds (#1522)
thisisalexandercook Feb 4, 2026
1362bd5
Update plugin com.gorylenko.gradle-git-properties to v2.5.5 (#1523)
renovate[bot] Feb 5, 2026
eb78e13
Update plugin com.gorylenko.gradle-git-properties to v2.5.6 (#1528)
renovate[bot] Feb 9, 2026
a01ac07
Expand README.md (#1525)
wmdietl Feb 10, 2026
3c10ae0
Update plugin com.gorylenko.gradle-git-properties to v2.5.7 (#1531)
renovate[bot] Feb 11, 2026
c197799
Downgrade CI workflows to Ubuntu 22.04 (#1535)
wmdietl Feb 16, 2026
6e3b4d2
Update dependency org.junit.jupiter:junit-jupiter-api to v5.14.3 (#1532)
renovate[bot] Feb 17, 2026
7e6f401
Use eisop-plume-lib/plume-bib to avoid random CI failures (#1539)
wmdietl Feb 18, 2026
f7f7380
Modify requireJavadoc task to exclude module-info.java (#1541)
wmdietl Feb 20, 2026
f05b79c
Resolve JDK 26 `Process` compatibility warning (#1529)
thisisalexandercook Feb 20, 2026
1d9bdbd
Update dependency adoptium/temurin26-binaries to v35 (#1538)
renovate[bot] Feb 21, 2026
76fa9e3
Update dependency ubuntu to v24 (#1537)
renovate[bot] Feb 22, 2026
713edcd
Update gradle/actions action to v5.0.2 (#1546)
renovate[bot] Feb 24, 2026
9eb3ba9
CI: run other JDK tests only after JDK 21 passed (#1547)
wmdietl Feb 24, 2026
4c32fa9
CI: disable fail-fast for `remainder` jobs (#1551)
wmdietl Feb 25, 2026
1f07af6
Consider the GenericAnnotatedTypeFactory annotated, but ignore errors…
wmdietl Mar 1, 2026
269acd9
CI: Remove JDK 24 from CI workflow (#1554)
wmdietl Mar 1, 2026
bff558e
Update plugin com.gradleup.shadow to v8.3.10 (#1555)
renovate[bot] Mar 1, 2026
1e59bf4
Update plugin net.ltgt.errorprone to v5.1.0 (#1562)
renovate[bot] Mar 1, 2026
b9c5869
Prepare for javac AST changes (#1561)
cushon Mar 1, 2026
f44d16d
Update versions.errorprone to v2.47.0 (#1526)
renovate[bot] Mar 1, 2026
7b8915b
Update error-prone monorepo to v2.48.0 (#1552)
renovate[bot] Mar 2, 2026
d70136c
Add .gitattribute file (#1549)
YutongZhuu Mar 3, 2026
de66c7e
Update dependency org.plumelib:reflection-util to v1.1.6 (#1568)
renovate[bot] Mar 6, 2026
bf2f945
Add caching for @UnderInitialization AnnotationMirrors (#1550)
nhioe Mar 6, 2026
fe28e48
Bump com.google.errorprone:error_prone_core in /docs/examples/errorpr…
dependabot[bot] Mar 7, 2026
5b2391a
Bump com.google.errorprone:error_prone_core in /docs/examples/jspecif…
dependabot[bot] Mar 7, 2026
514ed04
Bump com.google.errorprone:error_prone_core in /docs/examples/nullawa…
dependabot[bot] Mar 7, 2026
70ee1bc
CI: require sanity for otherjdks (#1591)
wmdietl Mar 13, 2026
1df38e2
Bump net.ltgt.errorprone in /docs/examples/errorprone (#1582)
dependabot[bot] Mar 14, 2026
6e26236
Bump net.ltgt.errorprone from 4.4.0 to 5.1.0 in /docs/examples/jspeci…
dependabot[bot] Mar 14, 2026
ce2e36e
Bump com.uber.nullaway:nullaway in /docs/examples/nullaway (#1584)
dependabot[bot] Mar 14, 2026
dbe1152
Bump net.ltgt.errorprone from 4.4.0 to 5.1.0 in /docs/examples/nullaw…
dependabot[bot] Mar 14, 2026
010150d
Update dependency bazelbuild/bazel to v9.0.1 (#1588)
renovate[bot] Mar 14, 2026
1ece47a
Update dependency org.projectlombok:lombok to v1.18.44 (#1589)
renovate[bot] Mar 14, 2026
995b40c
Upgrade to CF gradle plugin 1.0.2 and use local CF in CI (#1593)
wmdietl Mar 14, 2026
5cc36e0
Update CI docs for GitHub Actions (#1586)
nhioe Mar 14, 2026
d958321
Update plugin com.diffplug.spotless to v8.4.0 (#1598)
renovate[bot] Mar 20, 2026
c2b9a86
Use `cfVersion` instead of `cfLocal` for upgraded plume-lib projects …
wmdietl Mar 20, 2026
8a07ca2
Merge branch 'master' into manual-profiler
wmdietl Mar 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto

# Denote all files that are truly binary and should not be modified.
*.jar binary
*.class binary
*.png binary
*.jpg binary
*.pdf binary

*.bat text eol=crlf
24 changes: 24 additions & 0 deletions .github/renovate.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@
],
"timezone": "America/Los_Angeles",
"packageRules": [
{
"matchPackagePatterns": ["^adoptium/temurin\\d+-binaries$"],
"ignoreUnstable": false
},
{
"matchPackageNames": ["com.amazonaws:aws-java-sdk-bom"],
"schedule": ["before 3am on the first day of the month"]
Expand All @@ -18,5 +22,25 @@
"matchPackageNames": ["org.apache.spark:spark-sql_2.12"],
"enabled": false
}
],
"regexManagers": [
{
"description": "Update USE_BAZEL_VERSION in GitHub Actions",
"fileMatch": ["^\\.github/workflows/.*\\.yml$"],
"matchStrings": ["USE_BAZEL_VERSION: \"(?<currentValue>.*?)\""],
"datasourceTemplate": "github-releases",
"depNameTemplate": "bazelbuild/bazel"
},
{
"description": "Update JDK_EA_BUILD in GitHub Actions",
"fileMatch": ["^\\.github/workflows/ci\\.yml$"],
"matchStrings": [
"JDK_EA_MAJOR:\\s+\"(?<major>\\d+)\"[\\s\\S]*?JDK_EA_BUILD:\\s+\"(?<currentValue>\\d+)\""
],
"datasourceTemplate": "github-releases",
"versioningTemplate": "loose",
"depNameTemplate": "adoptium/temurin{{{major}}}-binaries",
"extractVersionTemplate": "^jdk-\\d+\\+(?<version>\\d+)"
}
]
}
53 changes: 29 additions & 24 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
# Basic sanity tests on JDK 21.
sanity:
name: ${{ matrix.script }} on JDK ${{ matrix.java_version }}
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
permissions:
contents: read
strategy:
Expand All @@ -26,8 +26,9 @@ jobs:
java_version: [21]
env:
JAVA_VERSION: ${{ matrix.java_version }}
USE_BAZEL_VERSION: "9.0.1"
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- name: Set up JDK ${{ matrix.java_version }}
uses: actions/setup-java@v5
with:
Expand All @@ -37,10 +38,10 @@ jobs:
# Configure Gradle for optimal use in GitHub Actions, including caching of downloaded dependencies.
# See: https://github.com/gradle/actions/blob/main/setup-gradle/README.md
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4.4.3
uses: gradle/actions/setup-gradle@v5.0.2

- name: Setup Bazel
uses: bazel-contrib/setup-bazel@0.15.0
uses: bazel-contrib/setup-bazel@0.18.0
if: ${{ matrix.script == 'cftests-nonjunit' }}
with:
# Avoid downloading Bazel every time.
Expand All @@ -56,14 +57,15 @@ jobs:
# The remaining tests for JDK 21. Separate from `sanity` to allow parallelism with `otheros`.
remainder:
name: ${{ matrix.script }} on JDK ${{ matrix.java_version }}
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
# Don't depend on sanity jobs, to have more parallelism.
# TODO: cancel these jobs if sanity fails.
# needs: sanity
permissions:
contents: read
strategy:
fail-fast: true
# Run all `remainder` tasks, even if one fails.
fail-fast: false
matrix:
# No need to run 'cftests-junit-jdk21' on JDK 21.
script: ['typecheck-part1', 'typecheck-part2',
Expand All @@ -75,11 +77,11 @@ jobs:
env:
JAVA_VERSION: ${{ matrix.java_version }}
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
if: ${{ matrix.script != 'misc' }}
with:
fetch-depth: 1
- uses: actions/checkout@v5
- uses: actions/checkout@v6
if: ${{ matrix.script == 'misc' }}
with:
# CI diff needs more history - 0 fetches all history.
Expand All @@ -93,7 +95,7 @@ jobs:
# Configure Gradle for optimal use in GitHub Actions, including caching of downloaded dependencies.
# See: https://github.com/gradle/actions/blob/main/setup-gradle/README.md
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4.4.3
uses: gradle/actions/setup-gradle@v5.0.2
# Setup for misc tests
- name: Install misc dependencies
if: ${{ matrix.script == 'misc' }}
Expand All @@ -112,10 +114,15 @@ jobs:

otherjdks:
name: ${{ matrix.script }} on JDK ${{ matrix.java.version }}
runs-on: ubuntu-latest
needs: sanity
runs-on: ubuntu-24.04
needs: [sanity, remainder]
permissions:
contents: read
env:
JAVA_VERSION: ${{ matrix.java.version }}
USE_BAZEL_VERSION: "9.0.1"
JDK_EA_MAJOR: "26"
JDK_EA_BUILD: "35"
strategy:
fail-fast: true
matrix:
Expand All @@ -126,12 +133,13 @@ jobs:
'daikon-part1', 'daikon-part2',
'misc']
# JDK 21 used by `sanity` and `remainder` before.
# Keep all LTS versions and the newest non-LTS version.
# `experimental` versions use the $version compiler, but run on JDK 21.
java: [{version: '8', experimental: false},
{version: '11', experimental: false},
{version: '17', experimental: false},
{version: '24', experimental: false},
{version: '25.0.0-ea.36.0.ea', experimental: true}]
{version: '25', experimental: false},
{version: 'ea', experimental: true}]
exclude:
# JDK 8 does not allow toolchains, so testing 'cftests-junit-jdk21' is unnecessary.
- script: 'cftests-junit-jdk21'
Expand Down Expand Up @@ -173,18 +181,15 @@ jobs:
java: {version: '17', experimental: false}
- script: 'daikon-part2'
java: {version: '17', experimental: false}

env:
JAVA_VERSION: ${{ matrix.java.version }}
continue-on-error: ${{ matrix.java.experimental }}
steps:
- name: Check out sources
uses: actions/checkout@v5
uses: actions/checkout@v6
if: ${{ matrix.script != 'misc' }}
with:
fetch-depth: 1
- name: Check out sources with all history
uses: actions/checkout@v5
uses: actions/checkout@v6
if: ${{ matrix.script == 'misc' }}
with:
# CI diff needs more history - 0 fetches all history.
Expand All @@ -199,15 +204,15 @@ jobs:
uses: actions/setup-java@v5
with:
# Install the requested JDK second, to make it the default on which everything else runs.
java-version: ${{ matrix.java.version }}
java-version: ${{ matrix.java.version == 'ea' && format('{0}.0.0-ea.{1}.0.ea', env.JDK_EA_MAJOR, env.JDK_EA_BUILD) || matrix.java.version }}
distribution: 'temurin'
- name: Inject JAVA_HOME_21_64 into `gradle.properties` to always use JDK 21 for Gradle
run: mkdir ~/.gradle && echo "org.gradle.java.home=$JAVA_HOME_21_X64" >> ~/.gradle/gradle.properties

# Configure Gradle for optimal use in GitHub Actions, including caching of downloaded dependencies.
# See: https://github.com/gradle/actions/blob/main/setup-gradle/README.md
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4.4.3
uses: gradle/actions/setup-gradle@v5.0.2
- name: Install misc dependencies
if: ${{ matrix.script == 'misc' }}
run: |
Expand All @@ -221,7 +226,7 @@ jobs:
texlive-font-utils texlive-fonts-recommended texlive-latex-recommended
pip install black flake8 html5validator
- name: Setup Bazel
uses: bazel-contrib/setup-bazel@0.15.0
uses: bazel-contrib/setup-bazel@0.18.0
if: ${{ matrix.script == 'cftests-nonjunit' }}
with:
# Avoid downloading Bazel every time.
Expand All @@ -239,7 +244,7 @@ jobs:
# Set the JDK version to use, allowing us to e.g. run Java 25 while gradle does not work
# on Java 25 yet.
env:
ORG_GRADLE_PROJECT_useJdkVersion: ${{ matrix.java.version }}
ORG_GRADLE_PROJECT_useJdkVersion: ${{ matrix.java.version == 'ea' && env.JDK_EA_MAJOR || matrix.java.version }}

# Sanity tests on Windows and MacOS.
otheros:
Expand All @@ -256,7 +261,7 @@ jobs:
env:
JAVA_VERSION: ${{ matrix.java_version }}
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- name: Set up JDK ${{ matrix.java_version }}
uses: actions/setup-java@v5
with:
Expand All @@ -266,7 +271,7 @@ jobs:
# Configure Gradle for optimal use in GitHub Actions, including caching of downloaded dependencies.
# See: https://github.com/gradle/actions/blob/main/setup-gradle/README.md
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4.4.3
uses: gradle/actions/setup-gradle@v5.0.2

- name: Install coreutils on MacOS
if: ${{ matrix.os == 'macos-latest' }}
Expand Down
65 changes: 63 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,66 @@ Please see the EISOP Checker Framework manual
The history of releases and changes is in file
[docs/CHANGELOG.md](docs/CHANGELOG.md).

Documentation for Checker Framework developers
is in directory [docs/developer/](docs/developer/).
See below for EISOP Checker Framework development notes.

## Quick Start Guide

1. Clone this repository in some empty directory:
```
git clone git@github.com:eisop/checker-framework.git
cd checker-framework
```

2. Build the EISOP Checker Framework (requires JDK 8+):
```
./gradlew assemble
```
This will clone the required [eisop/jdk](https://github.com/eisop/jdk) project to a sibling directory called `jdk` and build everything without running the test suite.
There will be warnings about missing javadoc, but overall the build should be successful.

3. Run a simple test:
```
./checker/bin/javac -processor nullness docs/examples/NullnessExampleWithWarnings.java
```
This 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
```

There is a lot more to explore!

Please see the EISOP Checker Framework manual
([HTML](https://eisop.github.io/cf/manual/),
[PDF](https://eisop.github.io/cf/manual/checker-framework-manual.pdf))
to learn about all the different type systems, how to integrate them into your build system, and much more.

## Developers

Developer notes are in [docs/developer](docs/developer),
including a [Developer Manual](https://htmlpreview.github.io/?https://github.com/eisop/checker-framework/blob/master/docs/developer/developer-manual.html).

Import the EISOP Checker Framework source folder into your IDE of choice.
See the [IDE configuration](https://htmlpreview.github.io/?https://github.com/eisop/checker-framework/blob/master/docs/developer/developer-manual.html#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](https://deepwiki.com/eisop/checker-framework/).

Contributions are always welcome!
For guidelines, see the [Contributing summary](CONTRIBUTING.md) and the
[Contributing](https://eisop.github.io/cf/manual/#contributing)
section in the manual.
Loading