mirror of
https://github.com/github/codeql.git
synced 2025-12-20 02:44:30 +01:00
41 lines
1.3 KiB
Plaintext
41 lines
1.3 KiB
Plaintext
import csharp
|
|
import semmle.code.csharp.frameworks.System
|
|
import semmle.code.csharp.frameworks.system.Collections
|
|
import semmle.code.csharp.frameworks.system.collections.Generic
|
|
|
|
predicate implementsMethod(Method m, int i) {
|
|
exists(Method other, Method imp |
|
|
m.overridesOrImplementsOrEquals(imp) and
|
|
other = imp.getUnboundDeclaration()
|
|
|
|
|
other = any(SystemObjectClass c).getEqualsMethod() and i = 1
|
|
or
|
|
other = any(SystemObjectClass c).getStaticEqualsMethod() and i = 2
|
|
or
|
|
other = any(SystemObjectClass c).getReferenceEqualsMethod() and i = 3
|
|
or
|
|
other = any(SystemObjectClass c).getGetHashCodeMethod() and i = 4
|
|
or
|
|
other = any(SystemIEquatableTInterface iface).getEqualsMethod() and i = 5
|
|
or
|
|
other = any(SystemCollectionsIComparerInterface iface).getCompareMethod() and i = 6
|
|
or
|
|
other = any(SystemCollectionsGenericIComparerTInterface iface).getCompareMethod() and i = 7
|
|
or
|
|
other = any(SystemIComparableInterface iface).getCompareToMethod() and i = 8
|
|
or
|
|
other = any(SystemIComparableTInterface iface).getCompareToMethod() and i = 9
|
|
)
|
|
}
|
|
|
|
from Element e, int i
|
|
where
|
|
e.getFile().getStem() = "System" and
|
|
e.fromSource() and
|
|
(
|
|
implementsMethod(e, i)
|
|
or
|
|
implementsMethod(e.(MethodCall).getTarget(), i)
|
|
)
|
|
select e, i
|