-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Overlay: Discard Java config and XML base entities in overlay extracted files #20505
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
Overlay: Discard Java config and XML base entities in overlay extracted files #20505
Conversation
9122500 to
c70ad9b
Compare
c70ad9b to
f02da68
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR improves overlay database handling by extending discard predicates for Java config and XML entities. The change addresses accuracy regressions under non-incremental extraction where files outside of overlayChangedFiles may still be extracted.
- Introduces new predicates to track overlay-extracted config and XML files
- Updates discard logic to handle all overlay-extracted files, not just changed files
- Creates a new abstract class
DiscardableXmlLocatablefor XML entity management
Reviewed Changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| java/ql/lib/semmle/code/java/Overlay.qll | Adds new overlay predicates and discard logic for config and XML files |
| java/ql/lib/semmle/code/xml/XML.qll | Updates XML discardable classes to extend new DiscardableXmlLocatable base class |
| string toString() { none() } | ||
| } | ||
|
|
||
| overlay[local] |
Copilot
AI
Sep 24, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The condition not files(el, _) and not xmlNs(el, _, _, _) appears to be filtering logic but lacks documentation explaining why these specific exclusions are necessary. Consider adding a comment to clarify the purpose of these filters.
| overlay[local] | |
| overlay[local] | |
| /** | |
| * Returns true if the given file is extracted in the overlay variant for an `@xmllocatable` | |
| * that is neither a file entity nor an XML namespace declaration. | |
| * The conditions `not files(el, _)` and `not xmlNs(el, _, _, _)` ensure that only relevant | |
| * XML locatable entities are considered, excluding files and namespace declarations which | |
| * are not subject to overlay extraction. | |
| */ |
This PR improves the Java config and XML discard predicates to avoid apparent bqrs accuracy regressions under the current non-incremental Java property and XML extraction. Under non-incremental extraction, the Java property and XML extractors may extract files outside of
overlayChangedFiles. To account for these files and properly discard from base, this PR extends the discard predicates to discard Java config and XML base entities in all overlay extracted files, even if they do not appear inoverlayChangedFiles. The use ofoverlayChangedFilesis still necessary to discard from deleted Java property and XML files.DCA experiments (variant vs baseline) shows the expected accuracy improvements for
java/maven/non-https-url,java/maven/dependency-upon-bintrayandjava/spring-boot-exposed-actuators-config.