Skip to content

Added Impurity Annotations for Defects4J#99

Open
varuniy wants to merge 9 commits intomainfrom
impurity-defects4j
Open

Added Impurity Annotations for Defects4J#99
varuniy wants to merge 9 commits intomainfrom
impurity-defects4j

Conversation

@varuniy
Copy link
Copy Markdown
Collaborator

@varuniy varuniy commented Apr 8, 2026

Added impurity annotations for Defects4J so that we can run the full capabilities of GRT with Defects4J.

@varuniy
Copy link
Copy Markdown
Collaborator Author

varuniy commented Apr 8, 2026

@mernst Ready for review.

@mernst
Copy link
Copy Markdown
Member

mernst commented Apr 9, 2026

Do you still have the edits you made to buildfiles?
It would be very helpful to commit those.
Even if someone else needs to adjust them in the future, they will be a good starting point.

@mernst mernst assigned varuniy and unassigned mernst Apr 9, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 20, 2026

📝 Walkthrough

Walkthrough

The PR makes two factual changes. README.md was rewritten with Windows-style CRLF line endings and a trailing period was removed from a paper-title markdown link. A new file, defects4j-jars/BUILD_MATRIX.md, was added documenting the Defects4J jar build matrix: allowed Bug ID group formats, a recipe table (project, Bug ID groups, build system, build command, output jar patterns, notes), and per-recipe build-file modifications and commands (including classpath edits, Java/javac adjustments, packaging/manifest changes, URL fixes, and other project-specific instructions).

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch impurity-defects4j

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@defects4j-jars/BUILD_MATRIX.md`:
- Line 41: The note in BUILD_MATRIX.md for the Jsoup recipe references the wrong
project path "build/defects4j-src/JacksonXml-<BUG_ID>f"; update this to
"build/defects4j-src/Jsoup-<BUG_ID>f" so the instruction about editing
`maven-build.xml` (the build.classpath pathelement for
`scripts/build/checker-framework/checker/dist/checker-qual.jar`) targets the
Jsoup project; ensure the sentence and any other occurrences of
"JacksonXml-<BUG_ID>f" in that Jsoup row are replaced with "Jsoup-<BUG_ID>f".
- Line 50: Update BUILD_MATRIX.md to replace the hardcoded
'/path/to/checker-qual.jar' placeholder with a repo-relative variable and show a
one-line definition or clearly mark it as a placeholder; specifically, in the
instructions that add a compileJava task to build.gradle (reference:
compileJava) and properties added to build-ant.xml (reference:
checker.qual.path, bnd.core.classpath, jar.core.path, bndCore target), change
the path to something like a repo-relative variable (e.g.,
${REPO_ROOT}/libs/checker-qual.jar) or add a one-line declaration above the
steps stating CHECKER_QUAL_PATH=<repo-relative-path> and then use that variable
name in the compileJava classpath and the checker.qual.path property so readers
know to set it before building.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 84002c05-e589-43be-b414-55e39c89cc42

📥 Commits

Reviewing files that changed from the base of the PR and between 58f13a0 and d267890.

⛔ Files ignored due to path filters (298)
  • defects4j-jars/Chart/Chart-b1.jar is excluded by !**/*.jar
  • defects4j-jars/Chart/Chart-b10.jar is excluded by !**/*.jar
  • defects4j-jars/Chart/Chart-b11.jar is excluded by !**/*.jar
  • defects4j-jars/Chart/Chart-b12.jar is excluded by !**/*.jar
  • defects4j-jars/Chart/Chart-b13.jar is excluded by !**/*.jar
  • defects4j-jars/Chart/Chart-b14.jar is excluded by !**/*.jar
  • defects4j-jars/Chart/Chart-b15.jar is excluded by !**/*.jar
  • defects4j-jars/Chart/Chart-b16.jar is excluded by !**/*.jar
  • defects4j-jars/Chart/Chart-b17.jar is excluded by !**/*.jar
  • defects4j-jars/Chart/Chart-b18.jar is excluded by !**/*.jar
  • defects4j-jars/Chart/Chart-b19.jar is excluded by !**/*.jar
  • defects4j-jars/Chart/Chart-b2.jar is excluded by !**/*.jar
  • defects4j-jars/Chart/Chart-b20.jar is excluded by !**/*.jar
  • defects4j-jars/Chart/Chart-b21.jar is excluded by !**/*.jar
  • defects4j-jars/Chart/Chart-b22.jar is excluded by !**/*.jar
  • defects4j-jars/Chart/Chart-b23.jar is excluded by !**/*.jar
  • defects4j-jars/Chart/Chart-b24.jar is excluded by !**/*.jar
  • defects4j-jars/Chart/Chart-b25.jar is excluded by !**/*.jar
  • defects4j-jars/Chart/Chart-b26.jar is excluded by !**/*.jar
  • defects4j-jars/Chart/Chart-b3.jar is excluded by !**/*.jar
  • defects4j-jars/Chart/Chart-b4.jar is excluded by !**/*.jar
  • defects4j-jars/Chart/Chart-b5.jar is excluded by !**/*.jar
  • defects4j-jars/Chart/Chart-b6.jar is excluded by !**/*.jar
  • defects4j-jars/Chart/Chart-b7.jar is excluded by !**/*.jar
  • defects4j-jars/Chart/Chart-b8.jar is excluded by !**/*.jar
  • defects4j-jars/Chart/Chart-b9.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b1.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b10.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b11.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b12.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b13.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b14.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b15.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b16.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b17.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b18.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b19.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b2.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b20.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b21.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b22.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b23.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b24.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b25.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b26.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b27.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b28.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b29.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b3.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b30.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b31.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b32.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b33.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b34.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b35.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b36.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b37.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b38.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b39.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b4.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b40.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b5.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b7.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b8.jar is excluded by !**/*.jar
  • defects4j-jars/Cli/Cli-b9.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b1.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b10.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b100.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b101.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b102.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b103.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b104.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b105.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b106.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b107.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b108.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b109.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b11.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b110.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b111.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b112.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b113.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b114.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b115.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b116.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b117.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b118.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b119.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b12.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b120.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b121.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b122.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b123.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b124.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b125.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b126.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b127.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b128.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b129.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b13.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b130.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b131.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b132.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b133.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b134.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b135.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b136.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b137.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b138.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b139.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b14.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b140.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b141.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b142.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b143.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b144.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b145.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b146.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b147.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b148.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b149.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b15.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b150.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b151.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b152.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b153.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b154.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b155.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b156.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b157.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b158.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b159.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b16.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b160.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b161.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b162.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b163.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b164.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b165.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b166.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b167.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b168.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b169.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b17.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b170.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b171.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b172.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b173.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b174.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b175.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b176.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b18.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b19.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b2.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b20.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b21.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b22.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b23.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b24.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b25.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b26.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b27.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b28.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b29.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b3.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b30.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b31.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b32.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b33.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b34.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b35.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b36.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b37.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b38.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b39.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b4.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b40.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b41.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b42.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b43.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b44.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b45.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b46.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b47.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b48.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b49.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b5.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b50.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b51.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b52.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b53.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b54.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b55.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b56.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b57.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b58.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b59.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b6.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b60.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b61.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b62.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b64.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b65.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b66.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b67.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b68.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b69.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b7.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b70.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b71.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b72.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b73.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b74.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b75.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b76.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b77.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b78.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b79.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b8.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b80.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b81.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b82.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b83.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b84.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b85.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b86.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b87.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b88.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b89.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b9.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b90.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b91.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b92.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b94.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b95.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b96.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b97.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b98.jar is excluded by !**/*.jar
  • defects4j-jars/Closure/Closure-b99.jar is excluded by !**/*.jar
  • defects4j-jars/Codec/Codec-b1.jar is excluded by !**/*.jar
  • defects4j-jars/Codec/Codec-b10.jar is excluded by !**/*.jar
  • defects4j-jars/Codec/Codec-b11.jar is excluded by !**/*.jar
  • defects4j-jars/Codec/Codec-b12.jar is excluded by !**/*.jar
  • defects4j-jars/Codec/Codec-b13.jar is excluded by !**/*.jar
  • defects4j-jars/Codec/Codec-b14.jar is excluded by !**/*.jar
  • defects4j-jars/Codec/Codec-b15.jar is excluded by !**/*.jar
  • defects4j-jars/Codec/Codec-b16.jar is excluded by !**/*.jar
  • defects4j-jars/Codec/Codec-b17.jar is excluded by !**/*.jar
  • defects4j-jars/Codec/Codec-b18.jar is excluded by !**/*.jar
  • defects4j-jars/Codec/Codec-b2.jar is excluded by !**/*.jar
  • defects4j-jars/Codec/Codec-b3.jar is excluded by !**/*.jar
  • defects4j-jars/Codec/Codec-b4.jar is excluded by !**/*.jar
  • defects4j-jars/Codec/Codec-b5.jar is excluded by !**/*.jar
  • defects4j-jars/Codec/Codec-b6.jar is excluded by !**/*.jar
  • defects4j-jars/Codec/Codec-b7.jar is excluded by !**/*.jar
  • defects4j-jars/Codec/Codec-b8.jar is excluded by !**/*.jar
  • defects4j-jars/Codec/Codec-b9.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b1.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b10.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b11.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b12.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b13.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b14.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b15.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b16.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b17.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b18.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b19.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b2.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b20.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b21.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b22.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b23.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b24.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b25.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b26.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b27.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b28.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b3.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b4.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b5.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b6.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b7.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b8.jar is excluded by !**/*.jar
  • defects4j-jars/Collections/Collections-b9.jar is excluded by !**/*.jar
  • defects4j-jars/Compress/Compress-b1.jar is excluded by !**/*.jar
  • defects4j-jars/Compress/Compress-b10.jar is excluded by !**/*.jar
  • defects4j-jars/Compress/Compress-b11.jar is excluded by !**/*.jar
  • defects4j-jars/Compress/Compress-b12.jar is excluded by !**/*.jar
  • defects4j-jars/Compress/Compress-b13.jar is excluded by !**/*.jar
  • defects4j-jars/Compress/Compress-b14.jar is excluded by !**/*.jar
  • defects4j-jars/Compress/Compress-b15.jar is excluded by !**/*.jar
  • defects4j-jars/Compress/Compress-b16.jar is excluded by !**/*.jar
  • defects4j-jars/Compress/Compress-b17.jar is excluded by !**/*.jar
  • defects4j-jars/Compress/Compress-b18.jar is excluded by !**/*.jar
  • defects4j-jars/Compress/Compress-b19.jar is excluded by !**/*.jar
  • defects4j-jars/Compress/Compress-b2.jar is excluded by !**/*.jar
  • defects4j-jars/Compress/Compress-b20.jar is excluded by !**/*.jar
📒 Files selected for processing (2)
  • README.md
  • defects4j-jars/BUILD_MATRIX.md

Comment thread defects4j-jars/BUILD_MATRIX.md Outdated
Comment thread defects4j-jars/BUILD_MATRIX.md Outdated
@varuniy
Copy link
Copy Markdown
Collaborator Author

varuniy commented Apr 20, 2026

@mernst Ready for re-review. I've added a README explaining all of the changes necessary to build the jarfiles after annotation. I believe this should be enough.

@varuniy varuniy assigned mernst and unassigned varuniy Apr 20, 2026
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@defects4j-jars/BUILD_MATRIX.md`:
- Line 22: Add a short note or new subsection in BUILD_MATRIX.md explaining
intentionally skipped Bug IDs: list the project names and omitted IDs (Cli: 6;
Lang: 2, 18, 25, 48; Time: 21) and state whether they are known-broken,
unsupported, or untestable; update the existing table row for Cli/Lang/Time or
add a footnote marker next to those project entries that references this
explanation so readers understand why those bug IDs are missing.
- Around line 19-53: The table currently instructs adding a pathelement pointing
to "scripts/build/checker-framework/checker/dist/checker-qual.jar" which will be
resolved relative to each project's build file and thus fail; update those
instructions to use the correct relative path
"../../../scripts/build/checker-framework/checker/dist/checker-qual.jar" when
telling users to add the pathelement in build.xml / maven-build.xml /
buildjars.sh (search for the literal
"scripts/build/checker-framework/checker/dist/checker-qual.jar" in the
document), or alternatively instruct users to export an environment variable
CHECKERFRAMEWORK and reference the jar as
"${env.CHECKERFRAMEWORK}/checker/dist/checker-qual.jar" in the build files so
project-local resolution succeeds.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 17ca41e6-98e2-4bf8-b48c-7758753a7117

📥 Commits

Reviewing files that changed from the base of the PR and between d267890 and 1f29b12.

📒 Files selected for processing (1)
  • defects4j-jars/BUILD_MATRIX.md

Comment on lines +19 to +53
| Project ID | Bug IDs | Build System | Build Command(s) | Output Jar Pattern | Notes |
| --- | --- | --- | --- | --- | --- |
| Chart | 1-26 | `ant` | `ant -f build.xml compile` | `Chart-<BUG_ID>f/jfreechart-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/Chart-<BUG_ID>f`, edit `ant/build.xml` before compiling: in the path with id `build.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`; in the `compile` target, set javac source and target to `1.6`. Then run the provided build command from the `ant` subdirectory. |
| Cli | 1-5,7-21 | `ant` | `ant -f build.xml jar` | `Cli-<BUG_ID>f/target/commons-cli-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/Cli-<BUG_ID>f`, edit `build.xml` before compiling: in the path with id `compile.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`; in the `jar` target, delete the dependency on the `test` target. Then run the provided build command. |
| Cli | 22 | `ant` | `ant -f build.xml -Djunit.skipped=true jar` | `Cli-<BUG_ID>f/target/commons-cli-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/Cli-<BUG_ID>f` edit `build.xml` before compiling: in the path with id `compile.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`; in the `package` target, delete the line `manifest=..`. Then run the provided build command. |
| Cli | 23-40 | `ant` | `ant -f build.xml -Djunit.skipped=true jar` | `Cli-<BUG_ID>f/target/commons-cli-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/Cli-<BUG_ID>f` edit `maven-build.xml` before compiling: in the path with id `compile.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`; in the `package` target, delete the line `manifest=..` and any `<manifest>` elements (if present). Then run the provided build command. |
| Closure | 1-83,107-133,154-176 | `ant` | `ant -f build.xml jar` | `Closure-<BUG_ID>f/build/compiler-*.jar` | Make sure you are using Java 11. First, before annotating, add `build/defects4j-src/Closure-<BUG_ID>f/lib/json.jar` to the colon-separated classpath string (the one containing the JUnit jar and `$CLASS_DIR`) in `buildjars.sh`, inserting it between them with `:` as the separator. Then, from `build/defects4j-src/Closure-<BUG_ID>f` edit `build.xml` before compiling: in the path with id `srcclasspath.path`, add a new pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`. Then run the provided build command. |
| Closure | 84-101,136-153 | `ant` | `ant -f build.xml jar` | `Closure-<BUG_ID>f/build/compiler-*.jar` | Make sure you are using Java 11. First, before annotating, add `build/defects4j-src/Closure-<BUG_ID>f/lib/json.jar` to the colon-separated classpath string (the one containing the JUnit jar and `$CLASS_DIR`) in `buildjars.sh`, inserting it between them with `:` as the separator. Then, from `build/defects4j-src/Closure-<BUG_ID>f` edit `build.xml` before compiling: in the path with id `classpath.path`, add a new pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`. Then run the provided build command. |
| Closure | 102-106,134-135 | `ant` | `ant -f build.xml jar` | `Closure-<BUG_ID>f/build/compiler-*.jar` | Make sure you are using Java 11. First, before annotating, add `build/defects4j-src/Closure-<BUG_ID>f/lib/json.jar` to the colon-separated classpath string (the one containing the JUnit jar and `$CLASS_DIR`) in `buildjars.sh`, inserting it between them with `:` as the separator. Then, from `build/defects4j-src/Closure-<BUG_ID>f` edit `build.xml` before compiling: in the path with id `classpath.path`, add a new pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`; in the `jar` target, remove the dependency on the `apt` target. Then run the provided build command. |
| Codec | 1-16 | `ant` | `ant -f build.xml jar` | `Codec-<BUG_ID>f/dist/commons-codec-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/Codec-<BUG_ID>f` edit `build.xml` before compiling: in the path with id `compile.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`. Then run the provided build command. |
| Codec | 17-18 | `ant` | `ant -f build.xml -Djunit.skipped=true jar` | `Codec-<BUG_ID>f/target/commons-codec-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/Codec-<BUG_ID>f` edit `maven-build.xml` before compiling: in the path with id `build.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`; in the `package` target, delete the line `manifest=..` and any `<manifest>` elements. Then run the provided build command. |
| Collections | 1-21 | `ant` | `ant -f build.xml jar` | `Collections-<BUG_ID>f/build/commons-collections-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/Collections-<BUG_ID>f` edit `build.xml` before compiling: before the `compile` target, add a `<path id="compile.classpath">` block that contains a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`. Reference this block inside the `javac` element within the `compile` target via `<classpath refid="compile.classpath"/>`. Then run the provided build command. |
| Collections | 22-28 | `ant` | `ant -f build.xml jar` | `Collections-<BUG_ID>f/target/commons-collections-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/Collections-<BUG_ID>f` edit `build.xml` before compiling: in the path with id `compile.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`. Then run the provided build command. |
| Compress | 1-47 | `ant` | `ant -f build.xml -Djunit.skipped=true jar` | `Compress-<BUG_ID>f/target/commons-compress-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/Compress-<BUG_ID>f` edit `maven-build.xml` before compiling: in the path with id `build.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`; in the `package` target, delete the line `manifest=..` and any `<manifest>` elements. Then run the provided build command. |
| Csv | 1-16 | `ant` | `ant -f build.xml -Djunit.skipped=true jar` | `Csv-<BUG_ID>f/target/commons-csv-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/Csv-<BUG_ID>f` edit `maven-build.xml` before compiling: in the path with id `build.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`; in the `package` target, delete the line `manifest=..` and any `<manifest>` elements. Then run the provided build command. |
| Gson | 1-18 | `ant` | `ant -f build.xml -Djunit.skipped=true jar` | `Gson-<BUG_ID>f/target/gson-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/Gson-<BUG_ID>f/gson/` edit `maven-build.xml` before compiling: in the path with id `build.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`; in the `package` target, delete the line `manifest=..` and any `<manifest>` elements (if they exist). Then run the provided build command. |
| JacksonCore | 1-26 | `ant` | `ant -f build.xml -Djunit.skipped=true jar` | `JacksonCore-<BUG_ID>f/target/jackson-core-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/JacksonCore-<BUG_ID>f` edit `maven-build.xml` before compiling: in the path with id `build.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`. Then run the provided build command. |
| JacksonDatabind | 1 | `ant` | `ant -f build.xml -Djunit.skipped=true jar` | `JacksonDatabind-<BUG_ID>f/target/jackson-databind-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/JacksonDatabind-<BUG_ID>f` edit `maven-build.xml` before compiling: in the path with id `build.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`; in the `package` target, delete the line `manifest=..` and any `<manifest>` elements. Then run the provided build command. |
| JacksonDatabind | 2-74,76-107,109-112 | `ant` | `ant -f build.xml -Djunit.skipped=true jar` | `JacksonDatabind-<BUG_ID>f/target/jackson-databind-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/JacksonDatabind-<BUG_ID>f` edit `maven-build.xml` before compiling: in the path with id `build.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`. Then run the provided build command. |
| JacksonDatabind | 75 | `ant` | `ant -f build.xml -Djunit.skipped=true jar` | `JacksonDatabind-<BUG_ID>f/target/jackson-databind-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/JacksonDatabind-<BUG_ID>f` edit `maven-build.xml` before compiling: in the path with id `build.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`; in the `get-deps` target, edit the url src link for the Jackson Core dependency to be `"https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/2.8.8/jackson-core-2.8.8.jar"`. Then run the provided build command. |
| JacksonDatabind | 108 | `ant` | `ant -f build.xml -Djunit.skipped=true jar` | `JacksonDatabind-<BUG_ID>f/target/jackson-databind-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/JacksonDatabind-<BUG_ID>f` edit `maven-build.xml` before compiling: in the path with id `build.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`; in the `get-deps` target, edit the url src link for the Jackson Annotations dependency to be `"https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.10.0/jackson-annotations-2.10.0.jar"` and the url src link for the Jackson Core dependency to be `"https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/2.10.0/jackson-core-2.10.0.jar"`. Then run the provided build command. |
| JacksonXml | 1-6 | `ant` | `ant -f build.xml -Djunit.skipped=true jar` | `JacksonXml-<BUG_ID>f/target/jackson-dataformat-xml-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/JacksonXml-<BUG_ID>f` edit `maven-build.xml` before compiling: in the path with id `build.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`. Then run the provided build command. |
| Jsoup | 1-14 | `ant` | `ant -f build.xml -Djunit.skipped=true jar` | `Jsoup-<BUG_ID>f/target/jsoup-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/Jsoup-<BUG_ID>f` edit `maven-build.xml` before compiling: in the path with id `build.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`. Then run the provided build command. |
| Jsoup | 15-93 | `ant` | `ant -f build.xml -Djunit.skipped=true jar` | `Jsoup-<BUG_ID>f/target/jsoup-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/Jsoup-<BUG_ID>f` edit `maven-build.xml` before compiling: in the path with id `build.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`; in the `package` target, delete the line `manifest=..` and any `<manifest>` elements. Then run the provided build command. |
| JxPath | 1-22 | `ant` | `ant -f build.xml jar` | `JxPath-<BUG_ID>f/target/commons-jxpath-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/JxPath-<BUG_ID>f` edit `build.xml` before compiling: in the `jar` target, remove the dependency on `test`. Additionally, copy the `checker-qual.jar` located at `scripts/build/checker-framework/checker/dist/checker-qual.jar` into `build/defects4j-src/JxPath-<BUG_ID>f/target/lib/`. Then run the provided build command. |
| Lang | 1,3-17,19-20,42-47,49-65 | `ant` | `ant -f build.xml jar` | `Lang-<BUG_ID>f/target/commons-lang-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/Lang-<BUG_ID>f`, edit `build.xml` before compiling: in the path with id `compile.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`. Then run the provided build command. |
| Lang | 21-24,26-41 | `ant` | `ant -f build.xml -Djunit.skipped=true jar` | `Lang-<BUG_ID>f/target/commons-lang-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/Lang-<BUG_ID>f`, edit `maven-build.xml` before compiling: in the path with id `build.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`; in the `package` target, delete the line `manifest=..` and any `<manifest>` elements. Then run the provided build command. |
| Math | 1-7 | `ant` | `ant -f build.xml jar` | `Math-<BUG_ID>f/target/commons-math-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/Math-<BUG_ID>f` edit `build.xml` before compiling: in the path with id `compile.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`; in the `download-junit` target, in the `src` attribute, change `http` to `https`. Then run the provided build command. |
| Math | 8-91,99 | `ant` | `ant -f build.xml jar` | `Math-<BUG_ID>f/target/commons-math-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/Math-<BUG_ID>f` edit `build.xml` before compiling: in the path with id `compile.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`; in the `jar` target, change the dependency from `test` to `compile`; in the `download-junit` target, in the `src` attribute, change `http` to `https`. Then run the provided build command. |
| Math | 92-98 | `ant` | `ant -f build.xml jar` | `Math-<BUG_ID>f/target/commons-math-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/Math-<BUG_ID>f` edit `build.xml` before compiling: in the path with id `build.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`; in the `jar` target, change the dependency from `compile,test` to `compile`; in the `get-deps` target, comment out the `<setproxy>` attribute; in the `get-deps` target, change the cobertura plugin to `src="https://repo1.maven.org/maven2/maven-plugins/maven-cobertura-plugin/1.1.1/maven-cobertura-plugin-1.1.1.jar"`; in the `get-deps` target, change the xdoc plugin to `src="https://repo1.maven.org/maven2/maven/maven-xdoc-plugin/1.9.2/maven-xdoc-plugin-1.9.2.jar"`. Then run the provided build command. |
| Math | 100-106 | `ant` | `ant -f build.xml jar` | `Math-<BUG_ID>f/target/commons-math-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/Math-<BUG_ID>f` edit `build.xml` before compiling: in the path with id `build.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`; in the `jar` target, change the dependency from `compile,test` to `compile`; in the `get-deps` target, comment out the `<setproxy>` attribute. Then run the provided build command. |
| Mockito | 1-11,18-20 | `gradle` | `./gradlew build` | `Mockito-<BUG_ID>f/build/libs/mockito-core-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/Mockito-<BUG_ID>f`, make the following edits before building. **(1) `build.gradle`:** add a `compileJava` task directly before the `dependencies` block: `compileJava { classpath += files('scripts/build/checker-framework/checker/dist/checker-qual.jar') }`. **(2) `build-ant.xml`:** directly below the `jar.core.path` property, insert `<property name="checker.qual.path" value="scripts/build/checker-framework/checker/dist/checker-qual.jar"/>` and `<property name="bnd.core.classpath" value="${jar.core.path}:${checker.qual.path}"/>`. Then in the `bndCore` target, change the `classpath=` attribute to `classpath="${bnd.core.classpath}"`. Then run the provided build command. |
| Mockito | 12-17,21-38 | `ant` | `ant -f build.xml jar` | `Mockito-<BUG_ID>f/target/mockito-core-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/Mockito-<BUG_ID>f`, edit `build.xml` before compiling: in the path with id `compile.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`; in the `jar.all` target, change the dependency on `test` to a dependency on `compile.test`; finally, in the `jar.all` and `jar` targets, change `<fileset dir="." file="LICENSE" />` and `<fileset dir="." file="NOTICE" />` to `<fileset dir="."><include name="LICENSE"/></fileset>` and `<fileset dir="."><include name="NOTICE"/></fileset>`. Then run the provided build command. |
| Time | 1-11 | `ant` | `ant -f build.xml -Djunit.skipped=true jar` | `Time-<BUG_ID>f/target/joda-time-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/Time-<BUG_ID>f`, edit `maven-build.xml` before compiling: in the path with id `build.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`; in the `package` target, delete the line `manifest=..` and any `<manifest>` elements (if they exist). Then run the provided build command. |
| Time | 12-20,22-27 | `ant` | `ant -f build.xml jar` | `Time-<BUG_ID>f/build/joda-time-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/Time-<BUG_ID>f` edit `build.xml` before compiling: in the path with id `compile.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`. Then run the provided build command. |
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify the directory structure and expected relative path

# Check if build directory exists and show structure
if [ -d "build/defects4j-src" ]; then
  echo "=== Existing project directories under build/defects4j-src ==="
  ls -d build/defects4j-src/*/ 2>/dev/null | head -5
fi

# Verify checker-qual.jar location
echo ""
echo "=== Checking checker-qual.jar location ==="
fd -t f "checker-qual.jar" scripts/build

# Calculate relative path from a hypothetical project directory
echo ""
echo "=== Relative path calculation ==="
echo "From: build/defects4j-src/<PROJECT>-<BUG>f/"
echo "To:   scripts/build/checker-framework/checker/dist/checker-qual.jar"
echo "Expected relative: ../../../scripts/build/checker-framework/checker/dist/checker-qual.jar"

Repository: randoop/grt-testing

Length of output: 463


🏁 Script executed:

#!/bin/bash
# Explore repository structure
echo "=== Repository root structure ==="
ls -la | head -20

echo ""
echo "=== Looking for checker-qual.jar anywhere in repo ==="
fd -t f "checker-qual.jar" 2>/dev/null || echo "Not found"

echo ""
echo "=== Checking if scripts/ directory exists ==="
if [ -d "scripts" ]; then
  echo "scripts/ exists. Contents:"
  find scripts -type d | head -20
else
  echo "scripts/ does not exist"
fi

echo ""
echo "=== Checking if build/ directory exists ==="
if [ -d "build" ]; then
  echo "build/ exists. Contents:"
  find build -type d | head -20
else
  echo "build/ does not exist"
fi

echo ""
echo "=== Checking BUILD_MATRIX.md context ==="
head -30 "defects4j-jars/BUILD_MATRIX.md"

Repository: randoop/grt-testing

Length of output: 8224


🏁 Script executed:

#!/bin/bash
# Find buildjars.sh and examine it
echo "=== Looking for buildjars.sh ==="
find . -name "buildjars.sh" -type f 2>/dev/null

echo ""
echo "=== Checking for any build-related scripts ==="
find scripts -name "*build*" -type f 2>/dev/null | head -20

echo ""
echo "=== Checking defects4j-jars directory structure ==="
ls -la defects4j-jars/

echo ""
echo "=== Searching for references to 'scripts/build' in the repo ==="
rg "scripts/build" -t md | head -20

Repository: randoop/grt-testing

Length of output: 13471


🏁 Script executed:

#!/bin/bash
# Examine buildjars.sh to understand build context and path handling
echo "=== buildjars.sh context around path handling ==="
head -80 defects4j-jars/buildjars.sh | cat -n

echo ""
echo "=== Searching for 'scripts/build' references in buildjars.sh ==="
grep -n "scripts/build" defects4j-jars/buildjars.sh

echo ""
echo "=== Searching for path-related variables or setup ==="
grep -n "CLASSPATH\|classpath\|PATH\|cd " defects4j-jars/buildjars.sh | head -30

Repository: randoop/grt-testing

Length of output: 3980


🏁 Script executed:

#!/bin/bash
# Check for any environment setup or symlink documentation
echo "=== README.md in subject-programs/annotated-jars (mentions CHECKERFRAMEWORK) ==="
cat subject-programs/annotated-jars/README.md

echo ""
echo "=== Checking for any .bashrc, setup scripts, or path configuration ==="
find . -maxdepth 2 -name "*.sh" -o -name ".bashrc" -o -name "setup*" 2>/dev/null | grep -v ".git"

echo ""
echo "=== Check if build/ directory is expected to be created ==="
grep -r "mkdir.*build" defects4j-jars/buildjars.sh | head -5
</script>

Repository: randoop/grt-testing

Length of output: 3628


Path references in build instructions will not resolve from project directories.

All table entries reference scripts/build/checker-framework/checker/dist/checker-qual.jar as a pathelement in build files. However, these build files (located at build/defects4j-src/<PROJECT>-<BUG_ID>f/build.xml or equivalent) will resolve paths relative to their own directory, not the repository root.

When build.xml parses this path from build/defects4j-src/<PROJECT>-<BUG_ID>f/, it will fail to locate the jar.

Correct relative path: ../../../scripts/build/checker-framework/checker/dist/checker-qual.jar

Alternatively, document that users must set CHECKERFRAMEWORK=/path/to/grt-testing/scripts/build/checker-framework before running builds, and then reference the jar via that environment variable (e.g., ${env.CHECKERFRAMEWORK}/checker/dist/checker-qual.jar).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@defects4j-jars/BUILD_MATRIX.md` around lines 19 - 53, The table currently
instructs adding a pathelement pointing to
"scripts/build/checker-framework/checker/dist/checker-qual.jar" which will be
resolved relative to each project's build file and thus fail; update those
instructions to use the correct relative path
"../../../scripts/build/checker-framework/checker/dist/checker-qual.jar" when
telling users to add the pathelement in build.xml / maven-build.xml /
buildjars.sh (search for the literal
"scripts/build/checker-framework/checker/dist/checker-qual.jar" in the
document), or alternatively instruct users to export an environment variable
CHECKERFRAMEWORK and reference the jar as
"${env.CHECKERFRAMEWORK}/checker/dist/checker-qual.jar" in the build files so
project-local resolution succeeds.

| Project ID | Bug IDs | Build System | Build Command(s) | Output Jar Pattern | Notes |
| --- | --- | --- | --- | --- | --- |
| Chart | 1-26 | `ant` | `ant -f build.xml compile` | `Chart-<BUG_ID>f/jfreechart-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/Chart-<BUG_ID>f`, edit `ant/build.xml` before compiling: in the path with id `build.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`; in the `compile` target, set javac source and target to `1.6`. Then run the provided build command from the `ant` subdirectory. |
| Cli | 1-5,7-21 | `ant` | `ant -f build.xml jar` | `Cli-<BUG_ID>f/target/commons-cli-*.jar` | Make sure you are using Java 11. From `build/defects4j-src/Cli-<BUG_ID>f`, edit `build.xml` before compiling: in the path with id `compile.classpath`, add a pathelement pointing to `scripts/build/checker-framework/checker/dist/checker-qual.jar`; in the `jar` target, delete the dependency on the `test` target. Then run the provided build command. |
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Consider documenting intentionally skipped Bug IDs.

Several Bug IDs appear to be deliberately omitted across projects:

  • Cli: Bug 6
  • Lang: Bugs 2, 18, 25, 48
  • Time: Bug 21

If these are known-broken or unsupported in Defects4J, adding a brief note (either inline or in a separate section) would help users understand why these aren't included and prevent confusion.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@defects4j-jars/BUILD_MATRIX.md` at line 22, Add a short note or new
subsection in BUILD_MATRIX.md explaining intentionally skipped Bug IDs: list the
project names and omitted IDs (Cli: 6; Lang: 2, 18, 25, 48; Time: 21) and state
whether they are known-broken, unsupported, or untestable; update the existing
table row for Cli/Lang/Time or add a footnote marker next to those project
entries that references this explanation so readers understand why those bug IDs
are missing.

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

Successfully merging this pull request may close these issues.

2 participants