mirror of
https://github.com/github/codeql.git
synced 2026-04-28 02:05:14 +02:00
Merge pull request #16752 from michaelnebel/shared/sourcesinkcallables
C#/Java: Add some (shared) helper classes for Neutrals, Sources and Sink
This commit is contained in:
@@ -270,6 +270,20 @@ module Make<
|
||||
NeutralSummaryCallable() { this.getKind() = "summary" }
|
||||
}
|
||||
|
||||
/**
|
||||
* A callable that has a neutral source model.
|
||||
*/
|
||||
class NeutralSourceCallable extends NeutralCallableFinal {
|
||||
NeutralSourceCallable() { this.getKind() = "source" }
|
||||
}
|
||||
|
||||
/**
|
||||
* A callable that has a neutral sink model.
|
||||
*/
|
||||
class NeutralSinkCallable extends NeutralCallableFinal {
|
||||
NeutralSinkCallable() { this.getKind() = "sink" }
|
||||
}
|
||||
|
||||
/**
|
||||
* A callable that has a neutral model.
|
||||
*/
|
||||
@@ -1739,6 +1753,37 @@ module Make<
|
||||
)
|
||||
}
|
||||
|
||||
final private class SourceOrSinkElementFinal = SourceOrSinkElement;
|
||||
|
||||
bindingset[this]
|
||||
abstract private class SourceSinkModelCallableBase extends SourceOrSinkElementFinal {
|
||||
/**
|
||||
* Holds if there exists a manual model that applies to this.
|
||||
*/
|
||||
final predicate hasManualModel() { any(Provenance p | this.hasProvenance(p)).isManual() }
|
||||
|
||||
/**
|
||||
* Holds if this has provenance `p`.
|
||||
*/
|
||||
abstract predicate hasProvenance(Provenance p);
|
||||
}
|
||||
|
||||
/**
|
||||
* A callable that has a source model.
|
||||
*/
|
||||
abstract class SourceModelCallable extends SourceSinkModelCallableBase {
|
||||
bindingset[this]
|
||||
SourceModelCallable() { exists(this) }
|
||||
}
|
||||
|
||||
/**
|
||||
* A callable that has a sink model.
|
||||
*/
|
||||
abstract class SinkModelCallable extends SourceSinkModelCallableBase {
|
||||
bindingset[this]
|
||||
SinkModelCallable() { exists(this) }
|
||||
}
|
||||
|
||||
/** A source or sink relevant for testing. */
|
||||
signature class RelevantSourceOrSinkElementSig extends SourceOrSinkElement {
|
||||
/** Gets the string representation of this callable used by `source/1` or `sink/1`. */
|
||||
|
||||
Reference in New Issue
Block a user