mirror of
https://github.com/github/codeql.git
synced 2026-05-02 20:25:13 +02:00
Simplify test interface in FlowSummaryImpl.qll
This commit is contained in:
@@ -2,32 +2,20 @@ import shared.FlowSummaries
|
||||
import semmle.code.csharp.dataflow.internal.ExternalFlow
|
||||
import External
|
||||
|
||||
module TestSummaryInput implements TestSummaryInputSig {
|
||||
class RelevantSummarizedCallable = IncludeSummarizedCallable;
|
||||
final private class NeutralCallableFinal = NeutralCallable;
|
||||
|
||||
class RelevantNeutralCallable extends NeutralCallableFinal {
|
||||
final string getCallableCsv() { result = asPartialNeutralModel(this) }
|
||||
}
|
||||
|
||||
module TestNeutralInput implements TestNeutralInputSig {
|
||||
class RelevantNeutralCallable instanceof NeutralCallable {
|
||||
final string getCallableCsv() { result = asPartialNeutralModel(this) }
|
||||
|
||||
string toString() { result = super.toString() }
|
||||
}
|
||||
class RelevantSourceCallable extends SourceCallable {
|
||||
string getCallableCsv() { result = asPartialModel(this) }
|
||||
}
|
||||
|
||||
module TestSourceSinkInput implements TestSourceSinkInputSig {
|
||||
class RelevantSourceCallable instanceof SourceCallable {
|
||||
string getCallableCsv() { result = asPartialModel(this) }
|
||||
|
||||
string toString() { result = super.toString() }
|
||||
}
|
||||
|
||||
class RelevantSinkCallable instanceof SinkCallable {
|
||||
string getCallableCsv() { result = asPartialModel(this) }
|
||||
|
||||
string toString() { result = super.toString() }
|
||||
}
|
||||
class RelevantSinkCallable extends SinkCallable {
|
||||
string getCallableCsv() { result = asPartialModel(this) }
|
||||
}
|
||||
|
||||
import TestSummaryOutput<TestSummaryInput>
|
||||
import TestNeutralOutput<TestNeutralInput>
|
||||
import TestSourceSinkOutput<TestSourceSinkInput>
|
||||
import TestSummaryOutput<IncludeSummarizedCallable>
|
||||
import TestNeutralOutput<RelevantNeutralCallable>
|
||||
import TestSourceSinkOutput<RelevantSourceCallable, RelevantSinkCallable>
|
||||
|
||||
@@ -1,13 +1,7 @@
|
||||
import shared.FlowSummaries
|
||||
private import semmle.code.csharp.dataflow.internal.ExternalFlow
|
||||
|
||||
module TestSummaryInput implements TestSummaryInputSig {
|
||||
class RelevantSummarizedCallable = IncludeSummarizedCallable;
|
||||
}
|
||||
|
||||
import TestSummaryOutput<TestSummaryInput>
|
||||
|
||||
class IncludeFilteredSummarizedCallable extends RelevantSummarizedCallable {
|
||||
class IncludeFilteredSummarizedCallable extends IncludeSummarizedCallable {
|
||||
/**
|
||||
* Holds if flow is propagated between `input` and `output` and
|
||||
* if there is no summary for a callable in a `base` class or interface
|
||||
@@ -16,7 +10,7 @@ class IncludeFilteredSummarizedCallable extends RelevantSummarizedCallable {
|
||||
override predicate relevantSummary(
|
||||
SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue
|
||||
) {
|
||||
this.(SummarizedCallableImpl).propagatesFlow(input, output, preservesValue) and
|
||||
this.propagatesFlow(input, output, preservesValue) and
|
||||
not exists(IncludeSummarizedCallable rsc |
|
||||
isBaseCallableOrPrototype(rsc) and
|
||||
rsc.(SummarizedCallableImpl).propagatesFlow(input, output, preservesValue) and
|
||||
@@ -24,3 +18,5 @@ class IncludeFilteredSummarizedCallable extends RelevantSummarizedCallable {
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
import TestSummaryOutput<IncludeFilteredSummarizedCallable>
|
||||
|
||||
Reference in New Issue
Block a user