mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
Merge branch 'redsun82/rust-qltest-proc-macro' into redsun82/rust-expand-assoc-items
This commit is contained in:
1
Cargo.lock
generated
1
Cargo.lock
generated
@@ -426,6 +426,7 @@ dependencies = [
|
|||||||
"figment",
|
"figment",
|
||||||
"glob",
|
"glob",
|
||||||
"itertools 0.14.0",
|
"itertools 0.14.0",
|
||||||
|
"mustache",
|
||||||
"num-traits",
|
"num-traits",
|
||||||
"ra_ap_base_db",
|
"ra_ap_base_db",
|
||||||
"ra_ap_cfg",
|
"ra_ap_cfg",
|
||||||
|
|||||||
@@ -214,6 +214,8 @@ private module OutputClobberingConfig implements DataFlow::ConfigSig {
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Tracks flow of unsafe user input that is used to construct and evaluate an environment variable. */
|
/** Tracks flow of unsafe user input that is used to construct and evaluate an environment variable. */
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ private module RequestForgeryConfig implements DataFlow::ConfigSig {
|
|||||||
predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource }
|
predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource }
|
||||||
|
|
||||||
predicate isSink(DataFlow::Node sink) { sink instanceof RequestForgerySink }
|
predicate isSink(DataFlow::Node sink) { sink instanceof RequestForgerySink }
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Tracks flow of unsafe user input that is used to construct and evaluate a system command. */
|
/** Tracks flow of unsafe user input that is used to construct and evaluate a system command. */
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ private module SecretExfiltrationConfig implements DataFlow::ConfigSig {
|
|||||||
predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource }
|
predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource }
|
||||||
|
|
||||||
predicate isSink(DataFlow::Node sink) { sink instanceof SecretExfiltrationSink }
|
predicate isSink(DataFlow::Node sink) { sink instanceof SecretExfiltrationSink }
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Tracks flow of unsafe user input that is used in a context where it may lead to a secret exfiltration. */
|
/** Tracks flow of unsafe user input that is used in a context where it may lead to a secret exfiltration. */
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ private module MyConfig implements DataFlow::ConfigSig {
|
|||||||
predicate isSink(DataFlow::Node sink) {
|
predicate isSink(DataFlow::Node sink) {
|
||||||
sink instanceof CodeInjectionSink and not madSink(sink, "code-injection")
|
sink instanceof CodeInjectionSink and not madSink(sink, "code-injection")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
module MyFlow = TaintTracking::Global<MyConfig>;
|
module MyFlow = TaintTracking::Global<MyConfig>;
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ private module MyConfig implements DataFlow::ConfigSig {
|
|||||||
isSink(node) and
|
isSink(node) and
|
||||||
set instanceof DataFlow::FieldContent
|
set instanceof DataFlow::FieldContent
|
||||||
}
|
}
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
module MyFlow = TaintTracking::Global<MyConfig>;
|
module MyFlow = TaintTracking::Global<MyConfig>;
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ private module MyConfig implements DataFlow::ConfigSig {
|
|||||||
predicate isSink(DataFlow::Node sink) {
|
predicate isSink(DataFlow::Node sink) {
|
||||||
exists(CompositeAction c | c.getAnOutputExpr() = sink.asExpr())
|
exists(CompositeAction c | c.getAnOutputExpr() = sink.asExpr())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
module MyFlow = TaintTracking::Global<MyConfig>;
|
module MyFlow = TaintTracking::Global<MyConfig>;
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ private module MyConfig implements DataFlow::ConfigSig {
|
|||||||
predicate isSink(DataFlow::Node sink) {
|
predicate isSink(DataFlow::Node sink) {
|
||||||
sink instanceof CodeInjectionSink and not madSink(sink, "code-injection")
|
sink instanceof CodeInjectionSink and not madSink(sink, "code-injection")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
module MyFlow = TaintTracking::Global<MyConfig>;
|
module MyFlow = TaintTracking::Global<MyConfig>;
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ private module MyConfig implements DataFlow::ConfigSig {
|
|||||||
isSink(node) and
|
isSink(node) and
|
||||||
set instanceof DataFlow::FieldContent
|
set instanceof DataFlow::FieldContent
|
||||||
}
|
}
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
module MyFlow = TaintTracking::Global<MyConfig>;
|
module MyFlow = TaintTracking::Global<MyConfig>;
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ private module MyConfig implements DataFlow::ConfigSig {
|
|||||||
predicate isSink(DataFlow::Node sink) {
|
predicate isSink(DataFlow::Node sink) {
|
||||||
exists(ReusableWorkflow w | w.getAnOutputExpr() = sink.asExpr())
|
exists(ReusableWorkflow w | w.getAnOutputExpr() = sink.asExpr())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
module MyFlow = TaintTracking::Global<MyConfig>;
|
module MyFlow = TaintTracking::Global<MyConfig>;
|
||||||
|
|||||||
2499
cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/old.dbscheme
Normal file
2499
cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/old.dbscheme
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,3 @@
|
|||||||
|
description: Add a predicate `getAnAttribute` to `Namespace`
|
||||||
|
compatibility: full
|
||||||
|
namespaceattributes.rel: delete
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
category: feature
|
||||||
|
---
|
||||||
|
* Added a predicate `getAnAttribute` to `Namespace` to retrieve a namespace attribute.
|
||||||
4
cpp/ql/lib/change-notes/2025-06-17-arraytype-typedefs.md
Normal file
4
cpp/ql/lib/change-notes/2025-06-17-arraytype-typedefs.md
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
category: fix
|
||||||
|
---
|
||||||
|
* `resolveTypedefs` now properly resolves typedefs for `ArrayType`s.
|
||||||
@@ -42,6 +42,8 @@ module PrivateCleartextWrite {
|
|||||||
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
|
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
|
||||||
|
|
||||||
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
module WriteFlow = TaintTracking::Global<WriteConfig>;
|
module WriteFlow = TaintTracking::Global<WriteConfig>;
|
||||||
|
|||||||
@@ -99,6 +99,11 @@ class Namespace extends NameQualifyingElement, @namespace {
|
|||||||
|
|
||||||
/** Gets a file which declares (part of) this namespace. */
|
/** Gets a file which declares (part of) this namespace. */
|
||||||
File getAFile() { result = this.getADeclarationEntry().getLocation().getFile() }
|
File getAFile() { result = this.getADeclarationEntry().getLocation().getFile() }
|
||||||
|
|
||||||
|
/** Gets an attribute of this namespace. */
|
||||||
|
Attribute getAnAttribute() {
|
||||||
|
namespaceattributes(underlyingElement(this), unresolveElement(result))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1589,6 +1589,11 @@ class ArrayType extends DerivedType {
|
|||||||
* Holds if this array is a variable-length array (VLA).
|
* Holds if this array is a variable-length array (VLA).
|
||||||
*/
|
*/
|
||||||
predicate isVla() { type_is_vla(underlyingElement(this)) }
|
predicate isVla() { type_is_vla(underlyingElement(this)) }
|
||||||
|
|
||||||
|
override Type resolveTypedefs() {
|
||||||
|
result.(ArrayType).getBaseType() = this.getBaseType().resolveTypedefs() and
|
||||||
|
result.(ArrayType).getArraySize() = this.getArraySize()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ private import semmle.code.cpp.ir.implementation.internal.OperandTag
|
|||||||
private import semmle.code.cpp.ir.internal.CppType
|
private import semmle.code.cpp.ir.internal.CppType
|
||||||
private import semmle.code.cpp.models.interfaces.SideEffect
|
private import semmle.code.cpp.models.interfaces.SideEffect
|
||||||
private import semmle.code.cpp.models.interfaces.Throwing
|
private import semmle.code.cpp.models.interfaces.Throwing
|
||||||
|
private import semmle.code.cpp.models.interfaces.NonThrowing
|
||||||
private import InstructionTag
|
private import InstructionTag
|
||||||
private import SideEffects
|
private import SideEffects
|
||||||
private import TranslatedElement
|
private import TranslatedElement
|
||||||
@@ -366,6 +367,10 @@ class TranslatedFunctionCall extends TranslatedCallExpr, TranslatedDirectCall {
|
|||||||
or
|
or
|
||||||
exists(MicrosoftTryStmt tryStmt | tryStmt.getStmt() = expr.getEnclosingStmt().getParent*()) and
|
exists(MicrosoftTryStmt tryStmt | tryStmt.getStmt() = expr.getEnclosingStmt().getParent*()) and
|
||||||
e instanceof SehExceptionEdge
|
e instanceof SehExceptionEdge
|
||||||
|
or
|
||||||
|
not expr.getTarget() instanceof NonCppThrowingFunction and
|
||||||
|
exists(TryStmt tryStmt | tryStmt.getStmt() = expr.getEnclosingStmt().getParent*()) and
|
||||||
|
e instanceof CppExceptionEdge
|
||||||
}
|
}
|
||||||
|
|
||||||
final override predicate mustThrowException(ExceptionEdge e) {
|
final override predicate mustThrowException(ExceptionEdge e) {
|
||||||
|
|||||||
@@ -1139,6 +1139,11 @@ varattributes(
|
|||||||
int spec_id: @attribute ref
|
int spec_id: @attribute ref
|
||||||
);
|
);
|
||||||
|
|
||||||
|
namespaceattributes(
|
||||||
|
int namespace_id: @namespace ref,
|
||||||
|
int spec_id: @attribute ref
|
||||||
|
);
|
||||||
|
|
||||||
stmtattributes(
|
stmtattributes(
|
||||||
int stmt_id: @stmt ref,
|
int stmt_id: @stmt ref,
|
||||||
int spec_id: @attribute ref
|
int spec_id: @attribute ref
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
|||||||
|
description: Add a predicate `getAnAttribute` to `Namespace`
|
||||||
|
compatibility: backwards
|
||||||
@@ -48,6 +48,8 @@ module CastToPointerArithFlowConfig implements DataFlow::StateConfigSig {
|
|||||||
predicate isBarrierIn(DataFlow::Node node) { isSource(node, _) }
|
predicate isBarrierIn(DataFlow::Node node) { isSource(node, _) }
|
||||||
|
|
||||||
predicate isBarrierOut(DataFlow::Node node) { isSink(node, _) }
|
predicate isBarrierOut(DataFlow::Node node) { isSink(node, _) }
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -141,6 +141,8 @@ private module NetworkToBufferSizeConfig implements DataFlow::ConfigSig {
|
|||||||
gc.controls(node.asExpr().getBasicBlock(), _)
|
gc.controls(node.asExpr().getBasicBlock(), _)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
module NetworkToBufferSizeFlow = DataFlow::Global<NetworkToBufferSizeConfig>;
|
module NetworkToBufferSizeFlow = DataFlow::Global<NetworkToBufferSizeConfig>;
|
||||||
|
|||||||
@@ -39,6 +39,8 @@ module Config implements DataFlow::ConfigSig {
|
|||||||
or
|
or
|
||||||
node.asCertainDefinition().getUnspecifiedType() instanceof ArithmeticType
|
node.asCertainDefinition().getUnspecifiedType() instanceof ArithmeticType
|
||||||
}
|
}
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
module Flow = TaintTracking::Global<Config>;
|
module Flow = TaintTracking::Global<Config>;
|
||||||
|
|||||||
@@ -66,6 +66,8 @@ module ImproperArrayIndexValidationConfig implements DataFlow::ConfigSig {
|
|||||||
not offsetIsAlwaysInBounds(arrayExpr, offsetExpr)
|
not offsetIsAlwaysInBounds(arrayExpr, offsetExpr)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
module ImproperArrayIndexValidation = TaintTracking::Global<ImproperArrayIndexValidationConfig>;
|
module ImproperArrayIndexValidation = TaintTracking::Global<ImproperArrayIndexValidationConfig>;
|
||||||
|
|||||||
@@ -44,6 +44,8 @@ module Config implements DataFlow::ConfigSig {
|
|||||||
or
|
or
|
||||||
isArithmeticNonCharType(node.asCertainDefinition().getUnspecifiedType())
|
isArithmeticNonCharType(node.asCertainDefinition().getUnspecifiedType())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
module Flow = TaintTracking::Global<Config>;
|
module Flow = TaintTracking::Global<Config>;
|
||||||
|
|||||||
@@ -94,6 +94,8 @@ module Config implements DataFlow::ConfigSig {
|
|||||||
not iTo instanceof PointerArithmeticInstruction
|
not iTo instanceof PointerArithmeticInstruction
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
module Flow = TaintTracking::Global<Config>;
|
module Flow = TaintTracking::Global<Config>;
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ module ExposedSystemDataConfig implements DataFlow::ConfigSig {
|
|||||||
predicate isBarrier(DataFlow::Node node) {
|
predicate isBarrier(DataFlow::Node node) {
|
||||||
node.asIndirectArgument() = any(MemsetFunction func).getACallToThisFunction().getAnArgument()
|
node.asIndirectArgument() = any(MemsetFunction func).getACallToThisFunction().getAnArgument()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
module ExposedSystemData = TaintTracking::Global<ExposedSystemDataConfig>;
|
module ExposedSystemData = TaintTracking::Global<ExposedSystemDataConfig>;
|
||||||
|
|||||||
@@ -54,6 +54,8 @@ module PotentiallyExposedSystemDataConfig implements DataFlow::ConfigSig {
|
|||||||
predicate isBarrier(DataFlow::Node node) {
|
predicate isBarrier(DataFlow::Node node) {
|
||||||
node.asIndirectArgument() = any(MemsetFunction func).getACallToThisFunction().getAnArgument()
|
node.asIndirectArgument() = any(MemsetFunction func).getACallToThisFunction().getAnArgument()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
module PotentiallyExposedSystemData = TaintTracking::Global<PotentiallyExposedSystemDataConfig>;
|
module PotentiallyExposedSystemData = TaintTracking::Global<PotentiallyExposedSystemDataConfig>;
|
||||||
|
|||||||
@@ -45,6 +45,8 @@ module XxeConfig implements DataFlow::StateConfigSig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
predicate neverSkip(DataFlow::Node node) { none() }
|
predicate neverSkip(DataFlow::Node node) { none() }
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
module XxeFlow = DataFlow::GlobalWithState<XxeConfig>;
|
module XxeFlow = DataFlow::GlobalWithState<XxeConfig>;
|
||||||
|
|||||||
@@ -48,6 +48,8 @@ module WordexpTaintConfig implements DataFlow::ConfigSig {
|
|||||||
predicate isBarrier(DataFlow::Node node) {
|
predicate isBarrier(DataFlow::Node node) {
|
||||||
node.asExpr().getUnspecifiedType() instanceof IntegralType
|
node.asExpr().getUnspecifiedType() instanceof IntegralType
|
||||||
}
|
}
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
module WordexpTaint = TaintTracking::Global<WordexpTaintConfig>;
|
module WordexpTaint = TaintTracking::Global<WordexpTaintConfig>;
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ module MultToAllocConfig implements DataFlow::ConfigSig {
|
|||||||
// something that affects an allocation size
|
// something that affects an allocation size
|
||||||
node.asExpr() = any(HeuristicAllocationExpr ae).getSizeExpr().getAChild*()
|
node.asExpr() = any(HeuristicAllocationExpr ae).getSizeExpr().getAChild*()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
module MultToAlloc = DataFlow::Global<MultToAllocConfig>;
|
module MultToAlloc = DataFlow::Global<MultToAllocConfig>;
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
| file://:0:0:0:0 | MultiSquared | test.cpp:10:13:10:22 | deprecated |
|
||||||
|
| file://:0:0:0:0 | MultiSquared | test.cpp:10:25:10:36 | maybe_unused |
|
||||||
|
| file://:0:0:0:0 | MultiSquared | test.cpp:11:13:11:22 | deprecated |
|
||||||
|
| file://:0:0:0:0 | MultiSquared | test.cpp:11:25:11:36 | maybe_unused |
|
||||||
|
| file://:0:0:0:0 | NamespaceTest | test.cpp:1:26:1:35 | deprecated |
|
||||||
|
| file://:0:0:0:0 | NamespaceTest | test.cpp:2:26:2:35 | deprecated |
|
||||||
|
| file://:0:0:0:0 | NamespaceTest | test.cpp:3:26:3:37 | maybe_unused |
|
||||||
|
| test.cpp:4:53:4:61 | MultiAttr | test.cpp:4:26:4:35 | deprecated |
|
||||||
|
| test.cpp:4:53:4:61 | MultiAttr | test.cpp:4:38:4:49 | maybe_unused |
|
||||||
|
| test.cpp:6:43:6:56 | OuterNamespace::InnerNamespace | test.cpp:6:30:6:39 | deprecated |
|
||||||
|
| test.cpp:9:46:9:61 | NamespaceSquared | test.cpp:9:13:9:22 | deprecated |
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
import cpp
|
||||||
|
|
||||||
|
from Namespace ns
|
||||||
|
select ns, ns.getAnAttribute()
|
||||||
11
cpp/ql/test/library-tests/attributes/namespace/test.cpp
Normal file
11
cpp/ql/test/library-tests/attributes/namespace/test.cpp
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
namespace __attribute__((deprecated)) NamespaceTest {}
|
||||||
|
namespace __attribute__((deprecated)) NamespaceTest {}
|
||||||
|
namespace __attribute__((maybe_unused)) NamespaceTest {}
|
||||||
|
namespace __attribute__((deprecated, maybe_unused)) MultiAttr {}
|
||||||
|
namespace OuterNamespace {
|
||||||
|
namespace __attribute__((deprecated)) InnerNamespace {}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace [[deprecated("NamespaceSquared")]] NamespaceSquared {}
|
||||||
|
namespace [[deprecated, maybe_unused]] MultiSquared {}
|
||||||
|
namespace [[deprecated, maybe_unused]] MultiSquared {}
|
||||||
@@ -448,7 +448,6 @@ astGuardsControl
|
|||||||
| test.cpp:31:7:31:13 | ... == ... | false | 34 | 34 |
|
| test.cpp:31:7:31:13 | ... == ... | false | 34 | 34 |
|
||||||
| test.cpp:31:7:31:13 | ... == ... | true | 30 | 30 |
|
| test.cpp:31:7:31:13 | ... == ... | true | 30 | 30 |
|
||||||
| test.cpp:31:7:31:13 | ... == ... | true | 31 | 32 |
|
| test.cpp:31:7:31:13 | ... == ... | true | 31 | 32 |
|
||||||
| test.cpp:42:13:42:20 | call to getABool | false | 53 | 53 |
|
|
||||||
| test.cpp:42:13:42:20 | call to getABool | true | 43 | 45 |
|
| test.cpp:42:13:42:20 | call to getABool | true | 43 | 45 |
|
||||||
astGuardsEnsure
|
astGuardsEnsure
|
||||||
| test.c:7:9:7:13 | ... > ... | test.c:7:9:7:9 | x | < | test.c:7:13:7:13 | 0 | 1 | 10 | 11 |
|
| test.c:7:9:7:13 | ... > ... | test.c:7:9:7:9 | x | < | test.c:7:13:7:13 | 0 | 1 | 10 | 11 |
|
||||||
@@ -893,8 +892,6 @@ astGuardsEnsure_const
|
|||||||
| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:13 | ... == ... | == | 1 | 30 | 30 |
|
| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:13 | ... == ... | == | 1 | 30 | 30 |
|
||||||
| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:13 | ... == ... | == | 1 | 31 | 32 |
|
| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:13 | ... == ... | == | 1 | 31 | 32 |
|
||||||
| test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | != | 0 | 43 | 45 |
|
| test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | != | 0 | 43 | 45 |
|
||||||
| test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | != | 1 | 53 | 53 |
|
|
||||||
| test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | == | 0 | 53 | 53 |
|
|
||||||
| test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | == | 1 | 43 | 45 |
|
| test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | == | 1 | 43 | 45 |
|
||||||
irGuards
|
irGuards
|
||||||
| test.c:7:9:7:13 | CompareGT: ... > ... |
|
| test.c:7:9:7:13 | CompareGT: ... > ... |
|
||||||
@@ -1301,8 +1298,8 @@ irGuardsControl
|
|||||||
| test.cpp:31:7:31:13 | CompareEQ: ... == ... | false | 34 | 34 |
|
| test.cpp:31:7:31:13 | CompareEQ: ... == ... | false | 34 | 34 |
|
||||||
| test.cpp:31:7:31:13 | CompareEQ: ... == ... | true | 30 | 30 |
|
| test.cpp:31:7:31:13 | CompareEQ: ... == ... | true | 30 | 30 |
|
||||||
| test.cpp:31:7:31:13 | CompareEQ: ... == ... | true | 32 | 32 |
|
| test.cpp:31:7:31:13 | CompareEQ: ... == ... | true | 32 | 32 |
|
||||||
| test.cpp:42:13:42:20 | Call: call to getABool | false | 53 | 53 |
|
|
||||||
| test.cpp:42:13:42:20 | Call: call to getABool | true | 44 | 44 |
|
| test.cpp:42:13:42:20 | Call: call to getABool | true | 44 | 44 |
|
||||||
|
| test.cpp:42:13:42:20 | Call: call to getABool | true | 45 | 45 |
|
||||||
irGuardsEnsure
|
irGuardsEnsure
|
||||||
| test.c:7:9:7:13 | CompareGT: ... > ... | test.c:7:9:7:9 | Load: x | < | test.c:7:13:7:13 | Constant: 0 | 1 | 11 | 11 |
|
| test.c:7:9:7:13 | CompareGT: ... > ... | test.c:7:9:7:9 | Load: x | < | test.c:7:13:7:13 | Constant: 0 | 1 | 11 | 11 |
|
||||||
| test.c:7:9:7:13 | CompareGT: ... > ... | test.c:7:9:7:9 | Load: x | >= | test.c:7:13:7:13 | Constant: 0 | 1 | 8 | 8 |
|
| test.c:7:9:7:13 | CompareGT: ... > ... | test.c:7:9:7:9 | Load: x | >= | test.c:7:13:7:13 | Constant: 0 | 1 | 8 | 8 |
|
||||||
@@ -1781,6 +1778,6 @@ irGuardsEnsure_const
|
|||||||
| test.cpp:31:7:31:13 | CompareEQ: ... == ... | test.cpp:31:7:31:13 | CompareEQ: ... == ... | == | 1 | 30 | 30 |
|
| test.cpp:31:7:31:13 | CompareEQ: ... == ... | test.cpp:31:7:31:13 | CompareEQ: ... == ... | == | 1 | 30 | 30 |
|
||||||
| test.cpp:31:7:31:13 | CompareEQ: ... == ... | test.cpp:31:7:31:13 | CompareEQ: ... == ... | == | 1 | 32 | 32 |
|
| test.cpp:31:7:31:13 | CompareEQ: ... == ... | test.cpp:31:7:31:13 | CompareEQ: ... == ... | == | 1 | 32 | 32 |
|
||||||
| test.cpp:42:13:42:20 | Call: call to getABool | test.cpp:42:13:42:20 | Call: call to getABool | != | 0 | 44 | 44 |
|
| test.cpp:42:13:42:20 | Call: call to getABool | test.cpp:42:13:42:20 | Call: call to getABool | != | 0 | 44 | 44 |
|
||||||
| test.cpp:42:13:42:20 | Call: call to getABool | test.cpp:42:13:42:20 | Call: call to getABool | != | 1 | 53 | 53 |
|
| test.cpp:42:13:42:20 | Call: call to getABool | test.cpp:42:13:42:20 | Call: call to getABool | != | 0 | 45 | 45 |
|
||||||
| test.cpp:42:13:42:20 | Call: call to getABool | test.cpp:42:13:42:20 | Call: call to getABool | == | 0 | 53 | 53 |
|
|
||||||
| test.cpp:42:13:42:20 | Call: call to getABool | test.cpp:42:13:42:20 | Call: call to getABool | == | 1 | 44 | 44 |
|
| test.cpp:42:13:42:20 | Call: call to getABool | test.cpp:42:13:42:20 | Call: call to getABool | == | 1 | 44 | 44 |
|
||||||
|
| test.cpp:42:13:42:20 | Call: call to getABool | test.cpp:42:13:42:20 | Call: call to getABool | == | 1 | 45 | 45 |
|
||||||
|
|||||||
@@ -104,7 +104,6 @@
|
|||||||
| test.cpp:31:7:31:13 | ... == ... | false | 34 | 34 |
|
| test.cpp:31:7:31:13 | ... == ... | false | 34 | 34 |
|
||||||
| test.cpp:31:7:31:13 | ... == ... | true | 30 | 30 |
|
| test.cpp:31:7:31:13 | ... == ... | true | 30 | 30 |
|
||||||
| test.cpp:31:7:31:13 | ... == ... | true | 31 | 32 |
|
| test.cpp:31:7:31:13 | ... == ... | true | 31 | 32 |
|
||||||
| test.cpp:42:13:42:20 | call to getABool | false | 53 | 53 |
|
|
||||||
| test.cpp:42:13:42:20 | call to getABool | true | 43 | 45 |
|
| test.cpp:42:13:42:20 | call to getABool | true | 43 | 45 |
|
||||||
| test.cpp:61:10:61:10 | i | Case[0] | 62 | 64 |
|
| test.cpp:61:10:61:10 | i | Case[0] | 62 | 64 |
|
||||||
| test.cpp:61:10:61:10 | i | Case[1] | 65 | 66 |
|
| test.cpp:61:10:61:10 | i | Case[1] | 65 | 66 |
|
||||||
|
|||||||
@@ -635,8 +635,6 @@ unary
|
|||||||
| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:13 | ... == ... | == | 1 | 30 | 30 |
|
| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:13 | ... == ... | == | 1 | 30 | 30 |
|
||||||
| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:13 | ... == ... | == | 1 | 31 | 32 |
|
| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:13 | ... == ... | == | 1 | 31 | 32 |
|
||||||
| test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | != | 0 | 43 | 45 |
|
| test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | != | 0 | 43 | 45 |
|
||||||
| test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | != | 1 | 53 | 53 |
|
|
||||||
| test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | == | 0 | 53 | 53 |
|
|
||||||
| test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | == | 1 | 43 | 45 |
|
| test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | == | 1 | 43 | 45 |
|
||||||
| test.cpp:61:10:61:10 | i | test.cpp:61:10:61:10 | i | == | 0 | 62 | 64 |
|
| test.cpp:61:10:61:10 | i | test.cpp:61:10:61:10 | i | == | 0 | 62 | 64 |
|
||||||
| test.cpp:61:10:61:10 | i | test.cpp:61:10:61:10 | i | == | 1 | 65 | 66 |
|
| test.cpp:61:10:61:10 | i | test.cpp:61:10:61:10 | i | == | 1 | 65 | 66 |
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,7 @@
|
|||||||
|
typedef int int_t;
|
||||||
|
int_t g1[10];
|
||||||
|
int_t g2[2][4];
|
||||||
|
|
||||||
|
typedef float float_t;
|
||||||
|
float_t arr1[5];
|
||||||
|
float_t (*a_pointer)[10];
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
| file://:0:0:0:0 | float_t[5] | file://:0:0:0:0 | float[5] | ArrayTypedefs.cpp:6:9:6:12 | definition of arr1 |
|
||||||
|
| file://:0:0:0:0 | float_t[10] | file://:0:0:0:0 | float[10] | ArrayTypedefs.cpp:7:11:7:19 | definition of a_pointer |
|
||||||
|
| file://:0:0:0:0 | int_t[2][4] | file://:0:0:0:0 | int[2][4] | ArrayTypedefs.cpp:3:7:3:8 | definition of g2 |
|
||||||
|
| file://:0:0:0:0 | int_t[4] | file://:0:0:0:0 | int[4] | ArrayTypedefs.cpp:3:7:3:8 | definition of g2 |
|
||||||
|
| file://:0:0:0:0 | int_t[10] | file://:0:0:0:0 | int[10] | ArrayTypedefs.cpp:2:7:2:8 | definition of g1 |
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
import cpp
|
||||||
|
|
||||||
|
from ArrayType type
|
||||||
|
select type, type.resolveTypedefs(), type.getATypeNameUse()
|
||||||
@@ -1,20 +1,72 @@
|
|||||||
ql/csharp/ql/src/API Abuse/CallToGCCollect.ql
|
ql/csharp/ql/src/API Abuse/CallToGCCollect.ql
|
||||||
|
ql/csharp/ql/src/API Abuse/CallToObsoleteMethod.ql
|
||||||
|
ql/csharp/ql/src/API Abuse/ClassImplementsICloneable.ql
|
||||||
ql/csharp/ql/src/API Abuse/FormatInvalid.ql
|
ql/csharp/ql/src/API Abuse/FormatInvalid.ql
|
||||||
ql/csharp/ql/src/API Abuse/NoDisposeCallOnLocalIDisposable.ql
|
ql/csharp/ql/src/API Abuse/NoDisposeCallOnLocalIDisposable.ql
|
||||||
|
ql/csharp/ql/src/API Abuse/NullArgumentToEquals.ql
|
||||||
|
ql/csharp/ql/src/ASP/BlockCodeResponseWrite.ql
|
||||||
|
ql/csharp/ql/src/Bad Practices/CallsUnmanagedCode.ql
|
||||||
|
ql/csharp/ql/src/Bad Practices/CatchOfNullReferenceException.ql
|
||||||
ql/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql
|
ql/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql
|
||||||
|
ql/csharp/ql/src/Bad Practices/Declarations/LocalScopeVariableShadowsMember.ql
|
||||||
|
ql/csharp/ql/src/Bad Practices/EmptyCatchBlock.ql
|
||||||
|
ql/csharp/ql/src/Bad Practices/Implementation Hiding/ExposeRepresentation.ql
|
||||||
|
ql/csharp/ql/src/Bad Practices/Naming Conventions/FieldMasksSuperField.ql
|
||||||
|
ql/csharp/ql/src/Bad Practices/Naming Conventions/SameNameAsSuper.ql
|
||||||
|
ql/csharp/ql/src/Bad Practices/PathCombine.ql
|
||||||
|
ql/csharp/ql/src/Bad Practices/UnmanagedCodeCheck.ql
|
||||||
|
ql/csharp/ql/src/CSI/CompareIdenticalValues.ql
|
||||||
ql/csharp/ql/src/CSI/NullAlways.ql
|
ql/csharp/ql/src/CSI/NullAlways.ql
|
||||||
ql/csharp/ql/src/CSI/NullMaybe.ql
|
ql/csharp/ql/src/CSI/NullMaybe.ql
|
||||||
|
ql/csharp/ql/src/Concurrency/FutileSyncOnField.ql
|
||||||
|
ql/csharp/ql/src/Concurrency/LockOrder.ql
|
||||||
|
ql/csharp/ql/src/Concurrency/LockThis.ql
|
||||||
|
ql/csharp/ql/src/Concurrency/LockedWait.ql
|
||||||
ql/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql
|
ql/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql
|
||||||
|
ql/csharp/ql/src/Documentation/XmldocMissingSummary.ql
|
||||||
|
ql/csharp/ql/src/Language Abuse/CastThisToTypeParameter.ql
|
||||||
|
ql/csharp/ql/src/Language Abuse/CatchOfGenericException.ql
|
||||||
|
ql/csharp/ql/src/Language Abuse/DubiousDowncastOfThis.ql
|
||||||
|
ql/csharp/ql/src/Language Abuse/DubiousTypeTestOfThis.ql
|
||||||
ql/csharp/ql/src/Language Abuse/MissedReadonlyOpportunity.ql
|
ql/csharp/ql/src/Language Abuse/MissedReadonlyOpportunity.ql
|
||||||
|
ql/csharp/ql/src/Language Abuse/MissedTernaryOpportunity.ql
|
||||||
|
ql/csharp/ql/src/Language Abuse/MissedUsingOpportunity.ql
|
||||||
|
ql/csharp/ql/src/Language Abuse/NestedIf.ql
|
||||||
|
ql/csharp/ql/src/Language Abuse/RethrowException.ql
|
||||||
|
ql/csharp/ql/src/Language Abuse/SimplifyBoolExpr.ql
|
||||||
|
ql/csharp/ql/src/Language Abuse/UnusedPropertyValue.ql
|
||||||
ql/csharp/ql/src/Likely Bugs/Collections/ContainerLengthCmpOffByOne.ql
|
ql/csharp/ql/src/Likely Bugs/Collections/ContainerLengthCmpOffByOne.ql
|
||||||
ql/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql
|
ql/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql
|
||||||
|
ql/csharp/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql
|
||||||
|
ql/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql
|
||||||
|
ql/csharp/ql/src/Likely Bugs/ConstantComparison.ql
|
||||||
ql/csharp/ql/src/Likely Bugs/DangerousNonShortCircuitLogic.ql
|
ql/csharp/ql/src/Likely Bugs/DangerousNonShortCircuitLogic.ql
|
||||||
ql/csharp/ql/src/Likely Bugs/EqualityCheckOnFloats.ql
|
ql/csharp/ql/src/Likely Bugs/EqualityCheckOnFloats.ql
|
||||||
|
ql/csharp/ql/src/Likely Bugs/EqualsArray.ql
|
||||||
ql/csharp/ql/src/Likely Bugs/HashedButNoHash.ql
|
ql/csharp/ql/src/Likely Bugs/HashedButNoHash.ql
|
||||||
|
ql/csharp/ql/src/Likely Bugs/ImpossibleArrayCast.ql
|
||||||
|
ql/csharp/ql/src/Likely Bugs/IncomparableEquals.ql
|
||||||
|
ql/csharp/ql/src/Likely Bugs/NestedLoopsSameVariable.ql
|
||||||
|
ql/csharp/ql/src/Likely Bugs/PossibleLossOfPrecision.ql
|
||||||
|
ql/csharp/ql/src/Likely Bugs/RecursiveEquals.ql
|
||||||
ql/csharp/ql/src/Likely Bugs/ReferenceEqualsOnValueTypes.ql
|
ql/csharp/ql/src/Likely Bugs/ReferenceEqualsOnValueTypes.ql
|
||||||
ql/csharp/ql/src/Likely Bugs/SelfAssignment.ql
|
ql/csharp/ql/src/Likely Bugs/SelfAssignment.ql
|
||||||
|
ql/csharp/ql/src/Likely Bugs/Statements/EmptyBlock.ql
|
||||||
|
ql/csharp/ql/src/Likely Bugs/Statements/EmptyLockStatement.ql
|
||||||
|
ql/csharp/ql/src/Likely Bugs/StaticFieldWrittenByInstance.ql
|
||||||
|
ql/csharp/ql/src/Likely Bugs/StringBuilderCharInit.ql
|
||||||
ql/csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql
|
ql/csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql
|
||||||
|
ql/csharp/ql/src/Linq/MissedAllOpportunity.ql
|
||||||
|
ql/csharp/ql/src/Linq/MissedCastOpportunity.ql
|
||||||
|
ql/csharp/ql/src/Linq/MissedOfTypeOpportunity.ql
|
||||||
|
ql/csharp/ql/src/Linq/MissedSelectOpportunity.ql
|
||||||
|
ql/csharp/ql/src/Linq/MissedWhereOpportunity.ql
|
||||||
|
ql/csharp/ql/src/Linq/RedundantSelect.ql
|
||||||
|
ql/csharp/ql/src/Performance/StringBuilderInLoop.ql
|
||||||
ql/csharp/ql/src/Performance/StringConcatenationInLoop.ql
|
ql/csharp/ql/src/Performance/StringConcatenationInLoop.ql
|
||||||
ql/csharp/ql/src/Performance/UseTryGetValue.ql
|
ql/csharp/ql/src/Performance/UseTryGetValue.ql
|
||||||
ql/csharp/ql/src/Useless code/DefaultToString.ql
|
ql/csharp/ql/src/Useless code/DefaultToString.ql
|
||||||
|
ql/csharp/ql/src/Useless code/FutileConditional.ql
|
||||||
ql/csharp/ql/src/Useless code/IntGetHashCode.ql
|
ql/csharp/ql/src/Useless code/IntGetHashCode.ql
|
||||||
|
ql/csharp/ql/src/Useless code/RedundantToStringCall.ql
|
||||||
|
ql/csharp/ql/src/Useless code/UnusedLabel.ql
|
||||||
|
|||||||
@@ -70,6 +70,8 @@ private module SymmetricKeyConfig implements DataFlow::ConfigSig {
|
|||||||
|
|
||||||
/** Holds if the node is a key sanitizer. */
|
/** Holds if the node is a key sanitizer. */
|
||||||
predicate isBarrier(DataFlow::Node sanitizer) { sanitizer instanceof KeySanitizer }
|
predicate isBarrier(DataFlow::Node sanitizer) { sanitizer instanceof KeySanitizer }
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -82,6 +82,8 @@ module HardcodedSymmetricEncryptionKey {
|
|||||||
succ.asExpr() = mc
|
succ.asExpr() = mc
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ private module ClearTextStorageConfig implements DataFlow::ConfigSig {
|
|||||||
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
|
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
|
||||||
|
|
||||||
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -33,6 +33,8 @@ private module CodeInjectionConfig implements DataFlow::ConfigSig {
|
|||||||
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
|
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
|
||||||
|
|
||||||
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -42,6 +42,8 @@ module CommandInjectionConfig implements DataFlow::ConfigSig {
|
|||||||
* `node` from the data flow graph.
|
* `node` from the data flow graph.
|
||||||
*/
|
*/
|
||||||
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ private module ExposureOfPrivateInformationConfig implements DataFlow::ConfigSig
|
|||||||
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
|
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
|
||||||
|
|
||||||
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -45,6 +45,8 @@ module LdapInjectionConfig implements DataFlow::ConfigSig {
|
|||||||
* `node` from the data flow graph.
|
* `node` from the data flow graph.
|
||||||
*/
|
*/
|
||||||
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -35,6 +35,8 @@ private module LogForgingConfig implements DataFlow::ConfigSig {
|
|||||||
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
|
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
|
||||||
|
|
||||||
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -39,6 +39,8 @@ private module MissingXmlValidationConfig implements DataFlow::ConfigSig {
|
|||||||
predicate isSink(DataFlow::Node sink) { exists(sink.(Sink).getReason()) }
|
predicate isSink(DataFlow::Node sink) { exists(sink.(Sink).getReason()) }
|
||||||
|
|
||||||
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -33,6 +33,8 @@ private module ReDoSConfig implements DataFlow::ConfigSig {
|
|||||||
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
|
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
|
||||||
|
|
||||||
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -33,6 +33,8 @@ private module RegexInjectionConfig implements DataFlow::ConfigSig {
|
|||||||
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
|
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
|
||||||
|
|
||||||
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ private module ResourceInjectionConfig implements DataFlow::ConfigSig {
|
|||||||
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
|
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
|
||||||
|
|
||||||
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -43,6 +43,8 @@ module SqlInjectionConfig implements DataFlow::ConfigSig {
|
|||||||
* `node` from the data flow graph.
|
* `node` from the data flow graph.
|
||||||
*/
|
*/
|
||||||
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -35,6 +35,8 @@ private module TaintedPathConfig implements DataFlow::ConfigSig {
|
|||||||
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
|
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
|
||||||
|
|
||||||
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -37,6 +37,8 @@ private module UrlRedirectConfig implements DataFlow::ConfigSig {
|
|||||||
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
|
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
|
||||||
|
|
||||||
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -43,6 +43,8 @@ module XpathInjectionConfig implements DataFlow::ConfigSig {
|
|||||||
* `node` from the data flow graph.
|
* `node` from the data flow graph.
|
||||||
*/
|
*/
|
||||||
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ private module ZipSlipConfig implements DataFlow::ConfigSig {
|
|||||||
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
|
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
|
||||||
|
|
||||||
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
||||||
|
|
||||||
|
predicate observeDiffInformedIncrementalMode() { any() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -5,9 +5,9 @@
|
|||||||
* @problem.severity warning
|
* @problem.severity warning
|
||||||
* @precision very-high
|
* @precision very-high
|
||||||
* @id cs/call-to-gc
|
* @id cs/call-to-gc
|
||||||
* @tags efficiency
|
* @tags quality
|
||||||
* maintainability
|
* reliability
|
||||||
* quality
|
* performance
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import csharp
|
import csharp
|
||||||
|
|||||||
@@ -6,8 +6,9 @@
|
|||||||
* @problem.severity warning
|
* @problem.severity warning
|
||||||
* @precision very-high
|
* @precision very-high
|
||||||
* @id cs/call-to-obsolete-method
|
* @id cs/call-to-obsolete-method
|
||||||
* @tags changeability
|
* @tags quality
|
||||||
* maintainability
|
* maintainability
|
||||||
|
* changeability
|
||||||
* external/cwe/cwe-477
|
* external/cwe/cwe-477
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
* @problem.severity recommendation
|
* @problem.severity recommendation
|
||||||
* @precision very-high
|
* @precision very-high
|
||||||
* @id cs/class-implements-icloneable
|
* @id cs/class-implements-icloneable
|
||||||
* @tags reliability
|
* @tags quality
|
||||||
* maintainability
|
* maintainability
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -6,9 +6,9 @@
|
|||||||
* @problem.severity error
|
* @problem.severity error
|
||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/invalid-string-formatting
|
* @id cs/invalid-string-formatting
|
||||||
* @tags reliability
|
* @tags quality
|
||||||
* maintainability
|
* reliability
|
||||||
* quality
|
* correctness
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import csharp
|
import csharp
|
||||||
|
|||||||
@@ -6,9 +6,10 @@
|
|||||||
* @problem.severity warning
|
* @problem.severity warning
|
||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/local-not-disposed
|
* @id cs/local-not-disposed
|
||||||
* @tags efficiency
|
* @tags quality
|
||||||
* maintainability
|
* reliability
|
||||||
* quality
|
* correctness
|
||||||
|
* efficiency
|
||||||
* external/cwe/cwe-404
|
* external/cwe/cwe-404
|
||||||
* external/cwe/cwe-459
|
* external/cwe/cwe-459
|
||||||
* external/cwe/cwe-460
|
* external/cwe/cwe-460
|
||||||
|
|||||||
@@ -6,7 +6,8 @@
|
|||||||
* @problem.severity warning
|
* @problem.severity warning
|
||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/null-argument-to-equals
|
* @id cs/null-argument-to-equals
|
||||||
* @tags reliability
|
* @tags quality
|
||||||
|
* reliability
|
||||||
* correctness
|
* correctness
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,9 @@
|
|||||||
* @problem.severity recommendation
|
* @problem.severity recommendation
|
||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/asp/response-write
|
* @id cs/asp/response-write
|
||||||
* @tags maintainability
|
* @tags quality
|
||||||
|
* maintainability
|
||||||
|
* readability
|
||||||
* frameworks/asp.net
|
* frameworks/asp.net
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/coupled-types
|
* @id cs/coupled-types
|
||||||
* @tags maintainability
|
* @tags maintainability
|
||||||
|
* complexity
|
||||||
* modularity
|
* modularity
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -5,8 +5,9 @@
|
|||||||
* @problem.severity recommendation
|
* @problem.severity recommendation
|
||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/call-to-unmanaged-code
|
* @id cs/call-to-unmanaged-code
|
||||||
* @tags reliability
|
* @tags quality
|
||||||
* maintainability
|
* reliability
|
||||||
|
* correctness
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import csharp
|
import csharp
|
||||||
|
|||||||
@@ -5,8 +5,10 @@
|
|||||||
* @problem.severity warning
|
* @problem.severity warning
|
||||||
* @precision very-high
|
* @precision very-high
|
||||||
* @id cs/catch-nullreferenceexception
|
* @id cs/catch-nullreferenceexception
|
||||||
* @tags reliability
|
* @tags quality
|
||||||
|
* reliability
|
||||||
* correctness
|
* correctness
|
||||||
|
* error-handling
|
||||||
* external/cwe/cwe-395
|
* external/cwe/cwe-395
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -7,9 +7,9 @@
|
|||||||
* @problem.severity warning
|
* @problem.severity warning
|
||||||
* @precision very-high
|
* @precision very-high
|
||||||
* @id cs/constant-condition
|
* @id cs/constant-condition
|
||||||
* @tags maintainability
|
* @tags quality
|
||||||
|
* maintainability
|
||||||
* readability
|
* readability
|
||||||
* quality
|
|
||||||
* external/cwe/cwe-835
|
* external/cwe/cwe-835
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,8 @@
|
|||||||
* @problem.severity recommendation
|
* @problem.severity recommendation
|
||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/local-shadows-member
|
* @id cs/local-shadows-member
|
||||||
* @tags maintainability
|
* @tags quality
|
||||||
|
* maintainability
|
||||||
* readability
|
* readability
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,9 @@
|
|||||||
* @problem.severity recommendation
|
* @problem.severity recommendation
|
||||||
* @precision very-high
|
* @precision very-high
|
||||||
* @id cs/too-many-ref-parameters
|
* @id cs/too-many-ref-parameters
|
||||||
* @tags testability
|
* @tags maintainability
|
||||||
* readability
|
* readability
|
||||||
|
* testability
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import csharp
|
import csharp
|
||||||
|
|||||||
@@ -5,8 +5,9 @@
|
|||||||
* @problem.severity recommendation
|
* @problem.severity recommendation
|
||||||
* @precision very-high
|
* @precision very-high
|
||||||
* @id cs/empty-catch-block
|
* @id cs/empty-catch-block
|
||||||
* @tags reliability
|
* @tags quality
|
||||||
* readability
|
* reliability
|
||||||
|
* error-handling
|
||||||
* exceptions
|
* exceptions
|
||||||
* external/cwe/cwe-390
|
* external/cwe/cwe-390
|
||||||
* external/cwe/cwe-391
|
* external/cwe/cwe-391
|
||||||
|
|||||||
@@ -6,7 +6,9 @@
|
|||||||
* @problem.severity recommendation
|
* @problem.severity recommendation
|
||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/expose-implementation
|
* @id cs/expose-implementation
|
||||||
* @tags reliability
|
* @tags quality
|
||||||
|
* reliability
|
||||||
|
* correctness
|
||||||
* external/cwe/cwe-485
|
* external/cwe/cwe-485
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,8 @@
|
|||||||
* @problem.severity warning
|
* @problem.severity warning
|
||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/field-masks-base-field
|
* @id cs/field-masks-base-field
|
||||||
* @tags reliability
|
* @tags quality
|
||||||
|
* maintainability
|
||||||
* readability
|
* readability
|
||||||
* naming
|
* naming
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -5,7 +5,8 @@
|
|||||||
* @problem.severity recommendation
|
* @problem.severity recommendation
|
||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/class-name-matches-base-class
|
* @id cs/class-name-matches-base-class
|
||||||
* @tags maintainability
|
* @tags quality
|
||||||
|
* maintainability
|
||||||
* readability
|
* readability
|
||||||
* naming
|
* naming
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -5,7 +5,9 @@
|
|||||||
* @problem.severity recommendation
|
* @problem.severity recommendation
|
||||||
* @precision very-high
|
* @precision very-high
|
||||||
* @id cs/path-combine
|
* @id cs/path-combine
|
||||||
* @tags reliability
|
* @tags quality
|
||||||
|
* reliability
|
||||||
|
* correctness
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import csharp
|
import csharp
|
||||||
|
|||||||
@@ -5,8 +5,9 @@
|
|||||||
* @problem.severity recommendation
|
* @problem.severity recommendation
|
||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/unmanaged-code
|
* @id cs/unmanaged-code
|
||||||
* @tags reliability
|
* @tags quality
|
||||||
* maintainability
|
* reliability
|
||||||
|
* correctness
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import csharp
|
import csharp
|
||||||
|
|||||||
@@ -7,7 +7,9 @@
|
|||||||
* @problem.severity warning
|
* @problem.severity warning
|
||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/comparison-of-identical-expressions
|
* @id cs/comparison-of-identical-expressions
|
||||||
* @tags reliability
|
* @tags quality
|
||||||
|
* reliability
|
||||||
|
* correctness
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import csharp
|
import csharp
|
||||||
|
|||||||
@@ -5,11 +5,11 @@
|
|||||||
* @problem.severity error
|
* @problem.severity error
|
||||||
* @precision very-high
|
* @precision very-high
|
||||||
* @id cs/dereferenced-value-is-always-null
|
* @id cs/dereferenced-value-is-always-null
|
||||||
* @tags reliability
|
* @tags quality
|
||||||
|
* reliability
|
||||||
* correctness
|
* correctness
|
||||||
* exceptions
|
* exceptions
|
||||||
* external/cwe/cwe-476
|
* external/cwe/cwe-476
|
||||||
* quality
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import csharp
|
import csharp
|
||||||
|
|||||||
@@ -6,11 +6,11 @@
|
|||||||
* @problem.severity warning
|
* @problem.severity warning
|
||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/dereferenced-value-may-be-null
|
* @id cs/dereferenced-value-may-be-null
|
||||||
* @tags reliability
|
* @tags quality
|
||||||
|
* reliability
|
||||||
* correctness
|
* correctness
|
||||||
* exceptions
|
* exceptions
|
||||||
* external/cwe/cwe-476
|
* external/cwe/cwe-476
|
||||||
* quality
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import csharp
|
import csharp
|
||||||
|
|||||||
@@ -8,8 +8,8 @@
|
|||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/complex-block
|
* @id cs/complex-block
|
||||||
* @tags maintainability
|
* @tags maintainability
|
||||||
* testability
|
|
||||||
* complexity
|
* complexity
|
||||||
|
* testability
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import csharp
|
import csharp
|
||||||
|
|||||||
@@ -5,8 +5,9 @@
|
|||||||
* @problem.severity recommendation
|
* @problem.severity recommendation
|
||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/complex-condition
|
* @id cs/complex-condition
|
||||||
* @tags testability
|
* @tags maintainability
|
||||||
* readability
|
* readability
|
||||||
|
* testability
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import csharp
|
import csharp
|
||||||
|
|||||||
@@ -6,9 +6,10 @@
|
|||||||
* @problem.severity error
|
* @problem.severity error
|
||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/unsafe-sync-on-field
|
* @id cs/unsafe-sync-on-field
|
||||||
* @tags reliability
|
* @tags quality
|
||||||
* correctness
|
* reliability
|
||||||
* concurrency
|
* concurrency
|
||||||
|
* correctness
|
||||||
* external/cwe/cwe-662
|
* external/cwe/cwe-662
|
||||||
* external/cwe/cwe-366
|
* external/cwe/cwe-366
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -5,9 +5,10 @@
|
|||||||
* @problem.severity error
|
* @problem.severity error
|
||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/inconsistent-lock-sequence
|
* @id cs/inconsistent-lock-sequence
|
||||||
* @tags reliability
|
* @tags quality
|
||||||
* correctness
|
* reliability
|
||||||
* concurrency
|
* concurrency
|
||||||
|
* correctness
|
||||||
* external/cwe/cwe-662
|
* external/cwe/cwe-662
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,9 @@
|
|||||||
* @problem.severity warning
|
* @problem.severity warning
|
||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/lock-this
|
* @id cs/lock-this
|
||||||
* @tags reliability
|
* @tags quality
|
||||||
* maintainability
|
* reliability
|
||||||
|
* concurrency
|
||||||
* modularity
|
* modularity
|
||||||
* external/cwe/cwe-662
|
* external/cwe/cwe-662
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -5,9 +5,10 @@
|
|||||||
* @problem.severity warning
|
* @problem.severity warning
|
||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/locked-wait
|
* @id cs/locked-wait
|
||||||
* @tags reliability
|
* @tags quality
|
||||||
* correctness
|
* reliability
|
||||||
* concurrency
|
* concurrency
|
||||||
|
* correctness
|
||||||
* external/cwe/cwe-662
|
* external/cwe/cwe-662
|
||||||
* external/cwe/cwe-833
|
* external/cwe/cwe-833
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -5,8 +5,9 @@
|
|||||||
* @kind problem
|
* @kind problem
|
||||||
* @problem.severity warning
|
* @problem.severity warning
|
||||||
* @id cs/useless-assignment-to-local
|
* @id cs/useless-assignment-to-local
|
||||||
* @tags maintainability
|
* @tags quality
|
||||||
* quality
|
* maintainability
|
||||||
|
* useless-code
|
||||||
* external/cwe/cwe-563
|
* external/cwe/cwe-563
|
||||||
* @precision very-high
|
* @precision very-high
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -5,7 +5,9 @@
|
|||||||
* @problem.severity recommendation
|
* @problem.severity recommendation
|
||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/xmldoc/missing-summary
|
* @id cs/xmldoc/missing-summary
|
||||||
* @tags maintainability
|
* @tags quality
|
||||||
|
* maintainability
|
||||||
|
* readability
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import Documentation
|
import Documentation
|
||||||
|
|||||||
@@ -5,8 +5,9 @@
|
|||||||
* @problem.severity recommendation
|
* @problem.severity recommendation
|
||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/cast-of-this-to-type-parameter
|
* @id cs/cast-of-this-to-type-parameter
|
||||||
* @tags reliability
|
* @tags quality
|
||||||
* maintainability
|
* reliability
|
||||||
|
* correctness
|
||||||
* language-features
|
* language-features
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,9 @@
|
|||||||
* @problem.severity recommendation
|
* @problem.severity recommendation
|
||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/catch-of-all-exceptions
|
* @id cs/catch-of-all-exceptions
|
||||||
* @tags reliability
|
* @tags quality
|
||||||
* maintainability
|
* reliability
|
||||||
|
* error-handling
|
||||||
* external/cwe/cwe-396
|
* external/cwe/cwe-396
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,9 @@
|
|||||||
* @problem.severity recommendation
|
* @problem.severity recommendation
|
||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/chained-type-tests
|
* @id cs/chained-type-tests
|
||||||
* @tags changeability
|
* @tags reliability
|
||||||
* maintainability
|
* performance
|
||||||
|
* changeability
|
||||||
* language-features
|
* language-features
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -5,8 +5,10 @@
|
|||||||
* @problem.severity warning
|
* @problem.severity warning
|
||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/downcast-of-this
|
* @id cs/downcast-of-this
|
||||||
* @tags testability
|
* @tags quality
|
||||||
* maintainability
|
* reliability
|
||||||
|
* correctness
|
||||||
|
* testability
|
||||||
* language-features
|
* language-features
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -5,8 +5,10 @@
|
|||||||
* @problem.severity warning
|
* @problem.severity warning
|
||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/type-test-of-this
|
* @id cs/type-test-of-this
|
||||||
* @tags testability
|
* @tags quality
|
||||||
* maintainability
|
* reliability
|
||||||
|
* correctness
|
||||||
|
* testability
|
||||||
* language-features
|
* language-features
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -6,9 +6,10 @@
|
|||||||
* @problem.severity recommendation
|
* @problem.severity recommendation
|
||||||
* @precision high
|
* @precision high
|
||||||
* @id cs/missed-readonly-modifier
|
* @id cs/missed-readonly-modifier
|
||||||
* @tags maintainability
|
* @tags quality
|
||||||
|
* maintainability
|
||||||
|
* readability
|
||||||
* language-features
|
* language-features
|
||||||
* quality
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import csharp
|
import csharp
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user