Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for EISOP fork #275

Open
koppor opened this issue Jun 17, 2024 · 3 comments
Open

Add support for EISOP fork #275

koppor opened this issue Jun 17, 2024 · 3 comments

Comments

@koppor
Copy link
Contributor

koppor commented Jun 17, 2024

At

dep.getName().equals("checker") && dep.getGroup().equals("org.checkerframework")
, it seems that org.checkerframework is hardcoded.

What if I would like to use The EISOP Checker Framework.

My reason: It seems that that fork supports jspecify well enough (source: https://github.com/jspecify/jspecify-reference-checker?tab=readme-ov-file#relationship-to-checker-framework-and-eisop).


It would also be nice, if there was a short howto to use the jspecify plugin

https://github.com/jspecify/jspecify-reference-checker?tab=readme-ov-file#the-jspecify-reference-checker

@kelloggm
Copy link
Owner

it seems that org.checkerframework is hardcoded.

It is, but the line you indicated in the issue is not the relevant one. Instead, the important one is here:

private final static def CHECKER_DEPENDENCY = "org.checkerframework:checker:${LIBRARY_VERSION}"

It would be possible to make the default Checker Framework dependency configurable by adding an option to the plugin's extension, which would allow you to set it to use the EISOP version. However, that seems non-idiomatic to me: it would require a user like you who wants to use the EISOP version of the CF to set a custom flag rather than just replacing a dependency. Unfortunately, I think this non-idiomaticness is unavoidable, because one of the primary functions of this plugin is to automatically add a dependency on the Checker Framework to the project to which it is applied.

Given the complexity of the use case that you have, it might be easier for you to write custom build logic yourself rather than going through this plugin: if you're not using the main org.checkerframework version of the CF, this plugin doesn't offer much.

@wmdietl
Copy link
Collaborator

wmdietl commented Jun 17, 2024

The gradle plugin works nicely with the EISOP version.
We will improve the instructions for how to do this eisop/checker-framework#785
I currently don't see any special treatment we would need in the gradle plugin.

@alexvas
Copy link

alexvas commented Jun 25, 2024

@kelloggm actually these instructions are not quite correct. When specifying

 ext {
    versions = [
        eisopVersion: '3.42.0-eisop1',
    ]
}

dependencies {
    compileOnly "io.github.eisop:checker-qual:${versions.eisopVersion}"
    testCompileOnly "io.github.eisop:checker-qual:${versions.eisopVersion}"
    checkerFramework "io.github.eisop:checker:${versions.eisopVersion}"
}

(as in instructions) one gets at STDOUT:

No explicit dependency on the Checker Framework found, using default version 3.44.0

Checker plugin version is 0.6.40

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants