Skip to content

Merge rc/1.18 into master.#258

Merged
aibaars merged 18 commits intogithub:masterfrom
adityasharad:merge/1.18-master-011018
Oct 1, 2018
Merged

Merge rc/1.18 into master.#258
aibaars merged 18 commits intogithub:masterfrom
adityasharad:merge/1.18-master-011018

Conversation

@adityasharad
Copy link
Copy Markdown
Collaborator

@adityasharad adityasharad commented Oct 1, 2018

Should be merged after the corresponding internal PR. Test results should be checked on the internal PR instead of this one.

jbj and others added 18 commits September 26, 2018 11:12
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
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.
@adityasharad adityasharad added depends on internal PR This PR should only be merged in sync with an internal Semmle PR Mergeback labels Oct 1, 2018
@adityasharad adityasharad requested review from a team as code owners October 1, 2018 11:13
@adityasharad adityasharad removed request for a team October 1, 2018 16:30
@aibaars aibaars merged commit 13ef492 into github:master 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`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

depends on internal PR This PR should only be merged in sync with an internal Semmle PR Mergeback

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants