typetools / typetools/checker-framework
org.checkerframework.framework should be independent of org.checkerframework.common
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 1.1k
- Forks
- 440
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 134
Description
The framework package should be independent of the common package. However, there are currently imports of the latter into the former, breaking the intended separation between the two packages.
This issue can be resolved by either breaking the dependency (preferred), moving something from the framework to common (also good), or moving the dependency into the framework package (not good).
For an under-approximation, in checker-framework/framework/src/org/checkerframework/framework run:
grep -R "import org.checkerframework.common" .
to get something like:
./type/GeneralAnnotatedTypeFactory.java:import org.checkerframework.common.basetype.BaseTypeChecker;
./type/AnnotatedTypeFactory.java:import org.checkerframework.common.basetype.BaseTypeChecker;
./type/AnnotatedTypeFactory.java:import org.checkerframework.common.reflection.DefaultReflectionResolver;
./type/AnnotatedTypeFactory.java:import org.checkerframework.common.reflection.MethodValAnnotatedTypeFactory;
./type/AnnotatedTypeFactory.java:import org.checkerframework.common.reflection.MethodValChecker;
./type/AnnotatedTypeFactory.java:import org.checkerframework.common.reflection.ReflectionResolver;
./type/AnnotationClassLoader.java:import org.checkerframework.common.basetype.BaseTypeChecker;
./type/GenericAnnotatedTypeFactory.java:import org.checkerframework.common.basetype.BaseTypeChecker;
./type/DefaultTypeHierarchy.java:import org.checkerframework.common.basetype.BaseTypeChecker;
./util/DependentTypes.java:import org.checkerframework.common.basetype.BaseTypeChecker;
./util/PurityAnnotatedTypeFactory.java:import org.checkerframework.common.basetype.BaseAnnotatedTypeFactory;
./util/PurityAnnotatedTypeFactory.java:import org.checkerframework.common.basetype.BaseTypeChecker;
./util/PurityChecker.java:import org.checkerframework.common.basetype.BaseTypeChecker;
./source/SourceChecker.java:import org.checkerframework.common.basetype.BaseTypeChecker;
./flow/CFAbstractAnalysis.java:import org.checkerframework.common.basetype.BaseTypeChecker;
./flow/CFCFGBuilder.java:import org.checkerframework.common.basetype.BaseTypeChecker;
./flow/CFAbstractTransfer.java:import org.checkerframework.common.basetype.BaseTypeChecker;
./flow/CFAnalysis.java:import org.checkerframework.common.basetype.BaseTypeChecker;
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in checker-framework/framework/src/org/checkerframework/framework and run the issue's grep command to enumerate remaining imports. Inspect the listed classes, especially under type, util, source, and flow, to trace each dependency and choose a separation approach. Done means framework no longer imports org.checkerframework.common; rerun grep to verify.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- devtools
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100