Overlay: Add QL for QL query to warn about possible non-inlining across overlay frontier#19590
Merged
kaspersv merged 3 commits intogithub:mainfrom Jun 17, 2025
Merged
Conversation
a67d865 to
ac94145
Compare
ac94145 to
b291b06
Compare
Contributor
There was a problem hiding this comment.
Pull Request Overview
Adds a CodeQL query to warn when local inline predicates lack an overlay[caller] annotation and the supporting AST classes to recognize new overlay annotations.
- Introduces
InlineOverlayCaller.qlto flag non-private inline predicates in files withoverlay[local]/overlay[local?]annotations. - Extends the AST model in
Ast.qllwith newAnnotationArgandAnnotationsubclasses foroverlay[caller],overlay[local], andoverlay[local?].
Reviewed Changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| ql/ql/src/queries/overlay/InlineOverlayCaller.ql | New query to detect and warn about inline predicates crossing an overlay frontier. |
| ql/ql/src/codeql_ql/ast/Ast.qll | Added CallerArg, LocalArg, LocalQArg and corresponding OverlayCaller, OverlayLocal, OverlayLocalQ classes. |
Comments suppressed due to low confidence (1)
ql/ql/src/codeql_ql/ast/Ast.qll:2541
- [nitpick] The class name
CallerArgis generic. Consider renaming it toOverlayCallerArg(and similarlyLocalArgtoOverlayLocalArg,LocalQArgtoOverlayLocalQArg) for clarity and consistency.
private class CallerArg extends AnnotationArg {
ginsbach
reviewed
Jun 10, 2025
ginsbach
approved these changes
Jun 10, 2025
hvitved
reviewed
Jun 17, 2025
Contributor
hvitved
left a comment
There was a problem hiding this comment.
Would have been nice with a few tests as well.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR adds a QL-for-QL query to warn about possible non-inlining across the overlay frontier for possibly local non-private inline predicates. It will be used in tandem with a script to automatically add overlay annotations to files without existing overlay annotations. Once locality annotations have been added to a file, this query takes over responsibility for warning about possible non-inlining.
Due to a limitation of the tree-sitter-ql grammar with respect to annotations on file-level module declarations (i.e.,
module;), the heuristic for determining whether an inline predicate might be local is very crude: if the file contains anyoverlay[local]oroverlay[local?]annotations.For https://github.com/github/codeql-core/issues/4951.