Create nullaway-bom project (#1130)#1380
Conversation
WalkthroughAdds a new Gradle Java Platform BOM module named nullaway-bom and includes it in settings.gradle (include ':nullaway-bom'). Creates nullaway-bom/build.gradle applying the Suggested reviewers
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (3)
build.gradle(1 hunks)nullaway-bom/build.gradle(1 hunks)settings.gradle(1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2025-11-25T22:43:06.446Z
Learnt from: CR
Repo: uber/NullAway PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T22:43:06.446Z
Learning: Run only the tests for the main NullAway module using `./gradlew :nullaway:test` unless specifically asked to run tests in a different module
Applied to files:
nullaway-bom/build.gradlesettings.gradle
📚 Learning: 2025-08-14T18:50:06.159Z
Learnt from: msridhar
Repo: uber/NullAway PR: 1245
File: guava-recent-unit-tests/src/test/java/com/uber/nullaway/guava/NullAwayGuavaParametricNullnessTests.java:101-102
Timestamp: 2025-08-14T18:50:06.159Z
Learning: In NullAway JSpecify tests, when JDK version requirements exist due to bytecode annotation reading capabilities, prefer failing tests over skipping them on unsupported versions to ensure CI catches regressions and enforces proper JDK version usage for developers.
Applied to files:
nullaway-bom/build.gradlesettings.gradle
🔇 Additional comments (3)
build.gradle (1)
126-126: LGTM! Spotless exclusion correctly applied.The exclusion of
nullaway-bomfrom Spotless formatting is appropriate since the BOM module usesjava-platformplugin and contains no Java source files to format.Note: The comment at lines 124-125 might be slightly misleading since
nullaway-bomdoes have a build.gradle file; the real reason for exclusion is the absence of Java source files.settings.gradle (1)
16-16: LGTM! Module inclusion is correct.The new
nullaway-bommodule is properly included in the build configuration.nullaway-bom/build.gradle (1)
17-22: Plugin configuration looks correct for a BOM module.The
java-platformplugin is the appropriate choice for a Bill of Materials, and thecom.vanniktech.maven.publishplugin aligns with the project's existing publishing infrastructure.Assumption: The maven-publish plugin configuration (group, version, publishing repositories) is inherited from root project configuration or configured elsewhere.
msridhar
left a comment
There was a problem hiding this comment.
Thanks for this contribution! This all LGTM but since I have no experience with BOMs it's hard for me to tell if this is doing exactly the right thing. I'm attaching the pom.default.xml generated when running ./gradlew :nullaway-bom:generatePomFileForMavenPublication. I can confirm it lists all the published artifacts for NullAway. Does it otherwise look good? @scordio @hazendaz any way you could take a quick look?
There was a problem hiding this comment.
Actionable comments posted: 1
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (1)
nullaway-bom/build.gradle(1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2025-08-14T18:50:06.159Z
Learnt from: msridhar
Repo: uber/NullAway PR: 1245
File: guava-recent-unit-tests/src/test/java/com/uber/nullaway/guava/NullAwayGuavaParametricNullnessTests.java:101-102
Timestamp: 2025-08-14T18:50:06.159Z
Learning: In NullAway JSpecify tests, when JDK version requirements exist due to bytecode annotation reading capabilities, prefer failing tests over skipping them on unsupported versions to ensure CI catches regressions and enforces proper JDK version usage for developers.
Applied to files:
nullaway-bom/build.gradle
📚 Learning: 2025-11-25T22:43:06.446Z
Learnt from: CR
Repo: uber/NullAway PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T22:43:06.446Z
Learning: Run only the tests for the main NullAway module using `./gradlew :nullaway:test` unless specifically asked to run tests in a different module
Applied to files:
nullaway-bom/build.gradle
🔇 Additional comments (2)
nullaway-bom/build.gradle (2)
17-20: LGTM!The plugin configuration is correct for a BOM module. The
java-platformplugin properly configures the module as a BOM, andcom.vanniktech.maven.publishis consistent with other published modules in the project.
22-22: LGTM!The description is clear and follows standard BOM naming conventions.
|
LGTM 👍 structurally similar to what we publish for AssertJ. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #1380 +/- ##
=========================================
Coverage 88.47% 88.47%
Complexity 2626 2626
=========================================
Files 97 97
Lines 8822 8822
Branches 1762 1762
=========================================
Hits 7805 7805
Misses 509 509
Partials 508 508 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
The failing check doesn't seem related to the changes in this PR 🤔 |
Yeah sorry about that, that's a non-blocking integration test that for now is expected to fail |
I created the
nullaway-bomproject that publishes a BOM for the NullAway artifacts published on Maven Central.There are no tests for this, but the POM file can be generated for visual inspection with:
This should solve #1130.
Summary by CodeRabbit
✏️ Tip: You can customize this high-level summary in your review settings.