diff --git a/python/ql/test/experimental/dataflow/TestUtil/DataFlowConsistency.qll b/python/ql/test/experimental/dataflow/TestUtil/DataFlowConsistency.qll new file mode 100644 index 00000000000..b11c3ecd838 --- /dev/null +++ b/python/ql/test/experimental/dataflow/TestUtil/DataFlowConsistency.qll @@ -0,0 +1,11 @@ +import semmle.python.dataflow.new.DataFlow::DataFlow +import semmle.python.dataflow.new.internal.DataFlowPrivate +import semmle.python.dataflow.new.internal.DataFlowImplConsistency::Consistency + +// TODO: this should be promoted to be a REAL consistency query by being placed in +// `python/ql/consistency-queries`. For for now it resides here. +private class MyConsistencyConfiguration extends ConsistencyConfiguration { + override predicate argHasPostUpdateExclude(ArgumentNode n) { + exists(ArgumentPosition apos | n.argumentOf(_, apos) and apos.isDictSplat()) + } +} diff --git a/python/ql/test/experimental/dataflow/basic/dataflow-consistency.ql b/python/ql/test/experimental/dataflow/basic/dataflow-consistency.ql index 6743fa10d27..3dda6701a83 100644 --- a/python/ql/test/experimental/dataflow/basic/dataflow-consistency.ql +++ b/python/ql/test/experimental/dataflow/basic/dataflow-consistency.ql @@ -1 +1,2 @@ -import semmle.python.dataflow.new.internal.DataFlowImplConsistency::Consistency +import python +import experimental.dataflow.TestUtil.DataFlowConsistency diff --git a/python/ql/test/experimental/dataflow/callgraph_crosstalk/dataflow-consistency.ql b/python/ql/test/experimental/dataflow/callgraph_crosstalk/dataflow-consistency.ql index 6743fa10d27..3dda6701a83 100644 --- a/python/ql/test/experimental/dataflow/callgraph_crosstalk/dataflow-consistency.ql +++ b/python/ql/test/experimental/dataflow/callgraph_crosstalk/dataflow-consistency.ql @@ -1 +1,2 @@ -import semmle.python.dataflow.new.internal.DataFlowImplConsistency::Consistency +import python +import experimental.dataflow.TestUtil.DataFlowConsistency diff --git a/python/ql/test/experimental/dataflow/calls/dataflow-consistency.ql b/python/ql/test/experimental/dataflow/calls/dataflow-consistency.ql index 6743fa10d27..3dda6701a83 100644 --- a/python/ql/test/experimental/dataflow/calls/dataflow-consistency.ql +++ b/python/ql/test/experimental/dataflow/calls/dataflow-consistency.ql @@ -1 +1,2 @@ -import semmle.python.dataflow.new.internal.DataFlowImplConsistency::Consistency +import python +import experimental.dataflow.TestUtil.DataFlowConsistency diff --git a/python/ql/test/experimental/dataflow/consistency/dataflow-consistency.ql b/python/ql/test/experimental/dataflow/consistency/dataflow-consistency.ql index 6743fa10d27..3dda6701a83 100644 --- a/python/ql/test/experimental/dataflow/consistency/dataflow-consistency.ql +++ b/python/ql/test/experimental/dataflow/consistency/dataflow-consistency.ql @@ -1 +1,2 @@ -import semmle.python.dataflow.new.internal.DataFlowImplConsistency::Consistency +import python +import experimental.dataflow.TestUtil.DataFlowConsistency diff --git a/python/ql/test/experimental/dataflow/coverage/dataflow-consistency.expected b/python/ql/test/experimental/dataflow/coverage/dataflow-consistency.expected index ec828310226..8f4dbd04742 100644 --- a/python/ql/test/experimental/dataflow/coverage/dataflow-consistency.expected +++ b/python/ql/test/experimental/dataflow/coverage/dataflow-consistency.expected @@ -17,20 +17,5 @@ uniquePostUpdate postIsInSameCallable reverseRead argHasPostUpdate -| argumentPassing.py:75:59:75:80 | ControlFlowNode for Dict | ArgumentNode is missing PostUpdateNode. | -| argumentPassing.py:105:35:105:45 | ControlFlowNode for Dict | ArgumentNode is missing PostUpdateNode. | -| argumentPassing.py:106:29:106:39 | ControlFlowNode for Dict | ArgumentNode is missing PostUpdateNode. | -| argumentPassing.py:106:44:106:54 | ControlFlowNode for Dict | ArgumentNode is missing PostUpdateNode. | -| argumentPassing.py:106:59:106:69 | ControlFlowNode for Dict | ArgumentNode is missing PostUpdateNode. | -| argumentPassing.py:120:30:120:40 | ControlFlowNode for Dict | ArgumentNode is missing PostUpdateNode. | -| argumentPassing.py:182:19:182:22 | ControlFlowNode for args | ArgumentNode is missing PostUpdateNode. | -| argumentPassing.py:196:21:196:24 | ControlFlowNode for args | ArgumentNode is missing PostUpdateNode. | -| argumentPassing.py:199:13:199:16 | ControlFlowNode for args | ArgumentNode is missing PostUpdateNode. | -| file:///home/rasmus/.pyenv/versions/3.9.5/lib/python3.9/functools.py:400:58:400:70 | ControlFlowNode for Attribute | ArgumentNode is missing PostUpdateNode. | -| test.py:396:30:396:42 | ControlFlowNode for Dict | ArgumentNode is missing PostUpdateNode. | -| test.py:422:33:422:46 | ControlFlowNode for Dict | ArgumentNode is missing PostUpdateNode. | -| test.py:512:30:512:42 | ControlFlowNode for Dict | ArgumentNode is missing PostUpdateNode. | -| test.py:529:33:529:46 | ControlFlowNode for Dict | ArgumentNode is missing PostUpdateNode. | -| test.py:838:17:838:18 | ControlFlowNode for dd | ArgumentNode is missing PostUpdateNode. | postWithInFlow viableImplInCallContextTooLarge diff --git a/python/ql/test/experimental/dataflow/coverage/dataflow-consistency.ql b/python/ql/test/experimental/dataflow/coverage/dataflow-consistency.ql index 6743fa10d27..3dda6701a83 100644 --- a/python/ql/test/experimental/dataflow/coverage/dataflow-consistency.ql +++ b/python/ql/test/experimental/dataflow/coverage/dataflow-consistency.ql @@ -1 +1,2 @@ -import semmle.python.dataflow.new.internal.DataFlowImplConsistency::Consistency +import python +import experimental.dataflow.TestUtil.DataFlowConsistency diff --git a/python/ql/test/experimental/dataflow/fieldflow/dataflow-consistency.ql b/python/ql/test/experimental/dataflow/fieldflow/dataflow-consistency.ql index 6743fa10d27..3dda6701a83 100644 --- a/python/ql/test/experimental/dataflow/fieldflow/dataflow-consistency.ql +++ b/python/ql/test/experimental/dataflow/fieldflow/dataflow-consistency.ql @@ -1 +1,2 @@ -import semmle.python.dataflow.new.internal.DataFlowImplConsistency::Consistency +import python +import experimental.dataflow.TestUtil.DataFlowConsistency diff --git a/python/ql/test/experimental/dataflow/global-flow/dataflow-consistency.ql b/python/ql/test/experimental/dataflow/global-flow/dataflow-consistency.ql index 6743fa10d27..3dda6701a83 100644 --- a/python/ql/test/experimental/dataflow/global-flow/dataflow-consistency.ql +++ b/python/ql/test/experimental/dataflow/global-flow/dataflow-consistency.ql @@ -1 +1,2 @@ -import semmle.python.dataflow.new.internal.DataFlowImplConsistency::Consistency +import python +import experimental.dataflow.TestUtil.DataFlowConsistency diff --git a/python/ql/test/experimental/dataflow/match/dataflow-consistency.ql b/python/ql/test/experimental/dataflow/match/dataflow-consistency.ql index 6743fa10d27..3dda6701a83 100644 --- a/python/ql/test/experimental/dataflow/match/dataflow-consistency.ql +++ b/python/ql/test/experimental/dataflow/match/dataflow-consistency.ql @@ -1 +1,2 @@ -import semmle.python.dataflow.new.internal.DataFlowImplConsistency::Consistency +import python +import experimental.dataflow.TestUtil.DataFlowConsistency diff --git a/python/ql/test/experimental/dataflow/pep_328/dataflow-consistency.ql b/python/ql/test/experimental/dataflow/pep_328/dataflow-consistency.ql index 6743fa10d27..3dda6701a83 100644 --- a/python/ql/test/experimental/dataflow/pep_328/dataflow-consistency.ql +++ b/python/ql/test/experimental/dataflow/pep_328/dataflow-consistency.ql @@ -1 +1,2 @@ -import semmle.python.dataflow.new.internal.DataFlowImplConsistency::Consistency +import python +import experimental.dataflow.TestUtil.DataFlowConsistency diff --git a/python/ql/test/experimental/dataflow/regression/dataflow-consistency.ql b/python/ql/test/experimental/dataflow/regression/dataflow-consistency.ql index 6743fa10d27..3dda6701a83 100644 --- a/python/ql/test/experimental/dataflow/regression/dataflow-consistency.ql +++ b/python/ql/test/experimental/dataflow/regression/dataflow-consistency.ql @@ -1 +1,2 @@ -import semmle.python.dataflow.new.internal.DataFlowImplConsistency::Consistency +import python +import experimental.dataflow.TestUtil.DataFlowConsistency diff --git a/python/ql/test/experimental/dataflow/strange-essaflow/dataflow-consistency.ql b/python/ql/test/experimental/dataflow/strange-essaflow/dataflow-consistency.ql index 6743fa10d27..3dda6701a83 100644 --- a/python/ql/test/experimental/dataflow/strange-essaflow/dataflow-consistency.ql +++ b/python/ql/test/experimental/dataflow/strange-essaflow/dataflow-consistency.ql @@ -1 +1,2 @@ -import semmle.python.dataflow.new.internal.DataFlowImplConsistency::Consistency +import python +import experimental.dataflow.TestUtil.DataFlowConsistency diff --git a/python/ql/test/experimental/dataflow/tainttracking/basic/dataflow-consistency.ql b/python/ql/test/experimental/dataflow/tainttracking/basic/dataflow-consistency.ql index 6743fa10d27..3dda6701a83 100644 --- a/python/ql/test/experimental/dataflow/tainttracking/basic/dataflow-consistency.ql +++ b/python/ql/test/experimental/dataflow/tainttracking/basic/dataflow-consistency.ql @@ -1 +1,2 @@ -import semmle.python.dataflow.new.internal.DataFlowImplConsistency::Consistency +import python +import experimental.dataflow.TestUtil.DataFlowConsistency diff --git a/python/ql/test/experimental/dataflow/tainttracking/commonSanitizer/dataflow-consistency.ql b/python/ql/test/experimental/dataflow/tainttracking/commonSanitizer/dataflow-consistency.ql index 6743fa10d27..3dda6701a83 100644 --- a/python/ql/test/experimental/dataflow/tainttracking/commonSanitizer/dataflow-consistency.ql +++ b/python/ql/test/experimental/dataflow/tainttracking/commonSanitizer/dataflow-consistency.ql @@ -1 +1,2 @@ -import semmle.python.dataflow.new.internal.DataFlowImplConsistency::Consistency +import python +import experimental.dataflow.TestUtil.DataFlowConsistency diff --git a/python/ql/test/experimental/dataflow/tainttracking/customSanitizer/dataflow-consistency.ql b/python/ql/test/experimental/dataflow/tainttracking/customSanitizer/dataflow-consistency.ql index 6743fa10d27..3dda6701a83 100644 --- a/python/ql/test/experimental/dataflow/tainttracking/customSanitizer/dataflow-consistency.ql +++ b/python/ql/test/experimental/dataflow/tainttracking/customSanitizer/dataflow-consistency.ql @@ -1 +1,2 @@ -import semmle.python.dataflow.new.internal.DataFlowImplConsistency::Consistency +import python +import experimental.dataflow.TestUtil.DataFlowConsistency diff --git a/python/ql/test/experimental/dataflow/tainttracking/defaultAdditionalTaintStep-py3/dataflow-consistency.ql b/python/ql/test/experimental/dataflow/tainttracking/defaultAdditionalTaintStep-py3/dataflow-consistency.ql index 6743fa10d27..3dda6701a83 100644 --- a/python/ql/test/experimental/dataflow/tainttracking/defaultAdditionalTaintStep-py3/dataflow-consistency.ql +++ b/python/ql/test/experimental/dataflow/tainttracking/defaultAdditionalTaintStep-py3/dataflow-consistency.ql @@ -1 +1,2 @@ -import semmle.python.dataflow.new.internal.DataFlowImplConsistency::Consistency +import python +import experimental.dataflow.TestUtil.DataFlowConsistency diff --git a/python/ql/test/experimental/dataflow/tainttracking/defaultAdditionalTaintStep/dataflow-consistency.ql b/python/ql/test/experimental/dataflow/tainttracking/defaultAdditionalTaintStep/dataflow-consistency.ql index 6743fa10d27..3dda6701a83 100644 --- a/python/ql/test/experimental/dataflow/tainttracking/defaultAdditionalTaintStep/dataflow-consistency.ql +++ b/python/ql/test/experimental/dataflow/tainttracking/defaultAdditionalTaintStep/dataflow-consistency.ql @@ -1 +1,2 @@ -import semmle.python.dataflow.new.internal.DataFlowImplConsistency::Consistency +import python +import experimental.dataflow.TestUtil.DataFlowConsistency diff --git a/python/ql/test/experimental/dataflow/tainttracking/unwanted-global-flow/dataflow-consistency.ql b/python/ql/test/experimental/dataflow/tainttracking/unwanted-global-flow/dataflow-consistency.ql index 6743fa10d27..3dda6701a83 100644 --- a/python/ql/test/experimental/dataflow/tainttracking/unwanted-global-flow/dataflow-consistency.ql +++ b/python/ql/test/experimental/dataflow/tainttracking/unwanted-global-flow/dataflow-consistency.ql @@ -1 +1,2 @@ -import semmle.python.dataflow.new.internal.DataFlowImplConsistency::Consistency +import python +import experimental.dataflow.TestUtil.DataFlowConsistency diff --git a/python/ql/test/experimental/dataflow/typetracking/dataflow-consistency.ql b/python/ql/test/experimental/dataflow/typetracking/dataflow-consistency.ql index 6743fa10d27..3dda6701a83 100644 --- a/python/ql/test/experimental/dataflow/typetracking/dataflow-consistency.ql +++ b/python/ql/test/experimental/dataflow/typetracking/dataflow-consistency.ql @@ -1 +1,2 @@ -import semmle.python.dataflow.new.internal.DataFlowImplConsistency::Consistency +import python +import experimental.dataflow.TestUtil.DataFlowConsistency diff --git a/python/ql/test/experimental/dataflow/variable-capture/dataflow-consistency.ql b/python/ql/test/experimental/dataflow/variable-capture/dataflow-consistency.ql index 6743fa10d27..3dda6701a83 100644 --- a/python/ql/test/experimental/dataflow/variable-capture/dataflow-consistency.ql +++ b/python/ql/test/experimental/dataflow/variable-capture/dataflow-consistency.ql @@ -1 +1,2 @@ -import semmle.python.dataflow.new.internal.DataFlowImplConsistency::Consistency +import python +import experimental.dataflow.TestUtil.DataFlowConsistency diff --git a/python/ql/test/experimental/library-tests/CallGraph/dataflow-consistency.ql b/python/ql/test/experimental/library-tests/CallGraph/dataflow-consistency.ql index 6743fa10d27..3dda6701a83 100644 --- a/python/ql/test/experimental/library-tests/CallGraph/dataflow-consistency.ql +++ b/python/ql/test/experimental/library-tests/CallGraph/dataflow-consistency.ql @@ -1 +1,2 @@ -import semmle.python.dataflow.new.internal.DataFlowImplConsistency::Consistency +import python +import experimental.dataflow.TestUtil.DataFlowConsistency diff --git a/python/ql/test/library-tests/ApiGraphs/py3/dataflow-consistency.ql b/python/ql/test/library-tests/ApiGraphs/py3/dataflow-consistency.ql index 6743fa10d27..3dda6701a83 100644 --- a/python/ql/test/library-tests/ApiGraphs/py3/dataflow-consistency.ql +++ b/python/ql/test/library-tests/ApiGraphs/py3/dataflow-consistency.ql @@ -1 +1,2 @@ -import semmle.python.dataflow.new.internal.DataFlowImplConsistency::Consistency +import python +import experimental.dataflow.TestUtil.DataFlowConsistency diff --git a/python/ql/test/library-tests/frameworks/django-orm/dataflow-consistency.ql b/python/ql/test/library-tests/frameworks/django-orm/dataflow-consistency.ql index 6743fa10d27..3dda6701a83 100644 --- a/python/ql/test/library-tests/frameworks/django-orm/dataflow-consistency.ql +++ b/python/ql/test/library-tests/frameworks/django-orm/dataflow-consistency.ql @@ -1 +1,2 @@ -import semmle.python.dataflow.new.internal.DataFlowImplConsistency::Consistency +import python +import experimental.dataflow.TestUtil.DataFlowConsistency