Skip to content

Commit cda05ed

Browse files
authored
Merge pull request #10616 from erik-krogh/ql-consistencies
QL: adjust the consistency query to not be noisy on parameterised modules
2 parents 229c95a + 2046ece commit cda05ed

File tree

3 files changed

+9
-5
lines changed

3 files changed

+9
-5
lines changed

ql/ql/src/codeql_ql/ast/internal/Module.qll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,7 @@ module ModConsistency {
389389
) >= 2 and
390390
// paramerized modules are not treated nicely, so we ignore them here.
391391
not i.getResolvedModule().getEnclosing*().asModule().hasParameter(_, _, _) and
392+
not i.getResolvedModule().asModule().hasAnnotation("signature") and
392393
not i.getLocation()
393394
.getFile()
394395
.getAbsolutePath()

ql/ql/src/codeql_ql/ast/internal/Predicate.qll

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,9 @@ module PredConsistency {
211211
c > 1 and
212212
resolvePredicateExpr(pe, p) and
213213
// parameterized modules are expected to resolve to multiple.
214-
not exists(ClasslessPredicate sig | not sig.isSignature() and resolvePredicateExpr(pe, sig))
214+
not exists(Predicate sig | sig.getParent*().hasAnnotation("signature") |
215+
resolvePredicateExpr(pe, sig)
216+
)
215217
}
216218

217219
query predicate multipleResolveCall(Call call, int c, PredicateOrBuiltin p) {
@@ -227,6 +229,6 @@ module PredConsistency {
227229
c > 1 and
228230
resolveCall(call, p) and
229231
// parameterized modules are expected to resolve to multiple.
230-
not exists(ClasslessPredicate sig | not sig.isSignature() and resolveCall(call, sig))
232+
not exists(Predicate sig | sig.getParent*().hasAnnotation("signature") | resolveCall(call, sig))
231233
}
232234
}

ql/ql/src/queries/diagnostics/EmptyConsistencies.ql

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,10 @@ where
2424
PredConsistency::noResolvePredicateExpr(node) and
2525
msg = "PredConsistency::noResolvePredicateExpr"
2626
or
27-
PredConsistency::multipleResolveCall(node, _, _) and
28-
msg = "PredConsistency::multipleResolveCall"
29-
or
27+
// This went out the window with parameterised modules.
28+
// PredConsistency::multipleResolveCall(node, _, _) and
29+
// msg = "PredConsistency::multipleResolveCall"
30+
// or
3031
PredConsistency::multipleResolvePredicateExpr(node, _, _) and
3132
msg = "PredConsistency::multipleResolvePredicateExpr"
3233
or

0 commit comments

Comments
 (0)