mirror of
https://github.com/github/codeql.git
synced 2025-12-22 11:46:32 +01:00
Data flow: Add consistency check for DataFlowCall::getEnclosingCallable
This commit is contained in:
@@ -18,6 +18,9 @@ module Consistency {
|
|||||||
/** Holds if `n` should be excluded from the consistency test `uniqueEnclosingCallable`. */
|
/** Holds if `n` should be excluded from the consistency test `uniqueEnclosingCallable`. */
|
||||||
predicate uniqueEnclosingCallableExclude(Node n) { none() }
|
predicate uniqueEnclosingCallableExclude(Node n) { none() }
|
||||||
|
|
||||||
|
/** Holds if `call` should be excluded from the consistency test `uniqueCallEnclosingCallable`. */
|
||||||
|
predicate uniqueCallEnclosingCallableExclude(DataFlowCall call) { none() }
|
||||||
|
|
||||||
/** Holds if `n` should be excluded from the consistency test `uniqueNodeLocation`. */
|
/** Holds if `n` should be excluded from the consistency test `uniqueNodeLocation`. */
|
||||||
predicate uniqueNodeLocationExclude(Node n) { none() }
|
predicate uniqueNodeLocationExclude(Node n) { none() }
|
||||||
|
|
||||||
@@ -86,6 +89,15 @@ module Consistency {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
query predicate uniqueCallEnclosingCallable(DataFlowCall call, string msg) {
|
||||||
|
exists(int c |
|
||||||
|
c = count(call.getEnclosingCallable()) and
|
||||||
|
c != 1 and
|
||||||
|
not any(ConsistencyConfiguration conf).uniqueCallEnclosingCallableExclude(call) and
|
||||||
|
msg = "Call should have one enclosing callable but has " + c + "."
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
query predicate uniqueType(Node n, string msg) {
|
query predicate uniqueType(Node n, string msg) {
|
||||||
exists(int c |
|
exists(int c |
|
||||||
n instanceof RelevantNode and
|
n instanceof RelevantNode and
|
||||||
|
|||||||
@@ -18,6 +18,9 @@ module Consistency {
|
|||||||
/** Holds if `n` should be excluded from the consistency test `uniqueEnclosingCallable`. */
|
/** Holds if `n` should be excluded from the consistency test `uniqueEnclosingCallable`. */
|
||||||
predicate uniqueEnclosingCallableExclude(Node n) { none() }
|
predicate uniqueEnclosingCallableExclude(Node n) { none() }
|
||||||
|
|
||||||
|
/** Holds if `call` should be excluded from the consistency test `uniqueCallEnclosingCallable`. */
|
||||||
|
predicate uniqueCallEnclosingCallableExclude(DataFlowCall call) { none() }
|
||||||
|
|
||||||
/** Holds if `n` should be excluded from the consistency test `uniqueNodeLocation`. */
|
/** Holds if `n` should be excluded from the consistency test `uniqueNodeLocation`. */
|
||||||
predicate uniqueNodeLocationExclude(Node n) { none() }
|
predicate uniqueNodeLocationExclude(Node n) { none() }
|
||||||
|
|
||||||
@@ -86,6 +89,15 @@ module Consistency {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
query predicate uniqueCallEnclosingCallable(DataFlowCall call, string msg) {
|
||||||
|
exists(int c |
|
||||||
|
c = count(call.getEnclosingCallable()) and
|
||||||
|
c != 1 and
|
||||||
|
not any(ConsistencyConfiguration conf).uniqueCallEnclosingCallableExclude(call) and
|
||||||
|
msg = "Call should have one enclosing callable but has " + c + "."
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
query predicate uniqueType(Node n, string msg) {
|
query predicate uniqueType(Node n, string msg) {
|
||||||
exists(int c |
|
exists(int c |
|
||||||
n instanceof RelevantNode and
|
n instanceof RelevantNode and
|
||||||
|
|||||||
@@ -18,6 +18,9 @@ module Consistency {
|
|||||||
/** Holds if `n` should be excluded from the consistency test `uniqueEnclosingCallable`. */
|
/** Holds if `n` should be excluded from the consistency test `uniqueEnclosingCallable`. */
|
||||||
predicate uniqueEnclosingCallableExclude(Node n) { none() }
|
predicate uniqueEnclosingCallableExclude(Node n) { none() }
|
||||||
|
|
||||||
|
/** Holds if `call` should be excluded from the consistency test `uniqueCallEnclosingCallable`. */
|
||||||
|
predicate uniqueCallEnclosingCallableExclude(DataFlowCall call) { none() }
|
||||||
|
|
||||||
/** Holds if `n` should be excluded from the consistency test `uniqueNodeLocation`. */
|
/** Holds if `n` should be excluded from the consistency test `uniqueNodeLocation`. */
|
||||||
predicate uniqueNodeLocationExclude(Node n) { none() }
|
predicate uniqueNodeLocationExclude(Node n) { none() }
|
||||||
|
|
||||||
@@ -86,6 +89,15 @@ module Consistency {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
query predicate uniqueCallEnclosingCallable(DataFlowCall call, string msg) {
|
||||||
|
exists(int c |
|
||||||
|
c = count(call.getEnclosingCallable()) and
|
||||||
|
c != 1 and
|
||||||
|
not any(ConsistencyConfiguration conf).uniqueCallEnclosingCallableExclude(call) and
|
||||||
|
msg = "Call should have one enclosing callable but has " + c + "."
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
query predicate uniqueType(Node n, string msg) {
|
query predicate uniqueType(Node n, string msg) {
|
||||||
exists(int c |
|
exists(int c |
|
||||||
n instanceof RelevantNode and
|
n instanceof RelevantNode and
|
||||||
|
|||||||
@@ -18,6 +18,9 @@ module Consistency {
|
|||||||
/** Holds if `n` should be excluded from the consistency test `uniqueEnclosingCallable`. */
|
/** Holds if `n` should be excluded from the consistency test `uniqueEnclosingCallable`. */
|
||||||
predicate uniqueEnclosingCallableExclude(Node n) { none() }
|
predicate uniqueEnclosingCallableExclude(Node n) { none() }
|
||||||
|
|
||||||
|
/** Holds if `call` should be excluded from the consistency test `uniqueCallEnclosingCallable`. */
|
||||||
|
predicate uniqueCallEnclosingCallableExclude(DataFlowCall call) { none() }
|
||||||
|
|
||||||
/** Holds if `n` should be excluded from the consistency test `uniqueNodeLocation`. */
|
/** Holds if `n` should be excluded from the consistency test `uniqueNodeLocation`. */
|
||||||
predicate uniqueNodeLocationExclude(Node n) { none() }
|
predicate uniqueNodeLocationExclude(Node n) { none() }
|
||||||
|
|
||||||
@@ -86,6 +89,15 @@ module Consistency {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
query predicate uniqueCallEnclosingCallable(DataFlowCall call, string msg) {
|
||||||
|
exists(int c |
|
||||||
|
c = count(call.getEnclosingCallable()) and
|
||||||
|
c != 1 and
|
||||||
|
not any(ConsistencyConfiguration conf).uniqueCallEnclosingCallableExclude(call) and
|
||||||
|
msg = "Call should have one enclosing callable but has " + c + "."
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
query predicate uniqueType(Node n, string msg) {
|
query predicate uniqueType(Node n, string msg) {
|
||||||
exists(int c |
|
exists(int c |
|
||||||
n instanceof RelevantNode and
|
n instanceof RelevantNode and
|
||||||
|
|||||||
@@ -18,6 +18,9 @@ module Consistency {
|
|||||||
/** Holds if `n` should be excluded from the consistency test `uniqueEnclosingCallable`. */
|
/** Holds if `n` should be excluded from the consistency test `uniqueEnclosingCallable`. */
|
||||||
predicate uniqueEnclosingCallableExclude(Node n) { none() }
|
predicate uniqueEnclosingCallableExclude(Node n) { none() }
|
||||||
|
|
||||||
|
/** Holds if `call` should be excluded from the consistency test `uniqueCallEnclosingCallable`. */
|
||||||
|
predicate uniqueCallEnclosingCallableExclude(DataFlowCall call) { none() }
|
||||||
|
|
||||||
/** Holds if `n` should be excluded from the consistency test `uniqueNodeLocation`. */
|
/** Holds if `n` should be excluded from the consistency test `uniqueNodeLocation`. */
|
||||||
predicate uniqueNodeLocationExclude(Node n) { none() }
|
predicate uniqueNodeLocationExclude(Node n) { none() }
|
||||||
|
|
||||||
@@ -86,6 +89,15 @@ module Consistency {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
query predicate uniqueCallEnclosingCallable(DataFlowCall call, string msg) {
|
||||||
|
exists(int c |
|
||||||
|
c = count(call.getEnclosingCallable()) and
|
||||||
|
c != 1 and
|
||||||
|
not any(ConsistencyConfiguration conf).uniqueCallEnclosingCallableExclude(call) and
|
||||||
|
msg = "Call should have one enclosing callable but has " + c + "."
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
query predicate uniqueType(Node n, string msg) {
|
query predicate uniqueType(Node n, string msg) {
|
||||||
exists(int c |
|
exists(int c |
|
||||||
n instanceof RelevantNode and
|
n instanceof RelevantNode and
|
||||||
|
|||||||
@@ -18,6 +18,9 @@ module Consistency {
|
|||||||
/** Holds if `n` should be excluded from the consistency test `uniqueEnclosingCallable`. */
|
/** Holds if `n` should be excluded from the consistency test `uniqueEnclosingCallable`. */
|
||||||
predicate uniqueEnclosingCallableExclude(Node n) { none() }
|
predicate uniqueEnclosingCallableExclude(Node n) { none() }
|
||||||
|
|
||||||
|
/** Holds if `call` should be excluded from the consistency test `uniqueCallEnclosingCallable`. */
|
||||||
|
predicate uniqueCallEnclosingCallableExclude(DataFlowCall call) { none() }
|
||||||
|
|
||||||
/** Holds if `n` should be excluded from the consistency test `uniqueNodeLocation`. */
|
/** Holds if `n` should be excluded from the consistency test `uniqueNodeLocation`. */
|
||||||
predicate uniqueNodeLocationExclude(Node n) { none() }
|
predicate uniqueNodeLocationExclude(Node n) { none() }
|
||||||
|
|
||||||
@@ -86,6 +89,15 @@ module Consistency {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
query predicate uniqueCallEnclosingCallable(DataFlowCall call, string msg) {
|
||||||
|
exists(int c |
|
||||||
|
c = count(call.getEnclosingCallable()) and
|
||||||
|
c != 1 and
|
||||||
|
not any(ConsistencyConfiguration conf).uniqueCallEnclosingCallableExclude(call) and
|
||||||
|
msg = "Call should have one enclosing callable but has " + c + "."
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
query predicate uniqueType(Node n, string msg) {
|
query predicate uniqueType(Node n, string msg) {
|
||||||
exists(int c |
|
exists(int c |
|
||||||
n instanceof RelevantNode and
|
n instanceof RelevantNode and
|
||||||
|
|||||||
@@ -18,6 +18,9 @@ module Consistency {
|
|||||||
/** Holds if `n` should be excluded from the consistency test `uniqueEnclosingCallable`. */
|
/** Holds if `n` should be excluded from the consistency test `uniqueEnclosingCallable`. */
|
||||||
predicate uniqueEnclosingCallableExclude(Node n) { none() }
|
predicate uniqueEnclosingCallableExclude(Node n) { none() }
|
||||||
|
|
||||||
|
/** Holds if `call` should be excluded from the consistency test `uniqueCallEnclosingCallable`. */
|
||||||
|
predicate uniqueCallEnclosingCallableExclude(DataFlowCall call) { none() }
|
||||||
|
|
||||||
/** Holds if `n` should be excluded from the consistency test `uniqueNodeLocation`. */
|
/** Holds if `n` should be excluded from the consistency test `uniqueNodeLocation`. */
|
||||||
predicate uniqueNodeLocationExclude(Node n) { none() }
|
predicate uniqueNodeLocationExclude(Node n) { none() }
|
||||||
|
|
||||||
@@ -86,6 +89,15 @@ module Consistency {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
query predicate uniqueCallEnclosingCallable(DataFlowCall call, string msg) {
|
||||||
|
exists(int c |
|
||||||
|
c = count(call.getEnclosingCallable()) and
|
||||||
|
c != 1 and
|
||||||
|
not any(ConsistencyConfiguration conf).uniqueCallEnclosingCallableExclude(call) and
|
||||||
|
msg = "Call should have one enclosing callable but has " + c + "."
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
query predicate uniqueType(Node n, string msg) {
|
query predicate uniqueType(Node n, string msg) {
|
||||||
exists(int c |
|
exists(int c |
|
||||||
n instanceof RelevantNode and
|
n instanceof RelevantNode and
|
||||||
|
|||||||
@@ -18,6 +18,9 @@ module Consistency {
|
|||||||
/** Holds if `n` should be excluded from the consistency test `uniqueEnclosingCallable`. */
|
/** Holds if `n` should be excluded from the consistency test `uniqueEnclosingCallable`. */
|
||||||
predicate uniqueEnclosingCallableExclude(Node n) { none() }
|
predicate uniqueEnclosingCallableExclude(Node n) { none() }
|
||||||
|
|
||||||
|
/** Holds if `call` should be excluded from the consistency test `uniqueCallEnclosingCallable`. */
|
||||||
|
predicate uniqueCallEnclosingCallableExclude(DataFlowCall call) { none() }
|
||||||
|
|
||||||
/** Holds if `n` should be excluded from the consistency test `uniqueNodeLocation`. */
|
/** Holds if `n` should be excluded from the consistency test `uniqueNodeLocation`. */
|
||||||
predicate uniqueNodeLocationExclude(Node n) { none() }
|
predicate uniqueNodeLocationExclude(Node n) { none() }
|
||||||
|
|
||||||
@@ -86,6 +89,15 @@ module Consistency {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
query predicate uniqueCallEnclosingCallable(DataFlowCall call, string msg) {
|
||||||
|
exists(int c |
|
||||||
|
c = count(call.getEnclosingCallable()) and
|
||||||
|
c != 1 and
|
||||||
|
not any(ConsistencyConfiguration conf).uniqueCallEnclosingCallableExclude(call) and
|
||||||
|
msg = "Call should have one enclosing callable but has " + c + "."
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
query predicate uniqueType(Node n, string msg) {
|
query predicate uniqueType(Node n, string msg) {
|
||||||
exists(int c |
|
exists(int c |
|
||||||
n instanceof RelevantNode and
|
n instanceof RelevantNode and
|
||||||
|
|||||||
Reference in New Issue
Block a user