Skip to content

Commit d2a0f57

Browse files
committed
DataFlow: Add the concept of selected locations
This extension allows queries to be diff-informed even when the elements they select are different from the sources and sinks found by data flow. Most of the changes are boilerplate to use the new predicates in the backwards-compatible data-flow wrappers for all languages.
1 parent 197642c commit d2a0f57

File tree

39 files changed

+174
-10
lines changed

39 files changed

+174
-10
lines changed

cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* DEPRECATED: Use `semmle.code.cpp.dataflow.new.DataFlow` instead.
33
*/
44

5-
private import semmle.code.cpp.Location
5+
import semmle.code.cpp.Location
66
private import DataFlowImplSpecific
77
private import codeql.dataflow.internal.DataFlowImpl
88
import MakeImpl<Location, CppOldDataFlow>

cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl1.qll

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,10 @@ deprecated private module Config implements FullStateConfigSig {
285285
predicate includeHiddenNodes() { any(Configuration config).includeHiddenNodes() }
286286

287287
predicate observeDiffInformedIncrementalMode() { none() }
288+
289+
Location getASelectedSourceLocation(Node source) { none() }
290+
291+
Location getASelectedSinkLocation(Node sink) { none() }
288292
}
289293

290294
deprecated private import Impl<Config> as I

cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl2.qll

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,10 @@ deprecated private module Config implements FullStateConfigSig {
285285
predicate includeHiddenNodes() { any(Configuration config).includeHiddenNodes() }
286286

287287
predicate observeDiffInformedIncrementalMode() { none() }
288+
289+
Location getASelectedSourceLocation(Node source) { none() }
290+
291+
Location getASelectedSinkLocation(Node sink) { none() }
288292
}
289293

290294
deprecated private import Impl<Config> as I

cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl3.qll

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,10 @@ deprecated private module Config implements FullStateConfigSig {
285285
predicate includeHiddenNodes() { any(Configuration config).includeHiddenNodes() }
286286

287287
predicate observeDiffInformedIncrementalMode() { none() }
288+
289+
Location getASelectedSourceLocation(Node source) { none() }
290+
291+
Location getASelectedSinkLocation(Node sink) { none() }
288292
}
289293

290294
deprecated private import Impl<Config> as I

cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl4.qll

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,10 @@ deprecated private module Config implements FullStateConfigSig {
285285
predicate includeHiddenNodes() { any(Configuration config).includeHiddenNodes() }
286286

287287
predicate observeDiffInformedIncrementalMode() { none() }
288+
289+
Location getASelectedSourceLocation(Node source) { none() }
290+
291+
Location getASelectedSinkLocation(Node sink) { none() }
288292
}
289293

290294
deprecated private import Impl<Config> as I

cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplLocal.qll

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,10 @@ deprecated private module Config implements FullStateConfigSig {
285285
predicate includeHiddenNodes() { any(Configuration config).includeHiddenNodes() }
286286

287287
predicate observeDiffInformedIncrementalMode() { none() }
288+
289+
Location getASelectedSourceLocation(Node source) { none() }
290+
291+
Location getASelectedSinkLocation(Node sink) { none() }
288292
}
289293

290294
deprecated private import Impl<Config> as I
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
private import semmle.code.cpp.Location
1+
import semmle.code.cpp.Location
22
private import DataFlowImplSpecific
33
private import codeql.dataflow.internal.DataFlowImpl
44
import MakeImpl<Location, CppDataFlow>

cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl1.qll

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,10 @@ deprecated private module Config implements FullStateConfigSig {
285285
predicate includeHiddenNodes() { any(Configuration config).includeHiddenNodes() }
286286

287287
predicate observeDiffInformedIncrementalMode() { none() }
288+
289+
Location getASelectedSourceLocation(Node source) { none() }
290+
291+
Location getASelectedSinkLocation(Node sink) { none() }
288292
}
289293

290294
deprecated private import Impl<Config> as I

cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,10 @@ deprecated private module Config implements FullStateConfigSig {
285285
predicate includeHiddenNodes() { any(Configuration config).includeHiddenNodes() }
286286

287287
predicate observeDiffInformedIncrementalMode() { none() }
288+
289+
Location getASelectedSourceLocation(Node source) { none() }
290+
291+
Location getASelectedSinkLocation(Node sink) { none() }
288292
}
289293

290294
deprecated private import Impl<Config> as I

cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,10 @@ deprecated private module Config implements FullStateConfigSig {
285285
predicate includeHiddenNodes() { any(Configuration config).includeHiddenNodes() }
286286

287287
predicate observeDiffInformedIncrementalMode() { none() }
288+
289+
Location getASelectedSourceLocation(Node source) { none() }
290+
291+
Location getASelectedSinkLocation(Node sink) { none() }
288292
}
289293

290294
deprecated private import Impl<Config> as I

0 commit comments

Comments
 (0)