diff --git a/csharp/ql/test/utils/model-generator/CaptureNegativeSummaryModels.expected b/csharp/ql/test/utils/model-generator/dataflow/CaptureNegativeSummaryModels.expected similarity index 100% rename from csharp/ql/test/utils/model-generator/CaptureNegativeSummaryModels.expected rename to csharp/ql/test/utils/model-generator/dataflow/CaptureNegativeSummaryModels.expected diff --git a/csharp/ql/test/utils/model-generator/CaptureNegativeSummaryModels.qlref b/csharp/ql/test/utils/model-generator/dataflow/CaptureNegativeSummaryModels.qlref similarity index 100% rename from csharp/ql/test/utils/model-generator/CaptureNegativeSummaryModels.qlref rename to csharp/ql/test/utils/model-generator/dataflow/CaptureNegativeSummaryModels.qlref diff --git a/csharp/ql/test/utils/model-generator/CaptureSinkModels.expected b/csharp/ql/test/utils/model-generator/dataflow/CaptureSinkModels.expected similarity index 100% rename from csharp/ql/test/utils/model-generator/CaptureSinkModels.expected rename to csharp/ql/test/utils/model-generator/dataflow/CaptureSinkModels.expected diff --git a/csharp/ql/test/utils/model-generator/CaptureSinkModels.qlref b/csharp/ql/test/utils/model-generator/dataflow/CaptureSinkModels.qlref similarity index 100% rename from csharp/ql/test/utils/model-generator/CaptureSinkModels.qlref rename to csharp/ql/test/utils/model-generator/dataflow/CaptureSinkModels.qlref diff --git a/csharp/ql/test/utils/model-generator/CaptureSourceModels.expected b/csharp/ql/test/utils/model-generator/dataflow/CaptureSourceModels.expected similarity index 100% rename from csharp/ql/test/utils/model-generator/CaptureSourceModels.expected rename to csharp/ql/test/utils/model-generator/dataflow/CaptureSourceModels.expected diff --git a/csharp/ql/test/utils/model-generator/CaptureSourceModels.qlref b/csharp/ql/test/utils/model-generator/dataflow/CaptureSourceModels.qlref similarity index 100% rename from csharp/ql/test/utils/model-generator/CaptureSourceModels.qlref rename to csharp/ql/test/utils/model-generator/dataflow/CaptureSourceModels.qlref diff --git a/csharp/ql/test/utils/model-generator/CaptureSummaryModels.expected b/csharp/ql/test/utils/model-generator/dataflow/CaptureSummaryModels.expected similarity index 100% rename from csharp/ql/test/utils/model-generator/CaptureSummaryModels.expected rename to csharp/ql/test/utils/model-generator/dataflow/CaptureSummaryModels.expected diff --git a/csharp/ql/test/utils/model-generator/CaptureSummaryModels.qlref b/csharp/ql/test/utils/model-generator/dataflow/CaptureSummaryModels.qlref similarity index 100% rename from csharp/ql/test/utils/model-generator/CaptureSummaryModels.qlref rename to csharp/ql/test/utils/model-generator/dataflow/CaptureSummaryModels.qlref diff --git a/csharp/ql/test/utils/model-generator/NoSummaries.cs b/csharp/ql/test/utils/model-generator/dataflow/NoSummaries.cs similarity index 100% rename from csharp/ql/test/utils/model-generator/NoSummaries.cs rename to csharp/ql/test/utils/model-generator/dataflow/NoSummaries.cs diff --git a/csharp/ql/test/utils/model-generator/Sinks.cs b/csharp/ql/test/utils/model-generator/dataflow/Sinks.cs similarity index 100% rename from csharp/ql/test/utils/model-generator/Sinks.cs rename to csharp/ql/test/utils/model-generator/dataflow/Sinks.cs diff --git a/csharp/ql/test/utils/model-generator/Sources.cs b/csharp/ql/test/utils/model-generator/dataflow/Sources.cs similarity index 100% rename from csharp/ql/test/utils/model-generator/Sources.cs rename to csharp/ql/test/utils/model-generator/dataflow/Sources.cs diff --git a/csharp/ql/test/utils/model-generator/Summaries.cs b/csharp/ql/test/utils/model-generator/dataflow/Summaries.cs similarity index 99% rename from csharp/ql/test/utils/model-generator/Summaries.cs rename to csharp/ql/test/utils/model-generator/dataflow/Summaries.cs index 28e777700f2..3db83726765 100644 --- a/csharp/ql/test/utils/model-generator/Summaries.cs +++ b/csharp/ql/test/utils/model-generator/dataflow/Summaries.cs @@ -259,4 +259,4 @@ public class EqualsGetHashCodeNoFlow { return intTainted; } -} \ No newline at end of file +} diff --git a/csharp/ql/test/utils/model-generator/options b/csharp/ql/test/utils/model-generator/dataflow/options similarity index 52% rename from csharp/ql/test/utils/model-generator/options rename to csharp/ql/test/utils/model-generator/dataflow/options index a55169c6e97..ed33eca5326 100644 --- a/csharp/ql/test/utils/model-generator/options +++ b/csharp/ql/test/utils/model-generator/dataflow/options @@ -1,2 +1,2 @@ semmle-extractor-options: /r:System.Linq.dll /r:System.Collections.Specialized.dll -semmle-extractor-options: ${testdir}/../../resources/stubs/System.Web.cs +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/utils/model-generator/theorems/CaptureTheoremsForFreeSummaryModels.expected b/csharp/ql/test/utils/model-generator/theorems/CaptureTheoremsForFreeSummaryModels.expected new file mode 100644 index 00000000000..d9fbea26bd6 --- /dev/null +++ b/csharp/ql/test/utils/model-generator/theorems/CaptureTheoremsForFreeSummaryModels.expected @@ -0,0 +1,14 @@ +| Summaries;CollectionTheorems1<>;false;Add;(T);;Argument[0];Argument[this].SyntheticField[ArgT].Element;taint;generated | +| Summaries;CollectionTheorems1<>;false;First;();;Argument[this].SyntheticField[ArgT].Element;ReturnValue;taint;generated | +| Summaries;Theorems1<>;false;Apply;(System.Func);;Argument[this].SyntheticField[ArgT];Argument[0].Parameter[0];taint;generated | +| Summaries;Theorems1<>;false;Get;();;Argument[this].SyntheticField[ArgT];ReturnValue;taint;generated | +| Summaries;Theorems1<>;false;Get;(System.Object);;Argument[this].SyntheticField[ArgT];ReturnValue;taint;generated | +| Summaries;Theorems1<>;false;Id;(T);;Argument[0];ReturnValue;taint;generated | +| Summaries;Theorems1<>;false;Set;(System.Int32,T);;Argument[1];Argument[this].SyntheticField[ArgT];taint;generated | +| Summaries;Theorems1<>;false;Set;(T);;Argument[0];Argument[this].SyntheticField[ArgT];taint;generated | +| Summaries;Theorems1<>;false;Theorems1;(T);;Argument[0];Argument[this].SyntheticField[ArgT];taint;generated | +| Summaries;Theorems1<>;false;Transform;(System.Int32,T);;Argument[1];ReturnValue;taint;generated | +| Summaries;Theorems1<>;false;Transform<>;(S);;Argument[0];ReturnValue;taint;generated | +| Summaries;Theorems1<>;false;get_Prop;();;Argument[this].SyntheticField[ArgT];ReturnValue;taint;generated | +| Summaries;Theorems1<>;false;set_Prop;(T);;Argument[0];Argument[this].SyntheticField[ArgT];taint;generated | +| Summaries;Theorems2;false;Transform<>;(T);;Argument[0];ReturnValue;taint;generated | diff --git a/csharp/ql/test/utils/model-generator/theorems/CaptureTheoremsForFreeSummaryModels.qlref b/csharp/ql/test/utils/model-generator/theorems/CaptureTheoremsForFreeSummaryModels.qlref new file mode 100644 index 00000000000..7084f0a5aa0 --- /dev/null +++ b/csharp/ql/test/utils/model-generator/theorems/CaptureTheoremsForFreeSummaryModels.qlref @@ -0,0 +1 @@ +utils/model-generator/CaptureTheoremsForFreeSummaryModels.ql \ No newline at end of file diff --git a/csharp/ql/test/utils/model-generator/theorems/TheoremSummaries.cs b/csharp/ql/test/utils/model-generator/theorems/TheoremSummaries.cs new file mode 100644 index 00000000000..9b0a2a32de5 --- /dev/null +++ b/csharp/ql/test/utils/model-generator/theorems/TheoremSummaries.cs @@ -0,0 +1,49 @@ +using System; +using System.Linq; +using System.Collections; +using System.Collections.Generic; + +namespace Summaries; + +public class Theorems1 { + + public T Prop { + get { throw null; } + set { throw null; } + } + + public Theorems1(T t) { throw null; } + + public T Get() { throw null; } + + public T Get(object x) { throw null; } + + public T Id(T x) { throw null; } + + public T Transform(int x, T y) { throw null; } + + public S Transform(S x) { throw null; } + + public void Set(T x) { throw null; } + + public void Set(int x, T y) { throw null; } + + // No summary as S is unrelated to T + public void Set(S x) { throw null; } + + public int Apply(Func f) { throw null; } +} + +public class Theorems2 { + + public T Transform(T x) { throw null; } +} + +public class CollectionTheorems1 : IEnumerable { + IEnumerator IEnumerable.GetEnumerator() { throw null; } + IEnumerator IEnumerable.GetEnumerator() { throw null; } + + public T First() { throw null; } + + public void Add(T x) { throw null; } +} \ No newline at end of file