Merged
Conversation
Also remove the charpred of ElementBase. This gets rid of many redundant charpred checks. It means that incomplete classes from the db are now `Element`s, which is maybe noisy but should not be harmful. Together, these changes give a great reduction in DIL and should help the optimiser. It brings the DIL of `UncontrolledFormatString.ql` down from 43,908 lines to 35,400 lines.
Raw classes from the database that are incomplete and should be represented by their complete twin are now allowed to be `Element`s for performance reasons, but this commit prevents them from being `Type`s. It was causing confusion in test results and might also cause confusion in queries.
These two predicates were supposed to be fast but became slow after the recent inlining of `unresolve`.
C++: make `unresolve` a member of ElementBase
Version: Bump to 1.18.0 release.
C++: Update test output
This change means that there are no results for `unresolveElement(t)` where `t` is a "junk type" -- a class definition that is not in the image of `resolveClass`. These "junk types" still exist as `Element`s, but they will never be returned by any predicate that goes through `unresolveElement` to query the db. We get a small reduction in DIL size and a significant speed improvement. The DIL for `NewArrayDeleteMismatch.ql` is reduced from 27,630 lines to 27,507 lines, and the total analysis time for the LGTM suite on jdk8u is reduced from 1158s to 984s.
The change to make `unresolveElement` a member predicate was helpful for the optimiser when it dispatched on `this`, but now that it "dispatches" on `result` it's just an unnecessary pollution of the `ElementBase` namespace.
After the recent inlining of `unresolveElement`, the join order in `CommentedOutCode` became a problem. The join orderer was tempted to join the two `hasLocationInfo` calls first because they had one column in common. With this commit, they have no columns in common. It follows from the other predicates in the same file that this column would be the same, so there is no need to assert it in this predicate and risk that the join orderer uses that information. On Wireshark, the `CommentBlock::hasLocationInfo` predicate goes from taking 2m2s to taking 180ms. The query produces the same 7,448 alerts.
C++: Fix join order in CommentedOutCode
C++: Make unresolve dispatch on `result`
…1.18 Version: Fix C# and JavaScript Eclipse plugins for 1.18.
Version: Bump to 1.18.1 dev.
aibaars
approved these changes
Oct 1, 2018
aibaars
added a commit
that referenced
this pull request
Oct 14, 2021
Exclude beta releases of code-cli for qltest job
smowton
added a commit
to smowton/codeql
that referenced
this pull request
Apr 16, 2022
…ype-parameters Convert type-parameter-out-of-scope warning into consistency query
MathiasVP
pushed a commit
to MathiasVP/ql
that referenced
this pull request
Aug 10, 2025
PS: Fix bug in `CallOperator::getCommand`
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.
Should be merged after the corresponding internal PR. Test results should be checked on the internal PR instead of this one.