Fix tests

This commit is contained in:
Tamas Vajk
2021-04-07 15:56:01 +02:00
parent cb9a9db356
commit c069c3384e
18 changed files with 36 additions and 16 deletions

View File

@@ -164,12 +164,10 @@ namespace Semmle.Extraction.CSharp.Entities
// In case this parameter belongs to an accessor of an indexer, we need
// to get the default value from the corresponding parameter belonging
// to the indexer itself
var method = (IMethodSymbol)symbol.ContainingSymbol;
if (method is not null)
if (symbol.ContainingSymbol is IMethodSymbol method)
{
var i = method.Parameters.IndexOf(symbol);
var indexer = (IPropertySymbol?)method.AssociatedSymbol;
if (indexer is not null)
if (method.AssociatedSymbol is IPropertySymbol indexer)
defaultValue = GetParameterDefaultValue(indexer.Parameters[i]);
}
}

View File

@@ -27,9 +27,6 @@ class Element extends DotNet::Element, @element {
/** Gets a location of this element, including sources and assemblies. */
override Location getALocation() { none() }
/** Holds if this element is from an assembly. */
predicate fromLibrary() { this.getFile().fromLibrary() }
/** Gets the parent of this element, if any. */
Element getParent() { result.getAChild() = this }

View File

@@ -28,6 +28,9 @@ class Element extends @dotnet_element {
/** Holds if this element is from source code. */
predicate fromSource() { this.getFile().fromSource() }
/** Holds if this element is from an assembly. */
predicate fromLibrary() { this.getFile().fromLibrary() }
/**
* Gets the "language" of this program element, as defined by the extension of the filename.
* For example, C# has language "cs", and Visual Basic has language "vb".

View File

@@ -2,4 +2,5 @@ import csharp
import Common
from SourceBasicBlock bb
where not bb.getFirstNode().getElement().fromLibrary()
select bb.getFirstNode(), bb.getLastNode(), bb.length()

View File

@@ -1,18 +1,25 @@
import csharp
import Common
/** Holds if `node` is not from a library. */
private predicate isSourceBased(SourceControlFlowNode node) { not node.getElement().fromLibrary() }
query predicate dominance(SourceControlFlowNode dom, SourceControlFlowNode node) {
isSourceBased(dom) and
dom.strictlyDominates(node) and
dom.getASuccessor() = node
}
query predicate postDominance(SourceControlFlowNode dom, SourceControlFlowNode node) {
isSourceBased(dom) and
dom.strictlyPostDominates(node) and
dom.getAPredecessor() = node
}
query predicate blockDominance(SourceBasicBlock dom, SourceBasicBlock bb) { dom.dominates(bb) }
query predicate blockDominance(SourceBasicBlock dom, SourceBasicBlock bb) {
isSourceBased(dom.getFirstNode()) and dom.dominates(bb)
}
query predicate postBlockDominance(SourceBasicBlock dom, SourceBasicBlock bb) {
dom.postDominates(bb)
isSourceBased(dom.getFirstNode()) and dom.postDominates(bb)
}

View File

@@ -4,6 +4,7 @@ import Common
query predicate edges(
SourceControlFlowNode node, SourceControlFlowNode successor, string attr, string val
) {
not node.getElement().fromLibrary() and
exists(ControlFlow::SuccessorType t | successor = node.getASuccessorByType(t) |
attr = "semmle.label" and
val = t.toString()

View File

@@ -1,6 +1,7 @@
import csharp
query predicate countSplits(ControlFlowElement cfe, int i) {
not cfe.fromLibrary() and
i = strictcount(ControlFlow::Nodes::ElementNode n | n.getElement() = cfe)
}

View File

@@ -1,4 +1,5 @@
import csharp
from DefaultValueExpr l
where l.fromSource()
select l, l.getValue()

View File

@@ -2,5 +2,7 @@ import csharp
import semmle.code.csharp.dataflow.TaintTracking
from DataFlow::Node pred, DataFlow::Node succ
where TaintTracking::localTaintStep(pred, succ)
where
TaintTracking::localTaintStep(pred, succ) and
not pred.asExpr().fromLibrary()
select pred, succ

View File

@@ -1,5 +1,5 @@
import csharp
from DataFlow::Node pred, DataFlow::Node succ
where DataFlow::localFlowStep(pred, succ)
where not pred.asExpr().fromLibrary() and DataFlow::localFlowStep(pred, succ)
select pred, succ

View File

@@ -1,5 +1,7 @@
import csharp
from DataFlow::Node pred, DataFlow::Node succ
where TaintTracking::localTaintStep(pred, succ)
where
not pred.asExpr().fromLibrary() and
TaintTracking::localTaintStep(pred, succ)
select pred, succ

View File

@@ -4,5 +4,7 @@ import semmle.code.csharp.dataflow.ModulusAnalysis
import semmle.code.csharp.dataflow.Bound
from ControlFlow::Nodes::ExprNode e, Bound b, int delta, int mod
where exprModulus(e, b, delta, mod)
where
not e.getExpr().fromLibrary() and
exprModulus(e, b, delta, mod)
select e, b.toString(), delta, mod

View File

@@ -18,4 +18,5 @@ string getASignString(ControlFlow::Nodes::ExprNode e) {
}
from ControlFlow::Nodes::ExprNode e
where not e.getExpr().fromLibrary()
select e, strictconcat(string s | s = getASignString(e) | s, " ")

View File

@@ -1,5 +1,5 @@
import csharp
from DataFlow::Node pred, DataFlow::Node succ
where DataFlow::localFlowStep(pred, succ)
where not pred.asExpr().fromLibrary() and DataFlow::localFlowStep(pred, succ)
select pred, succ

View File

@@ -1,4 +1,5 @@
import csharp
from Parameter p
where p.fromSource()
select p, p.getDefaultValue()

View File

@@ -1,6 +1,7 @@
import csharp
query predicate edges(ControlFlow::Node node, ControlFlow::Node successor, string attr, string val) {
not node.getElement().fromLibrary() and
exists(ControlFlow::SuccessorType t | successor = node.getASuccessorByType(t) |
attr = "semmle.label" and
val = t.toString()

View File

@@ -17,4 +17,6 @@ class UnknownLocalVariableDeclExpr extends LocalVariableDeclAndInitExpr {
override string toString() { result = "(unknown type) " + this.getName() }
}
query predicate edges(ControlFlow::Node n1, ControlFlow::Node n2) { n2 = n1.getASuccessor() }
query predicate edges(ControlFlow::Node n1, ControlFlow::Node n2) {
not n1.getElement().fromLibrary() and n2 = n1.getASuccessor()
}

File diff suppressed because one or more lines are too long