C#: Rename -> for .

This commit is contained in:
Michael Nebel
2022-12-06 13:53:50 +01:00
parent 29ccac8e93
commit 27efb0d843
34 changed files with 144 additions and 144 deletions

View File

@@ -185,9 +185,9 @@ class PageDirective extends AspDirective {
* Gets the 'CodeBehind' class from which this page inherits.
*/
ValueOrRefType getInheritedType() {
exists(string namespace, string type |
result.hasQualifiedName(namespace, type) and
splitQualifiedName(this.getInheritedTypeQualifiedName(), namespace, type)
exists(string qualifier, string type |
result.hasQualifiedName(qualifier, type) and
splitQualifiedName(this.getInheritedTypeQualifiedName(), qualifier, type)
)
}

View File

@@ -485,11 +485,11 @@ class InvalidOverride extends MethodViolation {
}
override string getMessage() {
exists(string namespace, string type |
base.getDeclaringType().hasQualifiedName(namespace, type)
exists(string qualifier, string type |
base.getDeclaringType().hasQualifiedName(qualifier, type)
|
result =
"Overridden method from " + getQualifiedName(namespace, type) + " is not in a base type"
"Overridden method from " + getQualifiedName(qualifier, type) + " is not in a base type"
)
}
}

View File

@@ -51,10 +51,10 @@ class Type extends DotNet::Type, Declaration, TypeContainer, @cil_type {
*/
Type getUnboundType() { cil_type(this, _, _, _, result) }
override predicate hasQualifiedName(string namespace, string name) {
override predicate hasQualifiedName(string qualifier, string name) {
name = this.getName() and
exists(string pnamespace, string pname | this.getParent().hasQualifiedName(pnamespace, pname) |
namespace = getQualifiedName(pnamespace, pname)
exists(string pqualifier, string pname | this.getParent().hasQualifiedName(pqualifier, pname) |
qualifier = getQualifiedName(pqualifier, pname)
)
}

View File

@@ -29,7 +29,7 @@ class Variable extends DotNet::Variable, Declaration, DataFlowNode, @cil_variabl
/** A stack variable. Either a local variable (`LocalVariable`) or a parameter (`Parameter`). */
class StackVariable extends Variable, @cil_stack_variable {
override predicate hasQualifiedName(string namespace, string name) { none() }
override predicate hasQualifiedName(string qualifier, string name) { none() }
}
/**

View File

@@ -456,8 +456,8 @@ class Operator extends Callable, Member, Attributable, @operator {
override Parameter getRawParameter(int i) { result = this.getParameter(i) }
override predicate hasQualifiedName(string namespace, string name) {
super.hasQualifiedName(namespace, _) and
override predicate hasQualifiedName(string qualifier, string name) {
super.hasQualifiedName(qualifier, _) and
name = this.getFunctionName()
}
@@ -1001,10 +1001,10 @@ class LocalFunction extends Callable, Modifiable, Attributable, @local_function
override Callable getEnclosingCallable() { result = this.getStatement().getEnclosingCallable() }
override predicate hasQualifiedName(string namespace, string name) {
exists(string cnamespace, string type |
this.getEnclosingCallable().hasQualifiedName(cnamespace, type) and
namespace = getQualifiedName(cnamespace, type)
override predicate hasQualifiedName(string qualifier, string name) {
exists(string cqualifier, string type |
this.getEnclosingCallable().hasQualifiedName(cqualifier, type) and
qualifier = getQualifiedName(cqualifier, type)
) and
name = this.getName()
}

View File

@@ -100,9 +100,9 @@ private string getTypeArgumentsNames(ConstructedGeneric cg) {
bindingset[t]
private string getFullName(Type t) {
exists(string namespace, string name |
t.hasQualifiedName(namespace, name) and
result = getQualifiedName(namespace, name)
exists(string qualifier, string name |
t.hasQualifiedName(qualifier, name) and
result = getQualifiedName(qualifier, name)
)
}
@@ -159,15 +159,15 @@ class UnboundGenericType extends ValueOrRefType, UnboundGeneric {
result = this.getUndecoratedName() + "<" + getTypeParameterCommas(this) + ">"
}
final override predicate hasQualifiedName(string namespace, string name) {
final override predicate hasQualifiedName(string qualifier, string name) {
exists(string name0 | name = name0 + "<" + getTypeParameterCommas(this) + ">" |
exists(string enclosing |
this.getDeclaringType().hasQualifiedName(namespace, enclosing) and
this.getDeclaringType().hasQualifiedName(qualifier, enclosing) and
name0 = enclosing + "+" + this.getUndecoratedName()
)
or
not exists(this.getDeclaringType()) and
namespace = this.getNamespace().getFullName() and
qualifier = this.getNamespace().getFullName() and
name0 = this.getUndecoratedName()
)
}
@@ -237,8 +237,8 @@ class TypeParameter extends DotNet::TypeParameter, Type, @type_parameter {
/** Gets the generic that defines this type parameter. */
UnboundGeneric getGeneric() { type_parameters(this, _, result, _) }
final override predicate hasQualifiedName(string namespace, string name) {
namespace = "" and
final override predicate hasQualifiedName(string qualifier, string name) {
qualifier = "" and
name = this.getName()
}
@@ -424,15 +424,15 @@ class ConstructedType extends ValueOrRefType, ConstructedGeneric {
result = this.getUndecoratedName() + "<" + getTypeArgumentsNames(this) + ">"
}
final override predicate hasQualifiedName(string namespace, string name) {
final override predicate hasQualifiedName(string qualifier, string name) {
exists(string name0 | name = name0 + "<" + getTypeArgumentsQualifiedNames(this) + ">" |
exists(string enclosing |
this.getDeclaringType().hasQualifiedName(namespace, enclosing) and
this.getDeclaringType().hasQualifiedName(qualifier, enclosing) and
name0 = enclosing + "+" + this.getUndecoratedName()
)
or
not exists(this.getDeclaringType()) and
namespace = this.getNamespace().getFullName() and
qualifier = this.getNamespace().getFullName() and
name0 = this.getUndecoratedName()
)
}

View File

@@ -57,19 +57,19 @@ private predicate isObjectClass(Class c) { c instanceof ObjectType }
*/
class ValueOrRefType extends DotNet::ValueOrRefType, Type, Attributable, @value_or_ref_type {
/**
* Holds if this type has the qualified name `namespace`.`name`.
* Holds if this type has the qualified name `qualifier`.`name`.
*
* For example the class `System.IO.IOException` has
* `namespace`=`System.IO` and `name`=`IOException`.
* `qualifier`=`System.IO` and `name`=`IOException`.
*/
override predicate hasQualifiedName(string namespace, string name) {
override predicate hasQualifiedName(string qualifier, string name) {
exists(string enclosing |
this.getDeclaringType().hasQualifiedName(namespace, enclosing) and
this.getDeclaringType().hasQualifiedName(qualifier, enclosing) and
name = enclosing + "+" + this.getUndecoratedName()
)
or
not exists(this.getDeclaringType()) and
namespace = this.getNamespace().getFullName() and
qualifier = this.getNamespace().getFullName() and
name = this.getUndecoratedName()
}
@@ -398,8 +398,8 @@ class NonNestedType extends ValueOrRefType {
* The `void` type.
*/
class VoidType extends DotNet::ValueOrRefType, Type, @void_type {
override predicate hasQualifiedName(string namespace, string name) {
namespace = "System" and
override predicate hasQualifiedName(string qualifier, string name) {
qualifier = "System" and
name = "Void"
}
@@ -1007,8 +1007,8 @@ class NullableType extends ValueType, DotNet::ConstructedGeneric, @nullable_type
result = "Nullable<" + this.getUnderlyingType().getName() + ">"
}
final override predicate hasQualifiedName(string namespace, string name) {
namespace = "System" and
final override predicate hasQualifiedName(string qualifier, string name) {
qualifier = "System" and
name = "Nullable<" + this.getUnderlyingType().getQualifiedName() + ">"
}
}
@@ -1076,9 +1076,9 @@ class ArrayType extends DotNet::ArrayType, RefType, @array_type {
result = this.getElementType().getALocation()
}
final override predicate hasQualifiedName(string namespace, string name) {
final override predicate hasQualifiedName(string qualifier, string name) {
exists(Type elementType, string name0 |
elementType.hasQualifiedName(namespace, name0) and
elementType.hasQualifiedName(qualifier, name0) and
name = name0 + this.getDimensionString(elementType)
)
}
@@ -1106,9 +1106,9 @@ class PointerType extends DotNet::PointerType, Type, @pointer_type {
override string getAPrimaryQlClass() { result = "PointerType" }
final override predicate hasQualifiedName(string namespace, string name) {
final override predicate hasQualifiedName(string qualifier, string name) {
exists(string name0 |
this.getReferentType().hasQualifiedName(namespace, name0) and
this.getReferentType().hasQualifiedName(qualifier, name0) and
name = name0 + "*"
)
}
@@ -1190,8 +1190,8 @@ class TupleType extends ValueType, @tuple_type {
override Type getChild(int i) { result = this.getUnderlyingType().getChild(i) }
final override predicate hasQualifiedName(string namespace, string name) {
this.getUnderlyingType().hasQualifiedName(namespace, name)
final override predicate hasQualifiedName(string qualifier, string name) {
this.getUnderlyingType().hasQualifiedName(qualifier, name)
}
override string getAPrimaryQlClass() { result = "TupleType" }

View File

@@ -71,7 +71,7 @@ class LocalScopeVariable extends Variable, @local_scope_variable {
*/
predicate isRef() { none() }
override predicate hasQualifiedName(string namespace, string name) { none() }
override predicate hasQualifiedName(string qualifier, string name) { none() }
}
/**

View File

@@ -3,11 +3,11 @@
*/
/**
* Returns the concatenation of `namespace` and `name`, separated by a dot.
* Returns the concatenation of `qualifier` and `name`, separated by a dot.
*/
bindingset[namespace, name]
string getQualifiedName(string namespace, string name) {
if namespace = "" then result = name else result = namespace + "." + name
bindingset[qualifier, name]
string getQualifiedName(string qualifier, string name) {
if qualifier = "" then result = name else result = qualifier + "." + name
}
/**

View File

@@ -5,20 +5,20 @@
import csharp
/**
* Holds if the object creation `oc` is the creation of the reference type with the specified `namespace` and `type`, or a class derived from
* the class with the specified `namespace` and `type`.
* Holds if the object creation `oc` is the creation of the reference type with the specified `qualifier` and `type`, or a class derived from
* the class with the specified `qualifier` and `type`.
*/
private predicate isCreatingObject(ObjectCreation oc, string namespace, string type) {
exists(RefType t | t = oc.getType() | t.getBaseClass*().hasQualifiedName(namespace, type))
private predicate isCreatingObject(ObjectCreation oc, string qualifier, string type) {
exists(RefType t | t = oc.getType() | t.getBaseClass*().hasQualifiedName(qualifier, type))
}
/**
* Holds if the method call `mc` is returning the reference type with the specified `namespace` and `type`.
* Holds if the method call `mc` is returning the reference type with the specified `qualifier` and `type`.
* and the target of the method call is a library method.
*/
private predicate isReturningObject(MethodCall mc, string namespace, string type) {
private predicate isReturningObject(MethodCall mc, string qualifier, string type) {
mc.getTarget().fromLibrary() and
exists(RefType t | t = mc.getType() | t.hasQualifiedName(namespace, type))
exists(RefType t | t = mc.getType() | t.hasQualifiedName(qualifier, type))
}
/**

View File

@@ -40,9 +40,9 @@ class NUnitTestMethod extends TestMethod {
|
if expected.getArgument(0).getType() instanceof StringType
then
exists(string namespace, string type |
result.hasQualifiedName(namespace, type) and
splitQualifiedName(expected.getArgument(0).getValue(), namespace, type)
exists(string qualifier, string type |
result.hasQualifiedName(qualifier, type) and
splitQualifiedName(expected.getArgument(0).getValue(), qualifier, type)
)
else result = expected.getArgument(0).(TypeofExpr).getTypeAccess().getTarget()
)

View File

@@ -71,9 +71,9 @@ class ExternalApiDataNode extends DataFlow::Node {
/** Gets the index which is passed untrusted data (where -1 indicates the qualifier). */
int getIndex() { result = i }
/** Holds if the callable being use has name `name` and is defined in namespace `namespace`. */
predicate hasQualifiedName(string namespace, string name) {
this.getCallable().hasQualifiedName(namespace, name)
/** Holds if the callable being use has name `name` and has qualifier `qualifier`. */
predicate hasQualifiedName(string qualifier, string name) {
this.getCallable().hasQualifiedName(qualifier, name)
}
/**
@@ -82,8 +82,8 @@ class ExternalApiDataNode extends DataFlow::Node {
* Gets the description of the callable being called.
*/
deprecated string getCallableDescription() {
exists(string namespace, string name |
this.hasQualifiedName(namespace, name) and result = getQualifiedName(namespace, name)
exists(string qualifier, string name |
this.hasQualifiedName(qualifier, name) and result = getQualifiedName(qualifier, name)
)
}
}

View File

@@ -8,10 +8,10 @@ private import semmle.code.csharp.commons.QualifiedName
/** A declaration. */
class Declaration extends NamedElement, @dotnet_declaration {
override predicate hasQualifiedName(string namespace, string name) {
exists(string dnamespace, string dname |
this.getDeclaringType().hasQualifiedName(dnamespace, dname) and
namespace = getQualifiedName(dnamespace, dname)
override predicate hasQualifiedName(string qualifier, string name) {
exists(string dqualifier, string dname |
this.getDeclaringType().hasQualifiedName(dqualifier, dname) and
qualifier = getQualifiedName(dqualifier, dname)
) and
name = this.getName()
}
@@ -82,7 +82,7 @@ class Member extends Declaration, @dotnet_member {
/**
* Holds if this member has name `name` and is defined in type `type`
* with qualifier `qualifier`
* with namespace `namespace`.
*/
cached
predicate hasQualifiedName(string namespace, string type, string name) {

View File

@@ -107,8 +107,8 @@ class NamedElement extends Element, @dotnet_named_element {
/** Holds if this element has the qualified name `qualifier`.`name`. */
cached
predicate hasQualifiedName(string namespace, string name) {
namespace = "" and name = this.getName()
predicate hasQualifiedName(string qualifier, string name) {
qualifier = "" and name = this.getName()
}
/** Gets a unique string label for this element. */

View File

@@ -20,15 +20,15 @@ class Namespace extends Declaration, @namespace {
Namespace getAChildNamespace() { result.getParentNamespace() = this }
/**
* Holds if this namespace has the qualified name `namespace`.`name`.
* Holds if this namespace has the qualified name `qualifier`.`name`.
*
* For example if the qualified name is `System.Collections.Generic`, then
* `namespace`=`System.Collections` and `name`=`Generic`.
* `qualifier`=`System.Collections` and `name`=`Generic`.
*/
override predicate hasQualifiedName(string namespace, string name) {
exists(string pnamespace, string pname |
this.getParentNamespace().hasQualifiedName(pnamespace, pname) and
namespace = getQualifiedName(pnamespace, pname)
override predicate hasQualifiedName(string qualifier, string name) {
exists(string pqualifier, string pname |
this.getParentNamespace().hasQualifiedName(pqualifier, pname) and
qualifier = getQualifiedName(pqualifier, pname)
) and
name = this.getName()
}
@@ -61,7 +61,7 @@ class Namespace extends Declaration, @namespace {
class GlobalNamespace extends Namespace {
GlobalNamespace() { this.getName() = "" }
override predicate hasQualifiedName(string namespace, string name) {
namespace = "" and name = ""
override predicate hasQualifiedName(string qualifier, string name) {
qualifier = "" and name = ""
}
}

View File

@@ -11,8 +11,8 @@
import csharp
string prefix(string namespace, string typename) {
namespace = "System.Web.UI.WebControls" and
string prefix(string qualifier, string typename) {
qualifier = "System.Web.UI.WebControls" and
(
typename = "Label" and result = "lbl"
or
@@ -75,7 +75,7 @@ string prefix(string namespace, string typename) {
typename = "CrystalReportViewer" and result = "crvr"
)
or
namespace = "System.Web.UI.HtmlControls" and
qualifier = "System.Web.UI.HtmlControls" and
(
typename = "TextArea" and result = "txa"
or
@@ -95,11 +95,11 @@ string prefix(string namespace, string typename) {
)
}
from Field f, RefType t, string name, string prefix, string namespace, string type
from Field f, RefType t, string name, string prefix, string qualifier, string type
where
f.getType() = t and
f.getName() = name and
t.hasQualifiedName(namespace, type) and
prefix = prefix(namespace, type) and
t.hasQualifiedName(qualifier, type) and
prefix = prefix(qualifier, type) and
not name.matches(prefix + "%")
select f, "This field should have the prefix '" + prefix + "' to match its types."

View File

@@ -24,9 +24,9 @@ where
(
throwBaseType.hasName(exceptionName)
or
exists(string namespace, string type |
splitQualifiedName(exceptionName, namespace, type) and
throwBaseType.hasQualifiedName(namespace, type)
exists(string qualifier, string type |
splitQualifiedName(exceptionName, qualifier, type) and
throwBaseType.hasQualifiedName(qualifier, type)
)
// and comment.hasBody(offset) // Too slow
)

View File

@@ -13,9 +13,9 @@
import csharp
import semmle.code.csharp.commons.Assertions
private predicate propertyOverrides(Property p, string namespace, string baseClass, string property) {
private predicate propertyOverrides(Property p, string qualifier, string baseClass, string property) {
exists(Property p2 |
p2.getUnboundDeclaration().getDeclaringType().hasQualifiedName(namespace, baseClass) and
p2.getUnboundDeclaration().getDeclaringType().hasQualifiedName(qualifier, baseClass) and
p2.hasName(property)
|
p.overridesOrImplementsOrEquals(p2)

View File

@@ -16,10 +16,10 @@ import DataFlow::PathGraph
from
UntrustedDataToExternalApiConfig config, DataFlow::PathNode source, DataFlow::PathNode sink,
string namespace, string name
string qualifier, string name
where
config.hasFlowPath(source, sink) and
sink.getNode().(ExternalApiDataNode).hasQualifiedName(namespace, name)
sink.getNode().(ExternalApiDataNode).hasQualifiedName(qualifier, name)
select sink, source, sink,
"Call to " + getQualifiedName(namespace, name) + " with untrusted data from $@.", source,
"Call to " + getQualifiedName(qualifier, name) + " with untrusted data from $@.", source,
source.toString()

View File

@@ -121,10 +121,10 @@ abstract private class GeneratedType extends Type, GeneratedElement {
}
private string stubComment() {
exists(string namespace, string name |
this.hasQualifiedName(namespace, name) and
exists(string qualifier, string name |
this.hasQualifiedName(qualifier, name) and
result =
"// Generated from `" + getQualifiedName(namespace, name) + "` in `" +
"// Generated from `" + getQualifiedName(qualifier, name) + "` in `" +
concat(this.getALocation().toString(), "; ") + "`\n"
)
}

View File

@@ -17,9 +17,9 @@ import JsonWebTokenHandlerLib
import semmle.code.csharp.commons.QualifiedName
from
TokenValidationParametersProperty p, CallableAlwaysReturnsTrueHigherPrecision e, string namespace,
TokenValidationParametersProperty p, CallableAlwaysReturnsTrueHigherPrecision e, string qualifier,
string name
where e = p.getAnAssignedValue() and p.hasQualifiedName(namespace, name)
where e = p.getAnAssignedValue() and p.hasQualifiedName(qualifier, name)
select e,
"JsonWebTokenHandler security-sensitive property $@ is being delegated to this callable that always returns \"true\".",
p, getQualifiedName(namespace, name)
p, getQualifiedName(qualifier, name)

View File

@@ -17,10 +17,10 @@ import semmle.code.csharp.commons.QualifiedName
from
FalseValueFlowsToTokenValidationParametersPropertyWriteToBypassValidation config,
DataFlow::Node source, DataFlow::Node sink,
TokenValidationParametersPropertySensitiveValidation pw, string namespace, string name
TokenValidationParametersPropertySensitiveValidation pw, string qualifier, string name
where
config.hasFlow(source, sink) and
sink.asExpr() = pw.getAnAssignedValue() and
pw.hasQualifiedName(namespace, name)
pw.hasQualifiedName(qualifier, name)
select sink, "The security sensitive property $@ is being disabled by the following value: $@.", pw,
getQualifiedName(namespace, name), source, "false"
getQualifiedName(qualifier, name), source, "false"

View File

@@ -1,9 +1,9 @@
import csharp
import semmle.code.csharp.commons.QualifiedName
from Attributable element, Attribute attribute, string namespace, string name
from Attributable element, Attribute attribute, string qualifier, string name
where
attribute = element.getAnAttribute() and
(attribute.fromSource() or element.(Assembly).getName() in ["attributes", "Assembly1"]) and
attribute.getType().hasQualifiedName(namespace, name)
select element, attribute, getQualifiedName(namespace, name)
attribute.getType().hasQualifiedName(qualifier, name)
select element, attribute, getQualifiedName(qualifier, name)

View File

@@ -12,10 +12,10 @@ class MetadataEntity extends DotNet::NamedElement, @metadata_entity {
}
query predicate tooManyHandles(string s) {
exists(MetadataEntity e, Assembly a, string namespace, string name |
exists(MetadataEntity e, Assembly a, string qualifier, string name |
strictcount(int handle | metadata_handle(e, a, handle)) > 1 and
e.hasQualifiedName(namespace, name) and
s = getQualifiedName(namespace, name)
e.hasQualifiedName(qualifier, name) and
s = getQualifiedName(qualifier, name)
)
}
@@ -31,11 +31,11 @@ private class UniqueMetadataEntity extends MetadataEntity {
}
query predicate tooManyMatchingHandles(string s) {
exists(UniqueMetadataEntity e, Assembly a, int handle, string namespace, string name |
exists(UniqueMetadataEntity e, Assembly a, int handle, string qualifier, string name |
metadata_handle(e, a, handle) and
strictcount(UniqueMetadataEntity e2 | metadata_handle(e2, a, handle)) > 2 and
e.hasQualifiedName(namespace, name) and
s = getQualifiedName(namespace, name)
e.hasQualifiedName(qualifier, name) and
s = getQualifiedName(qualifier, name)
)
}

View File

@@ -1,8 +1,8 @@
import semmle.code.cil.Types
import semmle.code.csharp.commons.QualifiedName
from Enum e, string namespace, string name
from Enum e, string qualifier, string name
where
e.hasQualifiedName(namespace, name) and
not (namespace = "Interop.Sys" and name = "LockType") // doesn't exist on osx
select getQualifiedName(namespace, name), e.getUnderlyingType().toStringWithTypes()
e.hasQualifiedName(qualifier, name) and
not (qualifier = "Interop.Sys" and name = "LockType") // doesn't exist on osx
select getQualifiedName(qualifier, name), e.getUnderlyingType().toStringWithTypes()

View File

@@ -27,12 +27,12 @@ query predicate params(string fnptr, int i, string param, string t) {
}
query predicate modifiers(string fnptr, string modifier, string sKind) {
exists(Type modType, int kind, FunctionPointerType fn, string namespace, string name |
exists(Type modType, int kind, FunctionPointerType fn, string qualifier, string name |
fnptr = fn.toString()
|
cil_custom_modifiers(fn, modType, kind) and
modType.hasQualifiedName(namespace, name) and
modifier = getQualifiedName(namespace, name) and
modType.hasQualifiedName(qualifier, name) and
modifier = getQualifiedName(qualifier, name) and
sKind = getKind(kind)
)
}

View File

@@ -6,10 +6,10 @@ private string getKind(int kind) { if kind = 1 then result = "modreq" else resul
from string receiver, string modifier, int kind
where
exists(Type modType, CustomModifierReceiver cmr, string namespace, string name |
exists(Type modType, CustomModifierReceiver cmr, string qualifier, string name |
receiver = cmr.toString() and
cil_custom_modifiers(cmr, modType, kind) and
modType.hasQualifiedName(namespace, name) and
modifier = getQualifiedName(namespace, name)
modType.hasQualifiedName(qualifier, name) and
modifier = getQualifiedName(qualifier, name)
)
select receiver, modifier, getKind(kind)

View File

@@ -13,10 +13,10 @@ private string elementType(Element e, string toString) {
or
e =
any(Parameter p |
exists(string namespace, string name |
p.getDeclaringElement().hasQualifiedName(namespace, name)
exists(string qualifier, string name |
p.getDeclaringElement().hasQualifiedName(qualifier, name)
|
toString = "Parameter " + p.getIndex() + " of " + getQualifiedName(namespace, name)
toString = "Parameter " + p.getIndex() + " of " + getQualifiedName(qualifier, name)
)
) and
result = "parameter"
@@ -32,8 +32,8 @@ private string elementType(Element e, string toString) {
) and
result = "local"
or
exists(string namespace, string name | e.(FunctionPointerType).hasQualifiedName(namespace, name) |
toString = getQualifiedName(namespace, name)
exists(string qualifier, string name | e.(FunctionPointerType).hasQualifiedName(qualifier, name) |
toString = getQualifiedName(qualifier, name)
) and
result = "fnptr"
or

View File

@@ -2,9 +2,9 @@ import cil
import semmle.code.csharp.commons.Disposal
import semmle.code.csharp.commons.QualifiedName
from CIL::Field field, string namespace, string name
from CIL::Field field, string qualifier, string name
where
mayBeDisposed(field) and
field.getDeclaringType().hasQualifiedName("DisposalTests", "Class1") and
field.hasQualifiedName(namespace, name)
select getQualifiedName(namespace, name)
field.hasQualifiedName(qualifier, name)
select getQualifiedName(qualifier, name)

View File

@@ -5,9 +5,9 @@
import csharp
import semmle.code.csharp.commons.QualifiedName
from Destructor c, string namespace, string name
from Destructor c, string qualifier, string name
where
c.getDeclaringType().hasQualifiedName(namespace, name) and
namespace = "Constructors" and
c.getDeclaringType().hasQualifiedName(qualifier, name) and
qualifier = "Constructors" and
name = "Class"
select c, c.getDeclaringType().getQualifiedName()

View File

@@ -10,12 +10,12 @@ private string getIsAsync(ForeachStmt f) {
}
from
ForeachStmt f, string namespace1, string type1, string namespace2, string type2,
string namespace3, string type3
ForeachStmt f, string qualifier1, string type1, string qualifier2, string type2,
string qualifier3, string type3
where
f.getGetEnumerator().getDeclaringType().hasQualifiedName(namespace1, type1) and
f.getCurrent().getDeclaringType().hasQualifiedName(namespace2, type2) and
f.getMoveNext().getDeclaringType().hasQualifiedName(namespace3, type3)
select f, f.getElementType().toString(), getIsAsync(f), getQualifiedName(namespace1, type1),
getLocation(f.getGetEnumerator()), getQualifiedName(namespace2, type2),
getLocation(f.getCurrent()), getQualifiedName(namespace3, type3), getLocation(f.getMoveNext())
f.getGetEnumerator().getDeclaringType().hasQualifiedName(qualifier1, type1) and
f.getCurrent().getDeclaringType().hasQualifiedName(qualifier2, type2) and
f.getMoveNext().getDeclaringType().hasQualifiedName(qualifier3, type3)
select f, f.getElementType().toString(), getIsAsync(f), getQualifiedName(qualifier1, type1),
getLocation(f.getGetEnumerator()), getQualifiedName(qualifier2, type2),
getLocation(f.getCurrent()), getQualifiedName(qualifier3, type3), getLocation(f.getMoveNext())

View File

@@ -8,8 +8,8 @@ query predicate records(RecordClass t, string i, RecordCloneMethod clone) {
}
private string getMemberName(Member m) {
exists(string namespace, string name | m.getDeclaringType().hasQualifiedName(namespace, name) |
result = getQualifiedName(namespace, name) + "." + m.toStringWithTypes()
exists(string qualifier, string name | m.getDeclaringType().hasQualifiedName(qualifier, name) |
result = getQualifiedName(qualifier, name) + "." + m.toStringWithTypes()
)
}

View File

@@ -2,8 +2,8 @@ import csharp
import semmle.code.csharp.commons.QualifiedName
private string getSignature(Method m) {
exists(string namespace, string name | m.getDeclaringType().hasQualifiedName(namespace, name) |
result = getQualifiedName(namespace, name) + "." + m.toStringWithTypes()
exists(string qualifier, string name | m.getDeclaringType().hasQualifiedName(qualifier, name) |
result = getQualifiedName(qualifier, name) + "." + m.toStringWithTypes()
)
}

View File

@@ -268,8 +268,8 @@ query predicate test33(ConstructedMethod cm, string s1, string s2) {
query predicate test34(UnboundGeneric ug, string s1, string s2) {
ug.fromSource() and
exists(string namespace, string name |
ug.hasQualifiedName(namespace, name) and s1 = getQualifiedName(namespace, name)
exists(string qualifier, string name |
ug.hasQualifiedName(qualifier, name) and s1 = getQualifiedName(qualifier, name)
) and
ug.getQualifiedNameWithTypes() = s2
}