зеркало из https://github.com/github/codeql.git
Merge pull request #339 from hvitved/csharp/cfg/assertions
C#: Detect constantly failing assertions in the CFG
This commit is contained in:
Коммит
ec2bf914c8
|
@ -2,8 +2,10 @@
|
|||
|
||||
## General improvements
|
||||
|
||||
* The control flow graph construction now takes simple Boolean conditions on local scope variables into account. For example, in `if (b) x = 0; if (b) x = 1;`, the control flow graph will reflect that taking the `true` (resp. `false`) branch in the first condition implies taking the same branch in the second condition. In effect, the first assignment to `x` will now be identified as being dead.
|
||||
|
||||
* Control flow graph improvements:
|
||||
* The control flow graph construction now takes simple Boolean conditions on local scope variables into account. For example, in `if (b) x = 0; if (b) x = 1;`, the control flow graph will reflect that taking the `true` (resp. `false`) branch in the first condition implies taking the same branch in the second condition. In effect, the first assignment to `x` will now be identified as being dead.
|
||||
* Code that is only reachable from a constant failing assertion, such as `Debug.Assert(false)`, is considered to be unreachable.
|
||||
|
||||
## New queries
|
||||
|
||||
| **Query** | **Tags** | **Purpose** |
|
||||
|
|
|
@ -1,11 +1,20 @@
|
|||
/** Provides classes for assertions. */
|
||||
private import semmle.code.csharp.frameworks.system.Diagnostics
|
||||
private import semmle.code.csharp.frameworks.test.VisualStudio
|
||||
private import semmle.code.csharp.frameworks.System
|
||||
|
||||
/** An assertion method. */
|
||||
abstract class AssertMethod extends Method {
|
||||
/** Gets the index of the parameter being asserted. */
|
||||
abstract int getAssertionIndex();
|
||||
|
||||
/** Gets the parameter being asserted. */
|
||||
final Parameter getAssertedParameter() {
|
||||
result = this.getParameter(this.getAssertionIndex())
|
||||
}
|
||||
|
||||
/** Gets the exception being thrown if the assertion fails, if any. */
|
||||
abstract ExceptionClass getExceptionClass();
|
||||
}
|
||||
|
||||
/** A positive assertion method. */
|
||||
|
@ -24,6 +33,36 @@ abstract class AssertNullMethod extends AssertMethod {
|
|||
abstract class AssertNonNullMethod extends AssertMethod {
|
||||
}
|
||||
|
||||
/** An assertion, that is, a call to an assertion method. */
|
||||
class Assertion extends MethodCall {
|
||||
private AssertMethod target;
|
||||
|
||||
Assertion() { this.getTarget() = target }
|
||||
|
||||
/** Gets the assertion method targeted by this assertion. */
|
||||
AssertMethod getAssertMethod() { result = target }
|
||||
|
||||
/** Gets the expression that this assertion pertains to. */
|
||||
Expr getExpr() {
|
||||
result = this.getArgumentForParameter(target.getAssertedParameter())
|
||||
}
|
||||
}
|
||||
|
||||
/** A trivially failing assertion, for example `Debug.Assert(false)`. */
|
||||
class FailingAssertion extends Assertion {
|
||||
FailingAssertion() {
|
||||
exists(AssertMethod am, Expr e |
|
||||
am = this.getAssertMethod() and
|
||||
e = this.getExpr() |
|
||||
am instanceof AssertTrueMethod and
|
||||
e.getValue() = "false"
|
||||
or
|
||||
am instanceof AssertFalseMethod and
|
||||
e.getValue() = "true"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A `System.Diagnostics.Debug` assertion method.
|
||||
*/
|
||||
|
@ -33,6 +72,12 @@ class SystemDiagnosticsDebugAssertTrueMethod extends AssertTrueMethod {
|
|||
}
|
||||
|
||||
override int getAssertionIndex() { result = 0 }
|
||||
|
||||
override ExceptionClass getExceptionClass() {
|
||||
// A failing assertion generates a message box, see
|
||||
// https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.debug.assert
|
||||
none()
|
||||
}
|
||||
}
|
||||
|
||||
/** A Visual Studio assertion method. */
|
||||
|
@ -42,6 +87,8 @@ class VSTestAssertTrueMethod extends AssertTrueMethod {
|
|||
}
|
||||
|
||||
override int getAssertionIndex() { result = 0 }
|
||||
|
||||
override AssertFailedExceptionClass getExceptionClass() { any() }
|
||||
}
|
||||
|
||||
/** A Visual Studio negated assertion method. */
|
||||
|
@ -51,6 +98,8 @@ class VSTestAssertFalseMethod extends AssertFalseMethod {
|
|||
}
|
||||
|
||||
override int getAssertionIndex() { result = 0 }
|
||||
|
||||
override AssertFailedExceptionClass getExceptionClass() { any() }
|
||||
}
|
||||
|
||||
/** A Visual Studio `null` assertion method. */
|
||||
|
@ -60,6 +109,8 @@ class VSTestAssertNullMethod extends AssertNullMethod {
|
|||
}
|
||||
|
||||
override int getAssertionIndex() { result = 0 }
|
||||
|
||||
override AssertFailedExceptionClass getExceptionClass() { any() }
|
||||
}
|
||||
|
||||
/** A Visual Studio non-`null` assertion method. */
|
||||
|
@ -69,28 +120,50 @@ class VSTestAssertNonNullMethod extends AssertNonNullMethod {
|
|||
}
|
||||
|
||||
override int getAssertionIndex() { result = 0 }
|
||||
|
||||
override AssertFailedExceptionClass getExceptionClass() { any() }
|
||||
}
|
||||
|
||||
/** A method that forwards to another assertion method. */
|
||||
class ForwarderAssertMethod extends AssertMethod {
|
||||
AssertMethod forwardee;
|
||||
int assertionIndex;
|
||||
Parameter p;
|
||||
|
||||
ForwarderAssertMethod() {
|
||||
exists(AssignableDefinitions::ImplicitParameterDefinition def, ParameterRead pr |
|
||||
def.getParameter() = this.getParameter(assertionIndex) and
|
||||
pr = def.getAReachableRead() and
|
||||
pr.getAControlFlowNode().postDominates(this.getEntryPoint()) and
|
||||
forwardee.getParameter(forwardee.getAssertionIndex()).getAnAssignedArgument() = pr
|
||||
p = this.getAParameter() and
|
||||
strictcount(AssignableDefinition def | def.getTarget() = p) = 1 and
|
||||
forex(ControlFlowElement body |
|
||||
body = this.getABody() |
|
||||
exists(Assertion a |
|
||||
body = getAnAssertingElement(a) and
|
||||
a.getExpr() = p.getAnAccess() and
|
||||
forwardee = a.getAssertMethod()
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
override int getAssertionIndex() { result = assertionIndex }
|
||||
override int getAssertionIndex() { result = p.getPosition() }
|
||||
|
||||
override ExceptionClass getExceptionClass() {
|
||||
result = forwardee.getExceptionClass()
|
||||
}
|
||||
|
||||
/** Gets the underlying assertion method that is being forwarded to. */
|
||||
AssertMethod getUnderlyingAssertMethod() { result = forwardee }
|
||||
}
|
||||
|
||||
private ControlFlowElement getAnAssertingElement(Assertion a) {
|
||||
result = a
|
||||
or
|
||||
result = getAnAssertingStmt(a)
|
||||
}
|
||||
|
||||
private Stmt getAnAssertingStmt(Assertion a) {
|
||||
result.(ExprStmt).getExpr() = getAnAssertingElement(a)
|
||||
or
|
||||
result.(BlockStmt).getFirstStmt() = getAnAssertingElement(a)
|
||||
}
|
||||
|
||||
/** A method that forwards to a positive assertion method. */
|
||||
class ForwarderAssertTrueMethod extends ForwarderAssertMethod, AssertTrueMethod {
|
||||
ForwarderAssertTrueMethod() {
|
||||
|
@ -121,8 +194,5 @@ class ForwarderAssertNonNullMethod extends ForwarderAssertMethod, AssertNonNullM
|
|||
|
||||
/** Holds if expression `e` appears in an assertion. */
|
||||
predicate isExprInAssertion(Expr e) {
|
||||
exists(MethodCall call, AssertMethod assertMethod |
|
||||
call.getTarget() = assertMethod |
|
||||
e = call.getArgument(assertMethod.getAssertionIndex()).getAChildExpr*()
|
||||
)
|
||||
e = any(Assertion a).getExpr().getAChildExpr*()
|
||||
}
|
||||
|
|
|
@ -59,6 +59,8 @@ private newtype TCompletion =
|
|||
TGotoDefaultCompletion()
|
||||
or
|
||||
TThrowCompletion(ExceptionClass ec)
|
||||
or
|
||||
TExitCompletion()
|
||||
|
||||
/**
|
||||
* A completion of a statement or an expression.
|
||||
|
@ -642,3 +644,16 @@ class ThrowCompletion extends Completion, TThrowCompletion {
|
|||
|
||||
override string toString() { result = "throw(" + getExceptionClass() + ")" }
|
||||
}
|
||||
|
||||
/**
|
||||
* A completion that represents evaluation of a statement or an
|
||||
* expression resulting in a program exit, for example
|
||||
* `System.Environment.Exit(0)`.
|
||||
*
|
||||
* An exit completion is different from a `return` completion; the former
|
||||
* exits the whole application, and exists inside `try` statements skip
|
||||
* `finally` blocks.
|
||||
*/
|
||||
class ExitCompletion extends Completion, TExitCompletion {
|
||||
override string toString() { result = "exit" }
|
||||
}
|
||||
|
|
|
@ -785,6 +785,30 @@ module ControlFlow {
|
|||
c.(ThrowCompletion).getExceptionClass() = getExceptionClass()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* An exit control flow successor.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* int M(string s)
|
||||
* {
|
||||
* if (s == null)
|
||||
* System.Environment.Exit(0);
|
||||
* return s.Length;
|
||||
* }
|
||||
* ```
|
||||
*
|
||||
* The callable exit node of `M` is an exit successor of the node on line 4.
|
||||
*/
|
||||
class ExitSuccessor extends SuccessorType, TExitSuccessor {
|
||||
override string toString() { result = "exit" }
|
||||
|
||||
override predicate matchesCompletion(Completion c) {
|
||||
c instanceof ExitCompletion
|
||||
}
|
||||
}
|
||||
}
|
||||
private import SuccessorTypes
|
||||
|
||||
|
@ -1386,10 +1410,15 @@ module ControlFlow {
|
|||
result = lastTryStmtFinally(ts, c) and
|
||||
not c instanceof NormalCompletion
|
||||
or
|
||||
// If there is no `finally` block, last elements are from the body, from
|
||||
// the blocks of one of the `catch` clauses, or from the last `catch` clause
|
||||
not ts.hasFinally() and
|
||||
result = getBlockOrCatchFinallyPred(ts, c)
|
||||
result = getBlockOrCatchFinallyPred(ts, c) and
|
||||
(
|
||||
// If there is no `finally` block, last elements are from the body, from
|
||||
// the blocks of one of the `catch` clauses, or from the last `catch` clause
|
||||
not ts.hasFinally()
|
||||
or
|
||||
// Exit completions ignore the `finally` block
|
||||
c instanceof ExitCompletion
|
||||
)
|
||||
)
|
||||
or
|
||||
cfe = any(SpecificCatchClause scc |
|
||||
|
@ -1453,7 +1482,7 @@ module ControlFlow {
|
|||
// Propagate completion from a call to a non-terminating callable
|
||||
cfe = any(NonReturningCall nrc |
|
||||
result = nrc and
|
||||
c = nrc.getTarget().(NonReturningCallable).getACallCompletion()
|
||||
c = nrc.getACompletion()
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -1734,19 +1763,44 @@ module ControlFlow {
|
|||
*/
|
||||
private module NonReturning {
|
||||
private import semmle.code.csharp.ExprOrStmtParent
|
||||
private import semmle.code.csharp.commons.Assertions
|
||||
private import semmle.code.csharp.frameworks.System
|
||||
|
||||
/**
|
||||
* A call that definitely does not return (conservative analysis).
|
||||
*/
|
||||
class NonReturningCall extends Call {
|
||||
NonReturningCall() {
|
||||
this.getTarget() instanceof NonReturningCallable
|
||||
}
|
||||
/** A call that definitely does not return (conservative analysis). */
|
||||
abstract class NonReturningCall extends Call {
|
||||
/** Gets a valid completion for this non-returning call. */
|
||||
abstract Completion getACompletion();
|
||||
}
|
||||
|
||||
/** A callable that does not return. */
|
||||
abstract class NonReturningCallable extends Callable {
|
||||
private class ExitingCall extends NonReturningCall {
|
||||
ExitingCall() {
|
||||
this.getTarget() instanceof ExitingCallable
|
||||
or
|
||||
exists(AssertMethod m |
|
||||
m = this.(FailingAssertion).getAssertMethod() |
|
||||
not exists(m.getExceptionClass())
|
||||
)
|
||||
}
|
||||
|
||||
override ExitCompletion getACompletion() { any() }
|
||||
}
|
||||
|
||||
private class ThrowingCall extends NonReturningCall {
|
||||
private ThrowCompletion c;
|
||||
|
||||
ThrowingCall() {
|
||||
c = this.getTarget().(ThrowingCallable).getACallCompletion()
|
||||
or
|
||||
exists(AssertMethod m |
|
||||
m = this.(FailingAssertion).getAssertMethod() |
|
||||
c.getExceptionClass() = m.getExceptionClass()
|
||||
)
|
||||
}
|
||||
|
||||
override ThrowCompletion getACompletion() { result = c }
|
||||
}
|
||||
|
||||
private abstract class NonReturningCallable extends Callable {
|
||||
NonReturningCallable() {
|
||||
not exists(ReturnStmt ret | ret.getEnclosingCallable() = this) and
|
||||
not hasAccessorAutoImplementation(this, _) and
|
||||
|
@ -1756,19 +1810,9 @@ module ControlFlow {
|
|||
v = this.(Accessor).getDeclaration()
|
||||
)
|
||||
}
|
||||
|
||||
/** Gets a valid completion for a call to this non-returning callable. */
|
||||
abstract Completion getACallCompletion();
|
||||
}
|
||||
|
||||
/**
|
||||
* A callable that exits when called.
|
||||
*/
|
||||
private abstract class ExitingCallable extends NonReturningCallable {
|
||||
override Completion getACallCompletion() {
|
||||
result instanceof ReturnCompletion
|
||||
}
|
||||
}
|
||||
private abstract class ExitingCallable extends NonReturningCallable { }
|
||||
|
||||
private class DirectlyExitingCallable extends ExitingCallable {
|
||||
DirectlyExitingCallable() {
|
||||
|
@ -1789,7 +1833,8 @@ module ControlFlow {
|
|||
}
|
||||
|
||||
private ControlFlowElement getAnExitingElement() {
|
||||
result.(Call).getTarget() instanceof ExitingCallable or
|
||||
result instanceof ExitingCall
|
||||
or
|
||||
result = getAnExitingStmt()
|
||||
}
|
||||
|
||||
|
@ -1805,9 +1850,6 @@ module ControlFlow {
|
|||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* A callable that throws an exception when called.
|
||||
*/
|
||||
private class ThrowingCallable extends NonReturningCallable {
|
||||
ThrowingCallable() {
|
||||
forex(ControlFlowElement body |
|
||||
|
@ -1816,16 +1858,17 @@ module ControlFlow {
|
|||
)
|
||||
}
|
||||
|
||||
override ThrowCompletion getACallCompletion() {
|
||||
/** Gets a valid completion for a call to this throwing callable. */
|
||||
ThrowCompletion getACallCompletion() {
|
||||
this.getABody() = getAThrowingElement(result)
|
||||
}
|
||||
}
|
||||
|
||||
private ControlFlowElement getAThrowingElement(ThrowCompletion c) {
|
||||
c = result.(Call).getTarget().(ThrowingCallable).getACallCompletion()
|
||||
c = result.(ThrowingCall).getACompletion()
|
||||
or
|
||||
result = any(ThrowElement te |
|
||||
c.(ThrowCompletion).getExceptionClass() = te.getThrownExceptionType() and
|
||||
c.getExceptionClass() = te.getThrownExceptionType() and
|
||||
// For stub implementations, there may exist proper implementations that are not seen
|
||||
// during compilation, so we conservatively rule those out
|
||||
not isStub(te)
|
||||
|
@ -1839,12 +1882,13 @@ module ControlFlow {
|
|||
or
|
||||
result.(BlockStmt).getFirstStmt() = getAThrowingStmt(c)
|
||||
or
|
||||
exists(IfStmt ifStmt |
|
||||
exists(IfStmt ifStmt, ThrowCompletion c1, ThrowCompletion c2 |
|
||||
result = ifStmt and
|
||||
ifStmt.getThen() = getAThrowingElement(_) and
|
||||
ifStmt.getElse() = getAThrowingElement(_) |
|
||||
ifStmt.getThen() = getAThrowingElement(c) or
|
||||
ifStmt.getElse() = getAThrowingElement(c)
|
||||
ifStmt.getThen() = getAThrowingElement(c1) and
|
||||
ifStmt.getElse() = getAThrowingElement(c2) |
|
||||
c = c1
|
||||
or
|
||||
c = c2
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -2293,6 +2337,7 @@ module ControlFlow {
|
|||
// Flow from last element of `try` block to first element of `finally` block
|
||||
cfe = lastTryStmtBlock(ts, c) and
|
||||
result = first(ts.getFinally()) and
|
||||
not c instanceof ExitCompletion and
|
||||
(
|
||||
c instanceof ThrowCompletion
|
||||
implies
|
||||
|
@ -3892,6 +3937,8 @@ module ControlFlow {
|
|||
TExceptionSuccessor(ExceptionClass ec) {
|
||||
exists(ThrowCompletion c | c.getExceptionClass() = ec)
|
||||
}
|
||||
or
|
||||
TExitSuccessor()
|
||||
|
||||
/** Gets a successor node of a given flow type, if any. */
|
||||
cached
|
||||
|
|
|
@ -107,6 +107,14 @@ class VSTestAssertClass extends Class {
|
|||
}
|
||||
}
|
||||
|
||||
/** The `Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException` class. */
|
||||
class AssertFailedExceptionClass extends ExceptionClass {
|
||||
AssertFailedExceptionClass() {
|
||||
this.getNamespace() instanceof VSTestNamespace and
|
||||
this.hasName("AssertFailedException")
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `Microsoft.VisualStudio.TestTools.UnitTesting.Assert` class. */
|
||||
deprecated
|
||||
VSTestAssertClass getVSTestAssertClass() { any() }
|
||||
|
|
|
@ -0,0 +1,84 @@
|
|||
| Assertions.cs:7:44:7:59 | call to method IsTrue | Assertions.cs:7:58:7:58 | access to parameter b | NonConstructedMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:7:44:7:59 | call to method IsTrue | Assertions.cs:7:58:7:58 | access to parameter b | RuntimeMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:7:44:7:59 | call to method IsTrue | Assertions.cs:7:58:7:58 | access to parameter b | SourceDeclarationMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:7:44:7:59 | call to method IsTrue | Assertions.cs:7:58:7:58 | access to parameter b | VSTestAssertTrueMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:8:45:8:55 | call to method MyAssert | Assertions.cs:8:54:8:54 | access to parameter b | ForwarderAssertTrueMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:8:45:8:55 | call to method MyAssert | Assertions.cs:8:54:8:54 | access to parameter b | NonConstructedMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:8:45:8:55 | call to method MyAssert | Assertions.cs:8:54:8:54 | access to parameter b | RuntimeMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:8:45:8:55 | call to method MyAssert | Assertions.cs:8:54:8:54 | access to parameter b | SourceDeclarationMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:16:9:16:31 | call to method Assert | Assertions.cs:16:22:16:30 | ... != ... | NonConstructedMethod | <none> |
|
||||
| Assertions.cs:16:9:16:31 | call to method Assert | Assertions.cs:16:22:16:30 | ... != ... | RuntimeMethod | <none> |
|
||||
| Assertions.cs:16:9:16:31 | call to method Assert | Assertions.cs:16:22:16:30 | ... != ... | SourceDeclarationMethod | <none> |
|
||||
| Assertions.cs:16:9:16:31 | call to method Assert | Assertions.cs:16:22:16:30 | ... != ... | SystemDiagnosticsDebugAssertTrueMethod | <none> |
|
||||
| Assertions.cs:17:9:17:24 | call to method IsNull | Assertions.cs:17:23:17:23 | access to local variable s | NonConstructedMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:17:9:17:24 | call to method IsNull | Assertions.cs:17:23:17:23 | access to local variable s | RuntimeMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:17:9:17:24 | call to method IsNull | Assertions.cs:17:23:17:23 | access to local variable s | SourceDeclarationMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:17:9:17:24 | call to method IsNull | Assertions.cs:17:23:17:23 | access to local variable s | VSTestAssertNullMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:18:9:18:27 | call to method IsNotNull | Assertions.cs:18:26:18:26 | access to local variable s | NonConstructedMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:18:9:18:27 | call to method IsNotNull | Assertions.cs:18:26:18:26 | access to local variable s | RuntimeMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:18:9:18:27 | call to method IsNotNull | Assertions.cs:18:26:18:26 | access to local variable s | SourceDeclarationMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:18:9:18:27 | call to method IsNotNull | Assertions.cs:18:26:18:26 | access to local variable s | VSTestAssertNonNullMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:19:9:19:32 | call to method IsTrue | Assertions.cs:19:23:19:31 | ... == ... | NonConstructedMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:19:9:19:32 | call to method IsTrue | Assertions.cs:19:23:19:31 | ... == ... | RuntimeMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:19:9:19:32 | call to method IsTrue | Assertions.cs:19:23:19:31 | ... == ... | SourceDeclarationMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:19:9:19:32 | call to method IsTrue | Assertions.cs:19:23:19:31 | ... == ... | VSTestAssertTrueMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:20:9:20:32 | call to method IsTrue | Assertions.cs:20:23:20:31 | ... != ... | NonConstructedMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:20:9:20:32 | call to method IsTrue | Assertions.cs:20:23:20:31 | ... != ... | RuntimeMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:20:9:20:32 | call to method IsTrue | Assertions.cs:20:23:20:31 | ... != ... | SourceDeclarationMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:20:9:20:32 | call to method IsTrue | Assertions.cs:20:23:20:31 | ... != ... | VSTestAssertTrueMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:21:9:21:33 | call to method IsFalse | Assertions.cs:21:24:21:32 | ... != ... | NonConstructedMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:21:9:21:33 | call to method IsFalse | Assertions.cs:21:24:21:32 | ... != ... | RuntimeMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:21:9:21:33 | call to method IsFalse | Assertions.cs:21:24:21:32 | ... != ... | SourceDeclarationMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:21:9:21:33 | call to method IsFalse | Assertions.cs:21:24:21:32 | ... != ... | VSTestAssertFalseMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:22:9:22:33 | call to method IsFalse | Assertions.cs:22:24:22:32 | ... == ... | NonConstructedMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:22:9:22:33 | call to method IsFalse | Assertions.cs:22:24:22:32 | ... == ... | RuntimeMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:22:9:22:33 | call to method IsFalse | Assertions.cs:22:24:22:32 | ... == ... | SourceDeclarationMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:22:9:22:33 | call to method IsFalse | Assertions.cs:22:24:22:32 | ... == ... | VSTestAssertFalseMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:23:9:23:38 | call to method MyAssert | Assertions.cs:23:29:23:37 | ... == ... | ForwarderAssertTrueMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:23:9:23:38 | call to method MyAssert | Assertions.cs:23:29:23:37 | ... == ... | NonConstructedMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:23:9:23:38 | call to method MyAssert | Assertions.cs:23:29:23:37 | ... == ... | RuntimeMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:23:9:23:38 | call to method MyAssert | Assertions.cs:23:29:23:37 | ... == ... | SourceDeclarationMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:24:9:24:39 | call to method MyAssert2 | Assertions.cs:24:30:24:38 | ... == ... | ForwarderAssertTrueMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:24:9:24:39 | call to method MyAssert2 | Assertions.cs:24:30:24:38 | ... == ... | NonConstructedMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:24:9:24:39 | call to method MyAssert2 | Assertions.cs:24:30:24:38 | ... == ... | RuntimeMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:24:9:24:39 | call to method MyAssert2 | Assertions.cs:24:30:24:38 | ... == ... | SourceDeclarationMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:29:9:29:27 | call to method Assert | Assertions.cs:29:22:29:26 | false | NonConstructedMethod | <none> |
|
||||
| Assertions.cs:29:9:29:27 | call to method Assert | Assertions.cs:29:22:29:26 | false | RuntimeMethod | <none> |
|
||||
| Assertions.cs:29:9:29:27 | call to method Assert | Assertions.cs:29:22:29:26 | false | SourceDeclarationMethod | <none> |
|
||||
| Assertions.cs:29:9:29:27 | call to method Assert | Assertions.cs:29:22:29:26 | false | SystemDiagnosticsDebugAssertTrueMethod | <none> |
|
||||
| Assertions.cs:30:9:30:26 | call to method Assert | Assertions.cs:30:22:30:25 | true | NonConstructedMethod | <none> |
|
||||
| Assertions.cs:30:9:30:26 | call to method Assert | Assertions.cs:30:22:30:25 | true | RuntimeMethod | <none> |
|
||||
| Assertions.cs:30:9:30:26 | call to method Assert | Assertions.cs:30:22:30:25 | true | SourceDeclarationMethod | <none> |
|
||||
| Assertions.cs:30:9:30:26 | call to method Assert | Assertions.cs:30:22:30:25 | true | SystemDiagnosticsDebugAssertTrueMethod | <none> |
|
||||
| Assertions.cs:31:9:31:28 | call to method IsTrue | Assertions.cs:31:23:31:27 | false | NonConstructedMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:31:9:31:28 | call to method IsTrue | Assertions.cs:31:23:31:27 | false | RuntimeMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:31:9:31:28 | call to method IsTrue | Assertions.cs:31:23:31:27 | false | SourceDeclarationMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:31:9:31:28 | call to method IsTrue | Assertions.cs:31:23:31:27 | false | VSTestAssertTrueMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:32:9:32:27 | call to method IsTrue | Assertions.cs:32:23:32:26 | true | NonConstructedMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:32:9:32:27 | call to method IsTrue | Assertions.cs:32:23:32:26 | true | RuntimeMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:32:9:32:27 | call to method IsTrue | Assertions.cs:32:23:32:26 | true | SourceDeclarationMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:32:9:32:27 | call to method IsTrue | Assertions.cs:32:23:32:26 | true | VSTestAssertTrueMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:33:9:33:28 | call to method IsFalse | Assertions.cs:33:24:33:27 | true | NonConstructedMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:33:9:33:28 | call to method IsFalse | Assertions.cs:33:24:33:27 | true | RuntimeMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:33:9:33:28 | call to method IsFalse | Assertions.cs:33:24:33:27 | true | SourceDeclarationMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:33:9:33:28 | call to method IsFalse | Assertions.cs:33:24:33:27 | true | VSTestAssertFalseMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:34:9:34:29 | call to method IsFalse | Assertions.cs:34:24:34:28 | false | NonConstructedMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:34:9:34:29 | call to method IsFalse | Assertions.cs:34:24:34:28 | false | RuntimeMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:34:9:34:29 | call to method IsFalse | Assertions.cs:34:24:34:28 | false | SourceDeclarationMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:34:9:34:29 | call to method IsFalse | Assertions.cs:34:24:34:28 | false | VSTestAssertFalseMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:35:9:35:34 | call to method MyAssert | Assertions.cs:35:29:35:33 | false | ForwarderAssertTrueMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:35:9:35:34 | call to method MyAssert | Assertions.cs:35:29:35:33 | false | NonConstructedMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:35:9:35:34 | call to method MyAssert | Assertions.cs:35:29:35:33 | false | RuntimeMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:35:9:35:34 | call to method MyAssert | Assertions.cs:35:29:35:33 | false | SourceDeclarationMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:36:9:36:33 | call to method MyAssert | Assertions.cs:36:29:36:32 | true | ForwarderAssertTrueMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:36:9:36:33 | call to method MyAssert | Assertions.cs:36:29:36:32 | true | NonConstructedMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:36:9:36:33 | call to method MyAssert | Assertions.cs:36:29:36:32 | true | RuntimeMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:36:9:36:33 | call to method MyAssert | Assertions.cs:36:29:36:32 | true | SourceDeclarationMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:37:9:37:35 | call to method MyAssert2 | Assertions.cs:37:30:37:34 | false | ForwarderAssertTrueMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:37:9:37:35 | call to method MyAssert2 | Assertions.cs:37:30:37:34 | false | NonConstructedMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:37:9:37:35 | call to method MyAssert2 | Assertions.cs:37:30:37:34 | false | RuntimeMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:37:9:37:35 | call to method MyAssert2 | Assertions.cs:37:30:37:34 | false | SourceDeclarationMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:38:9:38:34 | call to method MyAssert2 | Assertions.cs:38:30:38:33 | true | ForwarderAssertTrueMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:38:9:38:34 | call to method MyAssert2 | Assertions.cs:38:30:38:33 | true | NonConstructedMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:38:9:38:34 | call to method MyAssert2 | Assertions.cs:38:30:38:33 | true | RuntimeMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
||||
| Assertions.cs:38:9:38:34 | call to method MyAssert2 | Assertions.cs:38:30:38:33 | true | SourceDeclarationMethod | Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException |
|
|
@ -0,0 +1,42 @@
|
|||
using System;
|
||||
using System.Diagnostics;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
||||
public static class Forwarders
|
||||
{
|
||||
public static void MyAssert(bool b) => Assert.IsTrue(b);
|
||||
public static void MyAssert2(bool b) => MyAssert(b);
|
||||
}
|
||||
|
||||
class Assertions
|
||||
{
|
||||
void M()
|
||||
{
|
||||
string s = null;
|
||||
Debug.Assert(s != null);
|
||||
Assert.IsNull(s);
|
||||
Assert.IsNotNull(s);
|
||||
Assert.IsTrue(s == null);
|
||||
Assert.IsTrue(s != null);
|
||||
Assert.IsFalse(s != null);
|
||||
Assert.IsFalse(s == null);
|
||||
Forwarders.MyAssert(s == null);
|
||||
Forwarders.MyAssert2(s == null);
|
||||
}
|
||||
|
||||
void Trivial()
|
||||
{
|
||||
Debug.Assert(false);
|
||||
Debug.Assert(true);
|
||||
Assert.IsTrue(false);
|
||||
Assert.IsTrue(true);
|
||||
Assert.IsFalse(true);
|
||||
Assert.IsFalse(false);
|
||||
Forwarders.MyAssert(false);
|
||||
Forwarders.MyAssert(true);
|
||||
Forwarders.MyAssert2(false);
|
||||
Forwarders.MyAssert2(true);
|
||||
}
|
||||
}
|
||||
|
||||
// semmle-extractor-options: ${testdir}/../../../resources/stubs/Microsoft.VisualStudio.TestTools.UnitTesting.cs
|
|
@ -0,0 +1,5 @@
|
|||
| Assertions.cs:29:9:29:27 | call to method Assert |
|
||||
| Assertions.cs:31:9:31:28 | call to method IsTrue |
|
||||
| Assertions.cs:33:9:33:28 | call to method IsFalse |
|
||||
| Assertions.cs:35:9:35:34 | call to method MyAssert |
|
||||
| Assertions.cs:37:9:37:35 | call to method MyAssert2 |
|
|
@ -0,0 +1,4 @@
|
|||
import csharp
|
||||
import semmle.code.csharp.commons.Assertions
|
||||
|
||||
select any(FailingAssertion fa)
|
|
@ -164,35 +164,39 @@
|
|||
| Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:109:17:109:23 | ... = ... | 9 |
|
||||
| Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | Conditions.cs:108:18:108:18 | [b (line 102): true] access to parameter b | 3 |
|
||||
| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:102:12:102:13 | exit M8 | 3 |
|
||||
| ExitMethods.cs:6:10:6:11 | enter M1 | ExitMethods.cs:6:10:6:11 | exit M1 | 7 |
|
||||
| ExitMethods.cs:12:10:12:11 | enter M2 | ExitMethods.cs:12:10:12:11 | exit M2 | 7 |
|
||||
| ExitMethods.cs:18:10:18:11 | enter M3 | ExitMethods.cs:18:10:18:11 | exit M3 | 6 |
|
||||
| ExitMethods.cs:24:10:24:11 | enter M4 | ExitMethods.cs:24:10:24:11 | exit M4 | 6 |
|
||||
| ExitMethods.cs:30:10:30:11 | enter M5 | ExitMethods.cs:30:10:30:11 | exit M5 | 6 |
|
||||
| ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | 7 |
|
||||
| ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:36:10:36:11 | exit M6 | 1 |
|
||||
| ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} | 1 |
|
||||
| ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | 1 |
|
||||
| ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:44:13:44:19 | return ...; | 2 |
|
||||
| ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:48:13:48:19 | return ...; | 3 |
|
||||
| ExitMethods.cs:52:17:52:26 | enter ErrorMaybe | ExitMethods.cs:54:13:54:13 | access to parameter b | 4 |
|
||||
| ExitMethods.cs:52:17:52:26 | exit ErrorMaybe | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe | 1 |
|
||||
| ExitMethods.cs:55:19:55:33 | object creation of type Exception | ExitMethods.cs:55:13:55:34 | throw ...; | 2 |
|
||||
| ExitMethods.cs:58:17:58:27 | enter ErrorAlways | ExitMethods.cs:60:13:60:13 | access to parameter b | 4 |
|
||||
| ExitMethods.cs:58:17:58:27 | exit ErrorAlways | ExitMethods.cs:58:17:58:27 | exit ErrorAlways | 1 |
|
||||
| ExitMethods.cs:61:19:61:33 | object creation of type Exception | ExitMethods.cs:61:13:61:34 | throw ...; | 2 |
|
||||
| ExitMethods.cs:63:41:63:43 | "b" | ExitMethods.cs:63:13:63:45 | throw ...; | 3 |
|
||||
| ExitMethods.cs:66:10:66:13 | enter Exit | ExitMethods.cs:66:10:66:13 | exit Exit | 6 |
|
||||
| ExitMethods.cs:71:10:71:24 | enter ApplicationExit | ExitMethods.cs:71:10:71:24 | exit ApplicationExit | 5 |
|
||||
| ExitMethods.cs:76:13:76:21 | enter ThrowExpr | ExitMethods.cs:78:16:78:25 | ... != ... | 7 |
|
||||
| ExitMethods.cs:76:13:76:21 | exit ThrowExpr | ExitMethods.cs:76:13:76:21 | exit ThrowExpr | 1 |
|
||||
| ExitMethods.cs:78:29:78:29 | 1 | ExitMethods.cs:78:9:78:77 | return ...; | 5 |
|
||||
| ExitMethods.cs:78:69:78:75 | "input" | ExitMethods.cs:78:41:78:76 | throw ... | 3 |
|
||||
| ExitMethods.cs:81:16:81:34 | enter ExtensionMethodCall | ExitMethods.cs:83:16:83:30 | call to method Contains | 6 |
|
||||
| ExitMethods.cs:83:9:83:39 | return ...; | ExitMethods.cs:81:16:81:34 | exit ExtensionMethodCall | 2 |
|
||||
| ExitMethods.cs:83:34:83:34 | 0 | ExitMethods.cs:83:34:83:34 | 0 | 1 |
|
||||
| ExitMethods.cs:83:38:83:38 | 1 | ExitMethods.cs:83:38:83:38 | 1 | 1 |
|
||||
| ExitMethods.cs:91:28:91:31 | enter Exit | ExitMethods.cs:91:28:91:31 | exit Exit | 3 |
|
||||
| ExitMethods.cs:7:10:7:11 | enter M1 | ExitMethods.cs:7:10:7:11 | exit M1 | 7 |
|
||||
| ExitMethods.cs:13:10:13:11 | enter M2 | ExitMethods.cs:13:10:13:11 | exit M2 | 7 |
|
||||
| ExitMethods.cs:19:10:19:11 | enter M3 | ExitMethods.cs:19:10:19:11 | exit M3 | 6 |
|
||||
| ExitMethods.cs:25:10:25:11 | enter M4 | ExitMethods.cs:25:10:25:11 | exit M4 | 6 |
|
||||
| ExitMethods.cs:31:10:31:11 | enter M5 | ExitMethods.cs:31:10:31:11 | exit M5 | 6 |
|
||||
| ExitMethods.cs:37:10:37:11 | enter M6 | ExitMethods.cs:41:13:41:30 | call to method ErrorAlways | 7 |
|
||||
| ExitMethods.cs:37:10:37:11 | exit M6 | ExitMethods.cs:37:10:37:11 | exit M6 | 1 |
|
||||
| ExitMethods.cs:43:9:46:9 | [exception: ArgumentException] catch (...) {...} | ExitMethods.cs:43:9:46:9 | [exception: ArgumentException] catch (...) {...} | 1 |
|
||||
| ExitMethods.cs:43:9:46:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:43:9:46:9 | [exception: Exception] catch (...) {...} | 1 |
|
||||
| ExitMethods.cs:44:9:46:9 | {...} | ExitMethods.cs:45:13:45:19 | return ...; | 2 |
|
||||
| ExitMethods.cs:47:9:50:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:49:13:49:19 | return ...; | 3 |
|
||||
| ExitMethods.cs:53:17:53:26 | enter ErrorMaybe | ExitMethods.cs:55:13:55:13 | access to parameter b | 4 |
|
||||
| ExitMethods.cs:53:17:53:26 | exit ErrorMaybe | ExitMethods.cs:53:17:53:26 | exit ErrorMaybe | 1 |
|
||||
| ExitMethods.cs:56:19:56:33 | object creation of type Exception | ExitMethods.cs:56:13:56:34 | throw ...; | 2 |
|
||||
| ExitMethods.cs:59:17:59:27 | enter ErrorAlways | ExitMethods.cs:61:13:61:13 | access to parameter b | 4 |
|
||||
| ExitMethods.cs:59:17:59:27 | exit ErrorAlways | ExitMethods.cs:59:17:59:27 | exit ErrorAlways | 1 |
|
||||
| ExitMethods.cs:62:19:62:33 | object creation of type Exception | ExitMethods.cs:62:13:62:34 | throw ...; | 2 |
|
||||
| ExitMethods.cs:64:41:64:43 | "b" | ExitMethods.cs:64:13:64:45 | throw ...; | 3 |
|
||||
| ExitMethods.cs:67:10:67:13 | enter Exit | ExitMethods.cs:67:10:67:13 | exit Exit | 6 |
|
||||
| ExitMethods.cs:72:10:72:18 | enter ExitInTry | ExitMethods.cs:72:10:72:18 | exit ExitInTry | 8 |
|
||||
| ExitMethods.cs:85:10:85:24 | enter ApplicationExit | ExitMethods.cs:85:10:85:24 | exit ApplicationExit | 5 |
|
||||
| ExitMethods.cs:90:13:90:21 | enter ThrowExpr | ExitMethods.cs:92:16:92:25 | ... != ... | 7 |
|
||||
| ExitMethods.cs:90:13:90:21 | exit ThrowExpr | ExitMethods.cs:90:13:90:21 | exit ThrowExpr | 1 |
|
||||
| ExitMethods.cs:92:29:92:29 | 1 | ExitMethods.cs:92:9:92:77 | return ...; | 5 |
|
||||
| ExitMethods.cs:92:69:92:75 | "input" | ExitMethods.cs:92:41:92:76 | throw ... | 3 |
|
||||
| ExitMethods.cs:95:16:95:34 | enter ExtensionMethodCall | ExitMethods.cs:97:16:97:30 | call to method Contains | 6 |
|
||||
| ExitMethods.cs:97:9:97:39 | return ...; | ExitMethods.cs:95:16:95:34 | exit ExtensionMethodCall | 2 |
|
||||
| ExitMethods.cs:97:34:97:34 | 0 | ExitMethods.cs:97:34:97:34 | 0 | 1 |
|
||||
| ExitMethods.cs:97:38:97:38 | 1 | ExitMethods.cs:97:38:97:38 | 1 | 1 |
|
||||
| ExitMethods.cs:100:17:100:32 | enter FailingAssertion | ExitMethods.cs:100:17:100:32 | exit FailingAssertion | 6 |
|
||||
| ExitMethods.cs:106:17:106:33 | enter FailingAssertion2 | ExitMethods.cs:106:17:106:33 | exit FailingAssertion2 | 6 |
|
||||
| ExitMethods.cs:112:10:112:20 | enter AssertFalse | ExitMethods.cs:112:10:112:20 | exit AssertFalse | 4 |
|
||||
| ExitMethods.cs:114:17:114:33 | enter FailingAssertion3 | ExitMethods.cs:114:17:114:33 | exit FailingAssertion3 | 7 |
|
||||
| Extensions.cs:5:23:5:29 | enter ToInt32 | Extensions.cs:5:23:5:29 | exit ToInt32 | 6 |
|
||||
| Extensions.cs:10:24:10:29 | enter ToBool | Extensions.cs:10:24:10:29 | exit ToBool | 7 |
|
||||
| Extensions.cs:15:23:15:33 | enter CallToInt32 | Extensions.cs:15:23:15:33 | exit CallToInt32 | 4 |
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import csharp
|
||||
import semmle.code.csharp.controlflow.BasicBlocks
|
||||
import Common
|
||||
|
||||
from BasicBlock bb
|
||||
from SourceBasicBlock bb
|
||||
select
|
||||
bb.getFirstNode(),
|
||||
bb.getLastNode(),
|
||||
|
|
|
@ -360,52 +360,56 @@
|
|||
| post | Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... |
|
||||
| post | Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... |
|
||||
| post | Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:110:16:110:16 | access to local variable x |
|
||||
| post | ExitMethods.cs:6:10:6:11 | enter M1 | ExitMethods.cs:6:10:6:11 | enter M1 |
|
||||
| post | ExitMethods.cs:12:10:12:11 | enter M2 | ExitMethods.cs:12:10:12:11 | enter M2 |
|
||||
| post | ExitMethods.cs:18:10:18:11 | enter M3 | ExitMethods.cs:18:10:18:11 | enter M3 |
|
||||
| post | ExitMethods.cs:24:10:24:11 | enter M4 | ExitMethods.cs:24:10:24:11 | enter M4 |
|
||||
| post | ExitMethods.cs:30:10:30:11 | enter M5 | ExitMethods.cs:30:10:30:11 | enter M5 |
|
||||
| post | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:36:10:36:11 | enter M6 |
|
||||
| post | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:36:10:36:11 | enter M6 |
|
||||
| post | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:36:10:36:11 | exit M6 |
|
||||
| post | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} |
|
||||
| post | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:43:9:45:9 | {...} |
|
||||
| post | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} |
|
||||
| post | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} |
|
||||
| post | ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:43:9:45:9 | {...} |
|
||||
| post | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | ExitMethods.cs:52:17:52:26 | enter ErrorMaybe | ExitMethods.cs:52:17:52:26 | enter ErrorMaybe |
|
||||
| post | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe | ExitMethods.cs:52:17:52:26 | enter ErrorMaybe |
|
||||
| post | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe |
|
||||
| post | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe | ExitMethods.cs:55:19:55:33 | object creation of type Exception |
|
||||
| post | ExitMethods.cs:55:19:55:33 | object creation of type Exception | ExitMethods.cs:55:19:55:33 | object creation of type Exception |
|
||||
| post | ExitMethods.cs:58:17:58:27 | enter ErrorAlways | ExitMethods.cs:58:17:58:27 | enter ErrorAlways |
|
||||
| post | ExitMethods.cs:58:17:58:27 | exit ErrorAlways | ExitMethods.cs:58:17:58:27 | enter ErrorAlways |
|
||||
| post | ExitMethods.cs:58:17:58:27 | exit ErrorAlways | ExitMethods.cs:58:17:58:27 | exit ErrorAlways |
|
||||
| post | ExitMethods.cs:58:17:58:27 | exit ErrorAlways | ExitMethods.cs:61:19:61:33 | object creation of type Exception |
|
||||
| post | ExitMethods.cs:58:17:58:27 | exit ErrorAlways | ExitMethods.cs:63:41:63:43 | "b" |
|
||||
| post | ExitMethods.cs:61:19:61:33 | object creation of type Exception | ExitMethods.cs:61:19:61:33 | object creation of type Exception |
|
||||
| post | ExitMethods.cs:63:41:63:43 | "b" | ExitMethods.cs:63:41:63:43 | "b" |
|
||||
| post | ExitMethods.cs:66:10:66:13 | enter Exit | ExitMethods.cs:66:10:66:13 | enter Exit |
|
||||
| post | ExitMethods.cs:71:10:71:24 | enter ApplicationExit | ExitMethods.cs:71:10:71:24 | enter ApplicationExit |
|
||||
| post | ExitMethods.cs:76:13:76:21 | enter ThrowExpr | ExitMethods.cs:76:13:76:21 | enter ThrowExpr |
|
||||
| post | ExitMethods.cs:76:13:76:21 | exit ThrowExpr | ExitMethods.cs:76:13:76:21 | enter ThrowExpr |
|
||||
| post | ExitMethods.cs:76:13:76:21 | exit ThrowExpr | ExitMethods.cs:76:13:76:21 | exit ThrowExpr |
|
||||
| post | ExitMethods.cs:76:13:76:21 | exit ThrowExpr | ExitMethods.cs:78:29:78:29 | 1 |
|
||||
| post | ExitMethods.cs:76:13:76:21 | exit ThrowExpr | ExitMethods.cs:78:69:78:75 | "input" |
|
||||
| post | ExitMethods.cs:78:29:78:29 | 1 | ExitMethods.cs:78:29:78:29 | 1 |
|
||||
| post | ExitMethods.cs:78:69:78:75 | "input" | ExitMethods.cs:78:69:78:75 | "input" |
|
||||
| post | ExitMethods.cs:81:16:81:34 | enter ExtensionMethodCall | ExitMethods.cs:81:16:81:34 | enter ExtensionMethodCall |
|
||||
| post | ExitMethods.cs:83:9:83:39 | return ...; | ExitMethods.cs:81:16:81:34 | enter ExtensionMethodCall |
|
||||
| post | ExitMethods.cs:83:9:83:39 | return ...; | ExitMethods.cs:83:9:83:39 | return ...; |
|
||||
| post | ExitMethods.cs:83:9:83:39 | return ...; | ExitMethods.cs:83:34:83:34 | 0 |
|
||||
| post | ExitMethods.cs:83:9:83:39 | return ...; | ExitMethods.cs:83:38:83:38 | 1 |
|
||||
| post | ExitMethods.cs:83:34:83:34 | 0 | ExitMethods.cs:83:34:83:34 | 0 |
|
||||
| post | ExitMethods.cs:83:38:83:38 | 1 | ExitMethods.cs:83:38:83:38 | 1 |
|
||||
| post | ExitMethods.cs:91:28:91:31 | enter Exit | ExitMethods.cs:91:28:91:31 | enter Exit |
|
||||
| post | ExitMethods.cs:7:10:7:11 | enter M1 | ExitMethods.cs:7:10:7:11 | enter M1 |
|
||||
| post | ExitMethods.cs:13:10:13:11 | enter M2 | ExitMethods.cs:13:10:13:11 | enter M2 |
|
||||
| post | ExitMethods.cs:19:10:19:11 | enter M3 | ExitMethods.cs:19:10:19:11 | enter M3 |
|
||||
| post | ExitMethods.cs:25:10:25:11 | enter M4 | ExitMethods.cs:25:10:25:11 | enter M4 |
|
||||
| post | ExitMethods.cs:31:10:31:11 | enter M5 | ExitMethods.cs:31:10:31:11 | enter M5 |
|
||||
| post | ExitMethods.cs:37:10:37:11 | enter M6 | ExitMethods.cs:37:10:37:11 | enter M6 |
|
||||
| post | ExitMethods.cs:37:10:37:11 | exit M6 | ExitMethods.cs:37:10:37:11 | enter M6 |
|
||||
| post | ExitMethods.cs:37:10:37:11 | exit M6 | ExitMethods.cs:37:10:37:11 | exit M6 |
|
||||
| post | ExitMethods.cs:37:10:37:11 | exit M6 | ExitMethods.cs:43:9:46:9 | [exception: ArgumentException] catch (...) {...} |
|
||||
| post | ExitMethods.cs:37:10:37:11 | exit M6 | ExitMethods.cs:43:9:46:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | ExitMethods.cs:37:10:37:11 | exit M6 | ExitMethods.cs:44:9:46:9 | {...} |
|
||||
| post | ExitMethods.cs:37:10:37:11 | exit M6 | ExitMethods.cs:47:9:50:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | ExitMethods.cs:43:9:46:9 | [exception: ArgumentException] catch (...) {...} | ExitMethods.cs:43:9:46:9 | [exception: ArgumentException] catch (...) {...} |
|
||||
| post | ExitMethods.cs:43:9:46:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:43:9:46:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | ExitMethods.cs:44:9:46:9 | {...} | ExitMethods.cs:43:9:46:9 | [exception: ArgumentException] catch (...) {...} |
|
||||
| post | ExitMethods.cs:44:9:46:9 | {...} | ExitMethods.cs:44:9:46:9 | {...} |
|
||||
| post | ExitMethods.cs:47:9:50:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:47:9:50:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | ExitMethods.cs:53:17:53:26 | enter ErrorMaybe | ExitMethods.cs:53:17:53:26 | enter ErrorMaybe |
|
||||
| post | ExitMethods.cs:53:17:53:26 | exit ErrorMaybe | ExitMethods.cs:53:17:53:26 | enter ErrorMaybe |
|
||||
| post | ExitMethods.cs:53:17:53:26 | exit ErrorMaybe | ExitMethods.cs:53:17:53:26 | exit ErrorMaybe |
|
||||
| post | ExitMethods.cs:53:17:53:26 | exit ErrorMaybe | ExitMethods.cs:56:19:56:33 | object creation of type Exception |
|
||||
| post | ExitMethods.cs:56:19:56:33 | object creation of type Exception | ExitMethods.cs:56:19:56:33 | object creation of type Exception |
|
||||
| post | ExitMethods.cs:59:17:59:27 | enter ErrorAlways | ExitMethods.cs:59:17:59:27 | enter ErrorAlways |
|
||||
| post | ExitMethods.cs:59:17:59:27 | exit ErrorAlways | ExitMethods.cs:59:17:59:27 | enter ErrorAlways |
|
||||
| post | ExitMethods.cs:59:17:59:27 | exit ErrorAlways | ExitMethods.cs:59:17:59:27 | exit ErrorAlways |
|
||||
| post | ExitMethods.cs:59:17:59:27 | exit ErrorAlways | ExitMethods.cs:62:19:62:33 | object creation of type Exception |
|
||||
| post | ExitMethods.cs:59:17:59:27 | exit ErrorAlways | ExitMethods.cs:64:41:64:43 | "b" |
|
||||
| post | ExitMethods.cs:62:19:62:33 | object creation of type Exception | ExitMethods.cs:62:19:62:33 | object creation of type Exception |
|
||||
| post | ExitMethods.cs:64:41:64:43 | "b" | ExitMethods.cs:64:41:64:43 | "b" |
|
||||
| post | ExitMethods.cs:67:10:67:13 | enter Exit | ExitMethods.cs:67:10:67:13 | enter Exit |
|
||||
| post | ExitMethods.cs:72:10:72:18 | enter ExitInTry | ExitMethods.cs:72:10:72:18 | enter ExitInTry |
|
||||
| post | ExitMethods.cs:85:10:85:24 | enter ApplicationExit | ExitMethods.cs:85:10:85:24 | enter ApplicationExit |
|
||||
| post | ExitMethods.cs:90:13:90:21 | enter ThrowExpr | ExitMethods.cs:90:13:90:21 | enter ThrowExpr |
|
||||
| post | ExitMethods.cs:90:13:90:21 | exit ThrowExpr | ExitMethods.cs:90:13:90:21 | enter ThrowExpr |
|
||||
| post | ExitMethods.cs:90:13:90:21 | exit ThrowExpr | ExitMethods.cs:90:13:90:21 | exit ThrowExpr |
|
||||
| post | ExitMethods.cs:90:13:90:21 | exit ThrowExpr | ExitMethods.cs:92:29:92:29 | 1 |
|
||||
| post | ExitMethods.cs:90:13:90:21 | exit ThrowExpr | ExitMethods.cs:92:69:92:75 | "input" |
|
||||
| post | ExitMethods.cs:92:29:92:29 | 1 | ExitMethods.cs:92:29:92:29 | 1 |
|
||||
| post | ExitMethods.cs:92:69:92:75 | "input" | ExitMethods.cs:92:69:92:75 | "input" |
|
||||
| post | ExitMethods.cs:95:16:95:34 | enter ExtensionMethodCall | ExitMethods.cs:95:16:95:34 | enter ExtensionMethodCall |
|
||||
| post | ExitMethods.cs:97:9:97:39 | return ...; | ExitMethods.cs:95:16:95:34 | enter ExtensionMethodCall |
|
||||
| post | ExitMethods.cs:97:9:97:39 | return ...; | ExitMethods.cs:97:9:97:39 | return ...; |
|
||||
| post | ExitMethods.cs:97:9:97:39 | return ...; | ExitMethods.cs:97:34:97:34 | 0 |
|
||||
| post | ExitMethods.cs:97:9:97:39 | return ...; | ExitMethods.cs:97:38:97:38 | 1 |
|
||||
| post | ExitMethods.cs:97:34:97:34 | 0 | ExitMethods.cs:97:34:97:34 | 0 |
|
||||
| post | ExitMethods.cs:97:38:97:38 | 1 | ExitMethods.cs:97:38:97:38 | 1 |
|
||||
| post | ExitMethods.cs:100:17:100:32 | enter FailingAssertion | ExitMethods.cs:100:17:100:32 | enter FailingAssertion |
|
||||
| post | ExitMethods.cs:106:17:106:33 | enter FailingAssertion2 | ExitMethods.cs:106:17:106:33 | enter FailingAssertion2 |
|
||||
| post | ExitMethods.cs:112:10:112:20 | enter AssertFalse | ExitMethods.cs:112:10:112:20 | enter AssertFalse |
|
||||
| post | ExitMethods.cs:114:17:114:33 | enter FailingAssertion3 | ExitMethods.cs:114:17:114:33 | enter FailingAssertion3 |
|
||||
| post | Extensions.cs:5:23:5:29 | enter ToInt32 | Extensions.cs:5:23:5:29 | enter ToInt32 |
|
||||
| post | Extensions.cs:10:24:10:29 | enter ToBool | Extensions.cs:10:24:10:29 | enter ToBool |
|
||||
| post | Extensions.cs:15:23:15:33 | enter CallToInt32 | Extensions.cs:15:23:15:33 | enter CallToInt32 |
|
||||
|
@ -1701,52 +1705,56 @@
|
|||
| pre | Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... |
|
||||
| pre | Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... |
|
||||
| pre | Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:110:16:110:16 | access to local variable x |
|
||||
| pre | ExitMethods.cs:6:10:6:11 | enter M1 | ExitMethods.cs:6:10:6:11 | enter M1 |
|
||||
| pre | ExitMethods.cs:12:10:12:11 | enter M2 | ExitMethods.cs:12:10:12:11 | enter M2 |
|
||||
| pre | ExitMethods.cs:18:10:18:11 | enter M3 | ExitMethods.cs:18:10:18:11 | enter M3 |
|
||||
| pre | ExitMethods.cs:24:10:24:11 | enter M4 | ExitMethods.cs:24:10:24:11 | enter M4 |
|
||||
| pre | ExitMethods.cs:30:10:30:11 | enter M5 | ExitMethods.cs:30:10:30:11 | enter M5 |
|
||||
| pre | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:36:10:36:11 | enter M6 |
|
||||
| pre | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:36:10:36:11 | exit M6 |
|
||||
| pre | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:43:9:45:9 | {...} |
|
||||
| pre | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:36:10:36:11 | exit M6 |
|
||||
| pre | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:43:9:45:9 | {...} |
|
||||
| pre | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:52:17:52:26 | enter ErrorMaybe | ExitMethods.cs:52:17:52:26 | enter ErrorMaybe |
|
||||
| pre | ExitMethods.cs:52:17:52:26 | enter ErrorMaybe | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe |
|
||||
| pre | ExitMethods.cs:52:17:52:26 | enter ErrorMaybe | ExitMethods.cs:55:19:55:33 | object creation of type Exception |
|
||||
| pre | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe |
|
||||
| pre | ExitMethods.cs:55:19:55:33 | object creation of type Exception | ExitMethods.cs:55:19:55:33 | object creation of type Exception |
|
||||
| pre | ExitMethods.cs:58:17:58:27 | enter ErrorAlways | ExitMethods.cs:58:17:58:27 | enter ErrorAlways |
|
||||
| pre | ExitMethods.cs:58:17:58:27 | enter ErrorAlways | ExitMethods.cs:58:17:58:27 | exit ErrorAlways |
|
||||
| pre | ExitMethods.cs:58:17:58:27 | enter ErrorAlways | ExitMethods.cs:61:19:61:33 | object creation of type Exception |
|
||||
| pre | ExitMethods.cs:58:17:58:27 | enter ErrorAlways | ExitMethods.cs:63:41:63:43 | "b" |
|
||||
| pre | ExitMethods.cs:58:17:58:27 | exit ErrorAlways | ExitMethods.cs:58:17:58:27 | exit ErrorAlways |
|
||||
| pre | ExitMethods.cs:61:19:61:33 | object creation of type Exception | ExitMethods.cs:61:19:61:33 | object creation of type Exception |
|
||||
| pre | ExitMethods.cs:63:41:63:43 | "b" | ExitMethods.cs:63:41:63:43 | "b" |
|
||||
| pre | ExitMethods.cs:66:10:66:13 | enter Exit | ExitMethods.cs:66:10:66:13 | enter Exit |
|
||||
| pre | ExitMethods.cs:71:10:71:24 | enter ApplicationExit | ExitMethods.cs:71:10:71:24 | enter ApplicationExit |
|
||||
| pre | ExitMethods.cs:76:13:76:21 | enter ThrowExpr | ExitMethods.cs:76:13:76:21 | enter ThrowExpr |
|
||||
| pre | ExitMethods.cs:76:13:76:21 | enter ThrowExpr | ExitMethods.cs:76:13:76:21 | exit ThrowExpr |
|
||||
| pre | ExitMethods.cs:76:13:76:21 | enter ThrowExpr | ExitMethods.cs:78:29:78:29 | 1 |
|
||||
| pre | ExitMethods.cs:76:13:76:21 | enter ThrowExpr | ExitMethods.cs:78:69:78:75 | "input" |
|
||||
| pre | ExitMethods.cs:76:13:76:21 | exit ThrowExpr | ExitMethods.cs:76:13:76:21 | exit ThrowExpr |
|
||||
| pre | ExitMethods.cs:78:29:78:29 | 1 | ExitMethods.cs:78:29:78:29 | 1 |
|
||||
| pre | ExitMethods.cs:78:69:78:75 | "input" | ExitMethods.cs:78:69:78:75 | "input" |
|
||||
| pre | ExitMethods.cs:81:16:81:34 | enter ExtensionMethodCall | ExitMethods.cs:81:16:81:34 | enter ExtensionMethodCall |
|
||||
| pre | ExitMethods.cs:81:16:81:34 | enter ExtensionMethodCall | ExitMethods.cs:83:9:83:39 | return ...; |
|
||||
| pre | ExitMethods.cs:81:16:81:34 | enter ExtensionMethodCall | ExitMethods.cs:83:34:83:34 | 0 |
|
||||
| pre | ExitMethods.cs:81:16:81:34 | enter ExtensionMethodCall | ExitMethods.cs:83:38:83:38 | 1 |
|
||||
| pre | ExitMethods.cs:83:9:83:39 | return ...; | ExitMethods.cs:83:9:83:39 | return ...; |
|
||||
| pre | ExitMethods.cs:83:34:83:34 | 0 | ExitMethods.cs:83:34:83:34 | 0 |
|
||||
| pre | ExitMethods.cs:83:38:83:38 | 1 | ExitMethods.cs:83:38:83:38 | 1 |
|
||||
| pre | ExitMethods.cs:91:28:91:31 | enter Exit | ExitMethods.cs:91:28:91:31 | enter Exit |
|
||||
| pre | ExitMethods.cs:7:10:7:11 | enter M1 | ExitMethods.cs:7:10:7:11 | enter M1 |
|
||||
| pre | ExitMethods.cs:13:10:13:11 | enter M2 | ExitMethods.cs:13:10:13:11 | enter M2 |
|
||||
| pre | ExitMethods.cs:19:10:19:11 | enter M3 | ExitMethods.cs:19:10:19:11 | enter M3 |
|
||||
| pre | ExitMethods.cs:25:10:25:11 | enter M4 | ExitMethods.cs:25:10:25:11 | enter M4 |
|
||||
| pre | ExitMethods.cs:31:10:31:11 | enter M5 | ExitMethods.cs:31:10:31:11 | enter M5 |
|
||||
| pre | ExitMethods.cs:37:10:37:11 | enter M6 | ExitMethods.cs:37:10:37:11 | enter M6 |
|
||||
| pre | ExitMethods.cs:37:10:37:11 | enter M6 | ExitMethods.cs:37:10:37:11 | exit M6 |
|
||||
| pre | ExitMethods.cs:37:10:37:11 | enter M6 | ExitMethods.cs:43:9:46:9 | [exception: ArgumentException] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:37:10:37:11 | enter M6 | ExitMethods.cs:43:9:46:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:37:10:37:11 | enter M6 | ExitMethods.cs:44:9:46:9 | {...} |
|
||||
| pre | ExitMethods.cs:37:10:37:11 | enter M6 | ExitMethods.cs:47:9:50:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:37:10:37:11 | exit M6 | ExitMethods.cs:37:10:37:11 | exit M6 |
|
||||
| pre | ExitMethods.cs:43:9:46:9 | [exception: ArgumentException] catch (...) {...} | ExitMethods.cs:43:9:46:9 | [exception: ArgumentException] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:43:9:46:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:43:9:46:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:43:9:46:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:47:9:50:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:44:9:46:9 | {...} | ExitMethods.cs:44:9:46:9 | {...} |
|
||||
| pre | ExitMethods.cs:47:9:50:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:47:9:50:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:53:17:53:26 | enter ErrorMaybe | ExitMethods.cs:53:17:53:26 | enter ErrorMaybe |
|
||||
| pre | ExitMethods.cs:53:17:53:26 | enter ErrorMaybe | ExitMethods.cs:53:17:53:26 | exit ErrorMaybe |
|
||||
| pre | ExitMethods.cs:53:17:53:26 | enter ErrorMaybe | ExitMethods.cs:56:19:56:33 | object creation of type Exception |
|
||||
| pre | ExitMethods.cs:53:17:53:26 | exit ErrorMaybe | ExitMethods.cs:53:17:53:26 | exit ErrorMaybe |
|
||||
| pre | ExitMethods.cs:56:19:56:33 | object creation of type Exception | ExitMethods.cs:56:19:56:33 | object creation of type Exception |
|
||||
| pre | ExitMethods.cs:59:17:59:27 | enter ErrorAlways | ExitMethods.cs:59:17:59:27 | enter ErrorAlways |
|
||||
| pre | ExitMethods.cs:59:17:59:27 | enter ErrorAlways | ExitMethods.cs:59:17:59:27 | exit ErrorAlways |
|
||||
| pre | ExitMethods.cs:59:17:59:27 | enter ErrorAlways | ExitMethods.cs:62:19:62:33 | object creation of type Exception |
|
||||
| pre | ExitMethods.cs:59:17:59:27 | enter ErrorAlways | ExitMethods.cs:64:41:64:43 | "b" |
|
||||
| pre | ExitMethods.cs:59:17:59:27 | exit ErrorAlways | ExitMethods.cs:59:17:59:27 | exit ErrorAlways |
|
||||
| pre | ExitMethods.cs:62:19:62:33 | object creation of type Exception | ExitMethods.cs:62:19:62:33 | object creation of type Exception |
|
||||
| pre | ExitMethods.cs:64:41:64:43 | "b" | ExitMethods.cs:64:41:64:43 | "b" |
|
||||
| pre | ExitMethods.cs:67:10:67:13 | enter Exit | ExitMethods.cs:67:10:67:13 | enter Exit |
|
||||
| pre | ExitMethods.cs:72:10:72:18 | enter ExitInTry | ExitMethods.cs:72:10:72:18 | enter ExitInTry |
|
||||
| pre | ExitMethods.cs:85:10:85:24 | enter ApplicationExit | ExitMethods.cs:85:10:85:24 | enter ApplicationExit |
|
||||
| pre | ExitMethods.cs:90:13:90:21 | enter ThrowExpr | ExitMethods.cs:90:13:90:21 | enter ThrowExpr |
|
||||
| pre | ExitMethods.cs:90:13:90:21 | enter ThrowExpr | ExitMethods.cs:90:13:90:21 | exit ThrowExpr |
|
||||
| pre | ExitMethods.cs:90:13:90:21 | enter ThrowExpr | ExitMethods.cs:92:29:92:29 | 1 |
|
||||
| pre | ExitMethods.cs:90:13:90:21 | enter ThrowExpr | ExitMethods.cs:92:69:92:75 | "input" |
|
||||
| pre | ExitMethods.cs:90:13:90:21 | exit ThrowExpr | ExitMethods.cs:90:13:90:21 | exit ThrowExpr |
|
||||
| pre | ExitMethods.cs:92:29:92:29 | 1 | ExitMethods.cs:92:29:92:29 | 1 |
|
||||
| pre | ExitMethods.cs:92:69:92:75 | "input" | ExitMethods.cs:92:69:92:75 | "input" |
|
||||
| pre | ExitMethods.cs:95:16:95:34 | enter ExtensionMethodCall | ExitMethods.cs:95:16:95:34 | enter ExtensionMethodCall |
|
||||
| pre | ExitMethods.cs:95:16:95:34 | enter ExtensionMethodCall | ExitMethods.cs:97:9:97:39 | return ...; |
|
||||
| pre | ExitMethods.cs:95:16:95:34 | enter ExtensionMethodCall | ExitMethods.cs:97:34:97:34 | 0 |
|
||||
| pre | ExitMethods.cs:95:16:95:34 | enter ExtensionMethodCall | ExitMethods.cs:97:38:97:38 | 1 |
|
||||
| pre | ExitMethods.cs:97:9:97:39 | return ...; | ExitMethods.cs:97:9:97:39 | return ...; |
|
||||
| pre | ExitMethods.cs:97:34:97:34 | 0 | ExitMethods.cs:97:34:97:34 | 0 |
|
||||
| pre | ExitMethods.cs:97:38:97:38 | 1 | ExitMethods.cs:97:38:97:38 | 1 |
|
||||
| pre | ExitMethods.cs:100:17:100:32 | enter FailingAssertion | ExitMethods.cs:100:17:100:32 | enter FailingAssertion |
|
||||
| pre | ExitMethods.cs:106:17:106:33 | enter FailingAssertion2 | ExitMethods.cs:106:17:106:33 | enter FailingAssertion2 |
|
||||
| pre | ExitMethods.cs:112:10:112:20 | enter AssertFalse | ExitMethods.cs:112:10:112:20 | enter AssertFalse |
|
||||
| pre | ExitMethods.cs:114:17:114:33 | enter FailingAssertion3 | ExitMethods.cs:114:17:114:33 | enter FailingAssertion3 |
|
||||
| pre | Extensions.cs:5:23:5:29 | enter ToInt32 | Extensions.cs:5:23:5:29 | enter ToInt32 |
|
||||
| pre | Extensions.cs:10:24:10:29 | enter ToBool | Extensions.cs:10:24:10:29 | enter ToBool |
|
||||
| pre | Extensions.cs:15:23:15:33 | enter CallToInt32 | Extensions.cs:15:23:15:33 | enter CallToInt32 |
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import csharp
|
||||
import semmle.code.csharp.controlflow.BasicBlocks
|
||||
import Common
|
||||
|
||||
from BasicBlock dom, BasicBlock bb, string s
|
||||
from SourceBasicBlock dom, SourceBasicBlock bb, string s
|
||||
where
|
||||
dom.dominates(bb) and s = "pre"
|
||||
or
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
import csharp
|
||||
|
||||
class StubFile extends File {
|
||||
StubFile() {
|
||||
this.getAbsolutePath().matches("%resources/stubs/%")
|
||||
}
|
||||
}
|
||||
|
||||
class SourceControlFlowElement extends ControlFlowElement {
|
||||
SourceControlFlowElement() {
|
||||
not this.getLocation().getFile() instanceof StubFile
|
||||
}
|
||||
}
|
||||
|
||||
class SourceControlFlowNode extends ControlFlow::Node {
|
||||
SourceControlFlowNode() {
|
||||
not this.getLocation().getFile() instanceof StubFile
|
||||
}
|
||||
}
|
||||
|
||||
class SourceBasicBlock extends ControlFlow::BasicBlock {
|
||||
SourceBasicBlock() {
|
||||
not this.getLocation().getFile() instanceof StubFile
|
||||
}
|
||||
}
|
|
@ -155,14 +155,14 @@
|
|||
| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | true |
|
||||
| Conditions.cs:107:13:107:24 | [b (line 102): false] ... > ... | Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | true |
|
||||
| Conditions.cs:107:13:107:24 | [b (line 102): true] ... > ... | Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | true |
|
||||
| ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} | false |
|
||||
| ExitMethods.cs:54:13:54:13 | access to parameter b | ExitMethods.cs:55:19:55:33 | object creation of type Exception | true |
|
||||
| ExitMethods.cs:60:13:60:13 | access to parameter b | ExitMethods.cs:61:19:61:33 | object creation of type Exception | true |
|
||||
| ExitMethods.cs:60:13:60:13 | access to parameter b | ExitMethods.cs:63:41:63:43 | "b" | false |
|
||||
| ExitMethods.cs:78:16:78:25 | ... != ... | ExitMethods.cs:78:29:78:29 | 1 | true |
|
||||
| ExitMethods.cs:78:16:78:25 | ... != ... | ExitMethods.cs:78:69:78:75 | "input" | false |
|
||||
| ExitMethods.cs:83:16:83:30 | call to method Contains | ExitMethods.cs:83:34:83:34 | 0 | true |
|
||||
| ExitMethods.cs:83:16:83:30 | call to method Contains | ExitMethods.cs:83:38:83:38 | 1 | false |
|
||||
| ExitMethods.cs:43:9:46:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:47:9:50:9 | [exception: Exception] catch (...) {...} | false |
|
||||
| ExitMethods.cs:55:13:55:13 | access to parameter b | ExitMethods.cs:56:19:56:33 | object creation of type Exception | true |
|
||||
| ExitMethods.cs:61:13:61:13 | access to parameter b | ExitMethods.cs:62:19:62:33 | object creation of type Exception | true |
|
||||
| ExitMethods.cs:61:13:61:13 | access to parameter b | ExitMethods.cs:64:41:64:43 | "b" | false |
|
||||
| ExitMethods.cs:92:16:92:25 | ... != ... | ExitMethods.cs:92:29:92:29 | 1 | true |
|
||||
| ExitMethods.cs:92:16:92:25 | ... != ... | ExitMethods.cs:92:69:92:75 | "input" | false |
|
||||
| ExitMethods.cs:97:16:97:30 | call to method Contains | ExitMethods.cs:97:34:97:34 | 0 | true |
|
||||
| ExitMethods.cs:97:16:97:30 | call to method Contains | ExitMethods.cs:97:38:97:38 | 1 | false |
|
||||
| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:6:10:6:11 | exit M1 | true |
|
||||
| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:22:8:24 | String arg | false |
|
||||
| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:12:10:12:11 | exit M2 | true |
|
||||
|
|
|
@ -116,10 +116,8 @@
|
|||
| 51 | 17 | Conditions.cs:51:17:51:17 | [b (line 46): true] access to parameter b | true | 52 | 17 | Conditions.cs:52:17:52:20 | [b (line 46): true] ...; |
|
||||
| 51 | 17 | Conditions.cs:51:17:51:17 | access to parameter b | false | 49 | 16 | Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x |
|
||||
| 51 | 17 | Conditions.cs:51:17:51:17 | access to parameter b | true | 52 | 17 | Conditions.cs:52:17:52:20 | [b (line 46): true] ...; |
|
||||
| 54 | 13 | ExitMethods.cs:54:13:54:13 | access to parameter b | false | 52 | 17 | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe |
|
||||
| 54 | 13 | ExitMethods.cs:54:13:54:13 | access to parameter b | true | 55 | 19 | ExitMethods.cs:55:19:55:33 | object creation of type Exception |
|
||||
| 60 | 13 | ExitMethods.cs:60:13:60:13 | access to parameter b | false | 63 | 41 | ExitMethods.cs:63:41:63:43 | "b" |
|
||||
| 60 | 13 | ExitMethods.cs:60:13:60:13 | access to parameter b | true | 61 | 19 | ExitMethods.cs:61:19:61:33 | object creation of type Exception |
|
||||
| 55 | 13 | ExitMethods.cs:55:13:55:13 | access to parameter b | false | 53 | 17 | ExitMethods.cs:53:17:53:26 | exit ErrorMaybe |
|
||||
| 55 | 13 | ExitMethods.cs:55:13:55:13 | access to parameter b | true | 56 | 19 | ExitMethods.cs:56:19:56:33 | object creation of type Exception |
|
||||
| 60 | 16 | Conditions.cs:60:16:60:22 | ... > ... | false | 65 | 9 | Conditions.cs:65:9:66:16 | if (...) ... |
|
||||
| 60 | 16 | Conditions.cs:60:16:60:22 | ... > ... | true | 61 | 9 | Conditions.cs:61:9:64:9 | {...} |
|
||||
| 60 | 16 | Conditions.cs:60:16:60:22 | [b (line 57): false] ... > ... | false | 65 | 9 | Conditions.cs:65:9:66:16 | [b (line 57): false] if (...) ... |
|
||||
|
@ -128,6 +126,8 @@
|
|||
| 60 | 16 | Conditions.cs:60:16:60:22 | [b (line 57): true] ... > ... | true | 61 | 9 | Conditions.cs:61:9:64:9 | [b (line 57): true] {...} |
|
||||
| 60 | 17 | BreakInTry.cs:60:17:60:28 | ... == ... | false | 64 | 9 | BreakInTry.cs:64:9:70:9 | {...} |
|
||||
| 60 | 17 | BreakInTry.cs:60:17:60:28 | ... == ... | true | 61 | 17 | BreakInTry.cs:61:17:61:23 | return ...; |
|
||||
| 61 | 13 | ExitMethods.cs:61:13:61:13 | access to parameter b | false | 64 | 41 | ExitMethods.cs:64:41:64:43 | "b" |
|
||||
| 61 | 13 | ExitMethods.cs:61:13:61:13 | access to parameter b | true | 62 | 19 | ExitMethods.cs:62:19:62:33 | object creation of type Exception |
|
||||
| 62 | 17 | Conditions.cs:62:17:62:17 | [b (line 57): false] access to parameter b | false | 60 | 16 | Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x |
|
||||
| 62 | 17 | Conditions.cs:62:17:62:17 | [b (line 57): true] access to parameter b | true | 63 | 17 | Conditions.cs:63:17:63:20 | [b (line 57): true] ...; |
|
||||
| 62 | 17 | Conditions.cs:62:17:62:17 | access to parameter b | false | 60 | 16 | Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x |
|
||||
|
@ -148,14 +148,10 @@
|
|||
| 74 | 13 | cflow.cs:74:13:74:24 | ... > ... | true | 75 | 9 | cflow.cs:75:9:77:9 | {...} |
|
||||
| 76 | 17 | Conditions.cs:76:17:76:17 | access to local variable b | false | 78 | 13 | Conditions.cs:78:13:79:26 | if (...) ... |
|
||||
| 76 | 17 | Conditions.cs:76:17:76:17 | access to local variable b | true | 77 | 17 | Conditions.cs:77:17:77:20 | ...; |
|
||||
| 78 | 16 | ExitMethods.cs:78:16:78:25 | ... != ... | false | 78 | 69 | ExitMethods.cs:78:69:78:75 | "input" |
|
||||
| 78 | 16 | ExitMethods.cs:78:16:78:25 | ... != ... | true | 78 | 29 | ExitMethods.cs:78:29:78:29 | 1 |
|
||||
| 78 | 17 | Conditions.cs:78:17:78:21 | ... > ... | false | 74 | 9 | Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... |
|
||||
| 78 | 17 | Conditions.cs:78:17:78:21 | ... > ... | true | 79 | 17 | Conditions.cs:79:17:79:26 | ...; |
|
||||
| 81 | 12 | Conditions.cs:81:12:81:12 | access to local variable b | false | 83 | 16 | Conditions.cs:83:16:83:16 | access to local variable x |
|
||||
| 81 | 12 | Conditions.cs:81:12:81:12 | access to local variable b | true | 82 | 13 | Conditions.cs:82:13:82:16 | ...; |
|
||||
| 83 | 16 | ExitMethods.cs:83:16:83:30 | call to method Contains | false | 83 | 38 | ExitMethods.cs:83:38:83:38 | 1 |
|
||||
| 83 | 16 | ExitMethods.cs:83:16:83:30 | call to method Contains | true | 83 | 34 | ExitMethods.cs:83:34:83:34 | 0 |
|
||||
| 84 | 19 | Switch.cs:84:19:84:23 | ... > ... | false | 86 | 22 | Switch.cs:86:22:86:25 | true |
|
||||
| 84 | 19 | Switch.cs:84:19:84:23 | ... > ... | true | 85 | 17 | Switch.cs:85:17:85:22 | break; |
|
||||
| 86 | 13 | cflow.cs:86:13:86:21 | ... != ... | false | 84 | 18 | cflow.cs:84:18:84:19 | exit M2 |
|
||||
|
@ -164,6 +160,8 @@
|
|||
| 86 | 26 | cflow.cs:86:26:86:37 | ... > ... | true | 87 | 13 | cflow.cs:87:13:87:33 | ...; |
|
||||
| 92 | 13 | cflow.cs:92:13:92:27 | call to method Equals | false | 94 | 9 | cflow.cs:94:9:94:29 | ...; |
|
||||
| 92 | 13 | cflow.cs:92:13:92:27 | call to method Equals | true | 93 | 45 | cflow.cs:93:45:93:47 | "s" |
|
||||
| 92 | 16 | ExitMethods.cs:92:16:92:25 | ... != ... | false | 92 | 69 | ExitMethods.cs:92:69:92:75 | "input" |
|
||||
| 92 | 16 | ExitMethods.cs:92:16:92:25 | ... != ... | true | 92 | 29 | ExitMethods.cs:92:29:92:29 | 1 |
|
||||
| 92 | 17 | Conditions.cs:92:17:92:17 | access to local variable b | false | 94 | 13 | Conditions.cs:94:13:95:26 | if (...) ... |
|
||||
| 92 | 17 | Conditions.cs:92:17:92:17 | access to local variable b | true | 93 | 17 | Conditions.cs:93:17:93:20 | ...; |
|
||||
| 94 | 17 | Conditions.cs:94:17:94:21 | ... > ... | false | 96 | 13 | Conditions.cs:96:13:97:20 | if (...) ... |
|
||||
|
@ -172,6 +170,8 @@
|
|||
| 96 | 13 | cflow.cs:96:13:96:25 | ... != ... | true | 97 | 13 | cflow.cs:97:13:97:55 | ...; |
|
||||
| 96 | 17 | Conditions.cs:96:17:96:17 | access to local variable b | false | 90 | 9 | Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... |
|
||||
| 96 | 17 | Conditions.cs:96:17:96:17 | access to local variable b | true | 97 | 17 | Conditions.cs:97:17:97:20 | ...; |
|
||||
| 97 | 16 | ExitMethods.cs:97:16:97:30 | call to method Contains | false | 97 | 38 | ExitMethods.cs:97:38:97:38 | 1 |
|
||||
| 97 | 16 | ExitMethods.cs:97:16:97:30 | call to method Contains | true | 97 | 34 | ExitMethods.cs:97:34:97:34 | 0 |
|
||||
| 99 | 13 | cflow.cs:99:13:99:25 | ... != ... | false | 102 | 9 | cflow.cs:102:9:103:36 | if (...) ... |
|
||||
| 99 | 13 | cflow.cs:99:13:99:25 | ... != ... | true | 100 | 13 | cflow.cs:100:13:100:42 | ...; |
|
||||
| 102 | 13 | cflow.cs:102:13:102:29 | ... != ... | false | 90 | 18 | cflow.cs:90:18:90:19 | exit M3 |
|
||||
|
|
|
@ -621,92 +621,116 @@
|
|||
| post | Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:107:13:107:24 | [b (line 102): true] ... > ... |
|
||||
| post | Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:108:18:108:18 | [b (line 102): true] access to parameter b |
|
||||
| post | Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:109:17:109:23 | ... = ... |
|
||||
| post | ExitMethods.cs:6:10:6:11 | exit M1 | ExitMethods.cs:9:9:9:15 | return ...; |
|
||||
| post | ExitMethods.cs:7:5:10:5 | {...} | ExitMethods.cs:6:10:6:11 | enter M1 |
|
||||
| post | ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | ExitMethods.cs:8:20:8:23 | true |
|
||||
| post | ExitMethods.cs:8:9:8:25 | ...; | ExitMethods.cs:7:5:10:5 | {...} |
|
||||
| post | ExitMethods.cs:8:20:8:23 | true | ExitMethods.cs:8:9:8:25 | ...; |
|
||||
| post | ExitMethods.cs:9:9:9:15 | return ...; | ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe |
|
||||
| post | ExitMethods.cs:12:10:12:11 | exit M2 | ExitMethods.cs:15:9:15:15 | return ...; |
|
||||
| post | ExitMethods.cs:13:5:16:5 | {...} | ExitMethods.cs:12:10:12:11 | enter M2 |
|
||||
| post | ExitMethods.cs:14:9:14:25 | call to method ErrorMaybe | ExitMethods.cs:14:20:14:24 | false |
|
||||
| post | ExitMethods.cs:14:9:14:26 | ...; | ExitMethods.cs:13:5:16:5 | {...} |
|
||||
| post | ExitMethods.cs:14:20:14:24 | false | ExitMethods.cs:14:9:14:26 | ...; |
|
||||
| post | ExitMethods.cs:15:9:15:15 | return ...; | ExitMethods.cs:14:9:14:25 | call to method ErrorMaybe |
|
||||
| post | ExitMethods.cs:18:10:18:11 | exit M3 | ExitMethods.cs:20:9:20:25 | call to method ErrorAlways |
|
||||
| post | ExitMethods.cs:19:5:22:5 | {...} | ExitMethods.cs:18:10:18:11 | enter M3 |
|
||||
| post | ExitMethods.cs:20:9:20:25 | call to method ErrorAlways | ExitMethods.cs:20:21:20:24 | true |
|
||||
| post | ExitMethods.cs:20:9:20:26 | ...; | ExitMethods.cs:19:5:22:5 | {...} |
|
||||
| post | ExitMethods.cs:20:21:20:24 | true | ExitMethods.cs:20:9:20:26 | ...; |
|
||||
| post | ExitMethods.cs:24:10:24:11 | exit M4 | ExitMethods.cs:26:9:26:14 | call to method Exit |
|
||||
| post | ExitMethods.cs:25:5:28:5 | {...} | ExitMethods.cs:24:10:24:11 | enter M4 |
|
||||
| post | ExitMethods.cs:26:9:26:14 | call to method Exit | ExitMethods.cs:26:9:26:14 | this access |
|
||||
| post | ExitMethods.cs:26:9:26:14 | this access | ExitMethods.cs:26:9:26:15 | ...; |
|
||||
| post | ExitMethods.cs:26:9:26:15 | ...; | ExitMethods.cs:25:5:28:5 | {...} |
|
||||
| post | ExitMethods.cs:30:10:30:11 | exit M5 | ExitMethods.cs:32:9:32:25 | call to method ApplicationExit |
|
||||
| post | ExitMethods.cs:31:5:34:5 | {...} | ExitMethods.cs:30:10:30:11 | enter M5 |
|
||||
| post | ExitMethods.cs:32:9:32:25 | call to method ApplicationExit | ExitMethods.cs:32:9:32:25 | this access |
|
||||
| post | ExitMethods.cs:32:9:32:25 | this access | ExitMethods.cs:32:9:32:26 | ...; |
|
||||
| post | ExitMethods.cs:32:9:32:26 | ...; | ExitMethods.cs:31:5:34:5 | {...} |
|
||||
| post | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:44:13:44:19 | return ...; |
|
||||
| post | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:48:13:48:19 | return ...; |
|
||||
| post | ExitMethods.cs:37:5:50:5 | {...} | ExitMethods.cs:36:10:36:11 | enter M6 |
|
||||
| post | ExitMethods.cs:38:9:49:9 | try {...} ... | ExitMethods.cs:37:5:50:5 | {...} |
|
||||
| post | ExitMethods.cs:39:9:41:9 | {...} | ExitMethods.cs:38:9:49:9 | try {...} ... |
|
||||
| post | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:40:25:40:29 | false |
|
||||
| post | ExitMethods.cs:40:13:40:31 | ...; | ExitMethods.cs:39:9:41:9 | {...} |
|
||||
| post | ExitMethods.cs:40:25:40:29 | false | ExitMethods.cs:40:13:40:31 | ...; |
|
||||
| post | ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} |
|
||||
| post | ExitMethods.cs:44:13:44:19 | return ...; | ExitMethods.cs:43:9:45:9 | {...} |
|
||||
| post | ExitMethods.cs:47:9:49:9 | {...} | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | ExitMethods.cs:48:13:48:19 | return ...; | ExitMethods.cs:47:9:49:9 | {...} |
|
||||
| post | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe | ExitMethods.cs:54:13:54:13 | access to parameter b |
|
||||
| post | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe | ExitMethods.cs:55:13:55:34 | throw ...; |
|
||||
| post | ExitMethods.cs:53:5:56:5 | {...} | ExitMethods.cs:52:17:52:26 | enter ErrorMaybe |
|
||||
| post | ExitMethods.cs:54:9:55:34 | if (...) ... | ExitMethods.cs:53:5:56:5 | {...} |
|
||||
| post | ExitMethods.cs:54:13:54:13 | access to parameter b | ExitMethods.cs:54:9:55:34 | if (...) ... |
|
||||
| post | ExitMethods.cs:55:13:55:34 | throw ...; | ExitMethods.cs:55:19:55:33 | object creation of type Exception |
|
||||
| post | ExitMethods.cs:58:17:58:27 | exit ErrorAlways | ExitMethods.cs:61:13:61:34 | throw ...; |
|
||||
| post | ExitMethods.cs:58:17:58:27 | exit ErrorAlways | ExitMethods.cs:63:13:63:45 | throw ...; |
|
||||
| post | ExitMethods.cs:59:5:64:5 | {...} | ExitMethods.cs:58:17:58:27 | enter ErrorAlways |
|
||||
| post | ExitMethods.cs:60:9:63:45 | if (...) ... | ExitMethods.cs:59:5:64:5 | {...} |
|
||||
| post | ExitMethods.cs:60:13:60:13 | access to parameter b | ExitMethods.cs:60:9:63:45 | if (...) ... |
|
||||
| post | ExitMethods.cs:61:13:61:34 | throw ...; | ExitMethods.cs:61:19:61:33 | object creation of type Exception |
|
||||
| post | ExitMethods.cs:63:13:63:45 | throw ...; | ExitMethods.cs:63:19:63:44 | object creation of type ArgumentException |
|
||||
| post | ExitMethods.cs:63:19:63:44 | object creation of type ArgumentException | ExitMethods.cs:63:41:63:43 | "b" |
|
||||
| post | ExitMethods.cs:66:10:66:13 | exit Exit | ExitMethods.cs:68:9:68:27 | call to method Exit |
|
||||
| post | ExitMethods.cs:67:5:69:5 | {...} | ExitMethods.cs:66:10:66:13 | enter Exit |
|
||||
| post | ExitMethods.cs:68:9:68:27 | call to method Exit | ExitMethods.cs:68:26:68:26 | 0 |
|
||||
| post | ExitMethods.cs:68:9:68:28 | ...; | ExitMethods.cs:67:5:69:5 | {...} |
|
||||
| post | ExitMethods.cs:68:26:68:26 | 0 | ExitMethods.cs:68:9:68:28 | ...; |
|
||||
| post | ExitMethods.cs:71:10:71:24 | exit ApplicationExit | ExitMethods.cs:73:9:73:47 | call to method Exit |
|
||||
| post | ExitMethods.cs:72:5:74:5 | {...} | ExitMethods.cs:71:10:71:24 | enter ApplicationExit |
|
||||
| post | ExitMethods.cs:73:9:73:47 | call to method Exit | ExitMethods.cs:73:9:73:48 | ...; |
|
||||
| post | ExitMethods.cs:73:9:73:48 | ...; | ExitMethods.cs:72:5:74:5 | {...} |
|
||||
| post | ExitMethods.cs:76:13:76:21 | exit ThrowExpr | ExitMethods.cs:78:9:78:77 | return ...; |
|
||||
| post | ExitMethods.cs:76:13:76:21 | exit ThrowExpr | ExitMethods.cs:78:41:78:76 | throw ... |
|
||||
| post | ExitMethods.cs:77:5:79:5 | {...} | ExitMethods.cs:76:13:76:21 | enter ThrowExpr |
|
||||
| post | ExitMethods.cs:78:9:78:77 | return ...; | ExitMethods.cs:78:29:78:37 | ... / ... |
|
||||
| post | ExitMethods.cs:78:16:78:20 | access to parameter input | ExitMethods.cs:78:16:78:76 | ... ? ... : ... |
|
||||
| post | ExitMethods.cs:78:16:78:25 | ... != ... | ExitMethods.cs:78:25:78:25 | (...) ... |
|
||||
| post | ExitMethods.cs:78:16:78:76 | ... ? ... : ... | ExitMethods.cs:77:5:79:5 | {...} |
|
||||
| post | ExitMethods.cs:78:25:78:25 | 0 | ExitMethods.cs:78:16:78:20 | access to parameter input |
|
||||
| post | ExitMethods.cs:78:25:78:25 | (...) ... | ExitMethods.cs:78:25:78:25 | 0 |
|
||||
| post | ExitMethods.cs:78:29:78:29 | (...) ... | ExitMethods.cs:78:29:78:29 | 1 |
|
||||
| post | ExitMethods.cs:78:29:78:37 | ... / ... | ExitMethods.cs:78:33:78:37 | access to parameter input |
|
||||
| post | ExitMethods.cs:78:33:78:37 | access to parameter input | ExitMethods.cs:78:29:78:29 | (...) ... |
|
||||
| post | ExitMethods.cs:78:41:78:76 | throw ... | ExitMethods.cs:78:47:78:76 | object creation of type ArgumentException |
|
||||
| post | ExitMethods.cs:78:47:78:76 | object creation of type ArgumentException | ExitMethods.cs:78:69:78:75 | "input" |
|
||||
| post | ExitMethods.cs:81:16:81:34 | exit ExtensionMethodCall | ExitMethods.cs:83:9:83:39 | return ...; |
|
||||
| post | ExitMethods.cs:82:5:84:5 | {...} | ExitMethods.cs:81:16:81:34 | enter ExtensionMethodCall |
|
||||
| post | ExitMethods.cs:83:9:83:39 | return ...; | ExitMethods.cs:83:34:83:34 | 0 |
|
||||
| post | ExitMethods.cs:83:9:83:39 | return ...; | ExitMethods.cs:83:38:83:38 | 1 |
|
||||
| post | ExitMethods.cs:83:16:83:16 | access to parameter s | ExitMethods.cs:83:16:83:38 | ... ? ... : ... |
|
||||
| post | ExitMethods.cs:83:16:83:30 | call to method Contains | ExitMethods.cs:83:27:83:29 | - |
|
||||
| post | ExitMethods.cs:83:16:83:38 | ... ? ... : ... | ExitMethods.cs:82:5:84:5 | {...} |
|
||||
| post | ExitMethods.cs:83:27:83:29 | - | ExitMethods.cs:83:16:83:16 | access to parameter s |
|
||||
| post | ExitMethods.cs:91:28:91:31 | exit Exit | ExitMethods.cs:91:35:91:37 | {...} |
|
||||
| post | ExitMethods.cs:91:35:91:37 | {...} | ExitMethods.cs:91:28:91:31 | enter Exit |
|
||||
| post | ExitMethods.cs:7:10:7:11 | exit M1 | ExitMethods.cs:10:9:10:15 | return ...; |
|
||||
| post | ExitMethods.cs:8:5:11:5 | {...} | ExitMethods.cs:7:10:7:11 | enter M1 |
|
||||
| post | ExitMethods.cs:9:9:9:24 | call to method ErrorMaybe | ExitMethods.cs:9:20:9:23 | true |
|
||||
| post | ExitMethods.cs:9:9:9:25 | ...; | ExitMethods.cs:8:5:11:5 | {...} |
|
||||
| post | ExitMethods.cs:9:20:9:23 | true | ExitMethods.cs:9:9:9:25 | ...; |
|
||||
| post | ExitMethods.cs:10:9:10:15 | return ...; | ExitMethods.cs:9:9:9:24 | call to method ErrorMaybe |
|
||||
| post | ExitMethods.cs:13:10:13:11 | exit M2 | ExitMethods.cs:16:9:16:15 | return ...; |
|
||||
| post | ExitMethods.cs:14:5:17:5 | {...} | ExitMethods.cs:13:10:13:11 | enter M2 |
|
||||
| post | ExitMethods.cs:15:9:15:25 | call to method ErrorMaybe | ExitMethods.cs:15:20:15:24 | false |
|
||||
| post | ExitMethods.cs:15:9:15:26 | ...; | ExitMethods.cs:14:5:17:5 | {...} |
|
||||
| post | ExitMethods.cs:15:20:15:24 | false | ExitMethods.cs:15:9:15:26 | ...; |
|
||||
| post | ExitMethods.cs:16:9:16:15 | return ...; | ExitMethods.cs:15:9:15:25 | call to method ErrorMaybe |
|
||||
| post | ExitMethods.cs:19:10:19:11 | exit M3 | ExitMethods.cs:21:9:21:25 | call to method ErrorAlways |
|
||||
| post | ExitMethods.cs:20:5:23:5 | {...} | ExitMethods.cs:19:10:19:11 | enter M3 |
|
||||
| post | ExitMethods.cs:21:9:21:25 | call to method ErrorAlways | ExitMethods.cs:21:21:21:24 | true |
|
||||
| post | ExitMethods.cs:21:9:21:26 | ...; | ExitMethods.cs:20:5:23:5 | {...} |
|
||||
| post | ExitMethods.cs:21:21:21:24 | true | ExitMethods.cs:21:9:21:26 | ...; |
|
||||
| post | ExitMethods.cs:25:10:25:11 | exit M4 | ExitMethods.cs:27:9:27:14 | call to method Exit |
|
||||
| post | ExitMethods.cs:26:5:29:5 | {...} | ExitMethods.cs:25:10:25:11 | enter M4 |
|
||||
| post | ExitMethods.cs:27:9:27:14 | call to method Exit | ExitMethods.cs:27:9:27:14 | this access |
|
||||
| post | ExitMethods.cs:27:9:27:14 | this access | ExitMethods.cs:27:9:27:15 | ...; |
|
||||
| post | ExitMethods.cs:27:9:27:15 | ...; | ExitMethods.cs:26:5:29:5 | {...} |
|
||||
| post | ExitMethods.cs:31:10:31:11 | exit M5 | ExitMethods.cs:33:9:33:25 | call to method ApplicationExit |
|
||||
| post | ExitMethods.cs:32:5:35:5 | {...} | ExitMethods.cs:31:10:31:11 | enter M5 |
|
||||
| post | ExitMethods.cs:33:9:33:25 | call to method ApplicationExit | ExitMethods.cs:33:9:33:25 | this access |
|
||||
| post | ExitMethods.cs:33:9:33:25 | this access | ExitMethods.cs:33:9:33:26 | ...; |
|
||||
| post | ExitMethods.cs:33:9:33:26 | ...; | ExitMethods.cs:32:5:35:5 | {...} |
|
||||
| post | ExitMethods.cs:37:10:37:11 | exit M6 | ExitMethods.cs:45:13:45:19 | return ...; |
|
||||
| post | ExitMethods.cs:37:10:37:11 | exit M6 | ExitMethods.cs:49:13:49:19 | return ...; |
|
||||
| post | ExitMethods.cs:38:5:51:5 | {...} | ExitMethods.cs:37:10:37:11 | enter M6 |
|
||||
| post | ExitMethods.cs:39:9:50:9 | try {...} ... | ExitMethods.cs:38:5:51:5 | {...} |
|
||||
| post | ExitMethods.cs:40:9:42:9 | {...} | ExitMethods.cs:39:9:50:9 | try {...} ... |
|
||||
| post | ExitMethods.cs:41:13:41:30 | call to method ErrorAlways | ExitMethods.cs:41:25:41:29 | false |
|
||||
| post | ExitMethods.cs:41:13:41:31 | ...; | ExitMethods.cs:40:9:42:9 | {...} |
|
||||
| post | ExitMethods.cs:41:25:41:29 | false | ExitMethods.cs:41:13:41:31 | ...; |
|
||||
| post | ExitMethods.cs:44:9:46:9 | {...} | ExitMethods.cs:43:9:46:9 | [exception: ArgumentException] catch (...) {...} |
|
||||
| post | ExitMethods.cs:45:13:45:19 | return ...; | ExitMethods.cs:44:9:46:9 | {...} |
|
||||
| post | ExitMethods.cs:48:9:50:9 | {...} | ExitMethods.cs:47:9:50:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | ExitMethods.cs:49:13:49:19 | return ...; | ExitMethods.cs:48:9:50:9 | {...} |
|
||||
| post | ExitMethods.cs:53:17:53:26 | exit ErrorMaybe | ExitMethods.cs:55:13:55:13 | access to parameter b |
|
||||
| post | ExitMethods.cs:53:17:53:26 | exit ErrorMaybe | ExitMethods.cs:56:13:56:34 | throw ...; |
|
||||
| post | ExitMethods.cs:54:5:57:5 | {...} | ExitMethods.cs:53:17:53:26 | enter ErrorMaybe |
|
||||
| post | ExitMethods.cs:55:9:56:34 | if (...) ... | ExitMethods.cs:54:5:57:5 | {...} |
|
||||
| post | ExitMethods.cs:55:13:55:13 | access to parameter b | ExitMethods.cs:55:9:56:34 | if (...) ... |
|
||||
| post | ExitMethods.cs:56:13:56:34 | throw ...; | ExitMethods.cs:56:19:56:33 | object creation of type Exception |
|
||||
| post | ExitMethods.cs:59:17:59:27 | exit ErrorAlways | ExitMethods.cs:62:13:62:34 | throw ...; |
|
||||
| post | ExitMethods.cs:59:17:59:27 | exit ErrorAlways | ExitMethods.cs:64:13:64:45 | throw ...; |
|
||||
| post | ExitMethods.cs:60:5:65:5 | {...} | ExitMethods.cs:59:17:59:27 | enter ErrorAlways |
|
||||
| post | ExitMethods.cs:61:9:64:45 | if (...) ... | ExitMethods.cs:60:5:65:5 | {...} |
|
||||
| post | ExitMethods.cs:61:13:61:13 | access to parameter b | ExitMethods.cs:61:9:64:45 | if (...) ... |
|
||||
| post | ExitMethods.cs:62:13:62:34 | throw ...; | ExitMethods.cs:62:19:62:33 | object creation of type Exception |
|
||||
| post | ExitMethods.cs:64:13:64:45 | throw ...; | ExitMethods.cs:64:19:64:44 | object creation of type ArgumentException |
|
||||
| post | ExitMethods.cs:64:19:64:44 | object creation of type ArgumentException | ExitMethods.cs:64:41:64:43 | "b" |
|
||||
| post | ExitMethods.cs:67:10:67:13 | exit Exit | ExitMethods.cs:69:9:69:27 | call to method Exit |
|
||||
| post | ExitMethods.cs:68:5:70:5 | {...} | ExitMethods.cs:67:10:67:13 | enter Exit |
|
||||
| post | ExitMethods.cs:69:9:69:27 | call to method Exit | ExitMethods.cs:69:26:69:26 | 0 |
|
||||
| post | ExitMethods.cs:69:9:69:28 | ...; | ExitMethods.cs:68:5:70:5 | {...} |
|
||||
| post | ExitMethods.cs:69:26:69:26 | 0 | ExitMethods.cs:69:9:69:28 | ...; |
|
||||
| post | ExitMethods.cs:72:10:72:18 | exit ExitInTry | ExitMethods.cs:76:13:76:18 | call to method Exit |
|
||||
| post | ExitMethods.cs:73:5:83:5 | {...} | ExitMethods.cs:72:10:72:18 | enter ExitInTry |
|
||||
| post | ExitMethods.cs:74:9:82:9 | try {...} ... | ExitMethods.cs:73:5:83:5 | {...} |
|
||||
| post | ExitMethods.cs:75:9:77:9 | {...} | ExitMethods.cs:74:9:82:9 | try {...} ... |
|
||||
| post | ExitMethods.cs:76:13:76:18 | call to method Exit | ExitMethods.cs:76:13:76:18 | this access |
|
||||
| post | ExitMethods.cs:76:13:76:18 | this access | ExitMethods.cs:76:13:76:19 | ...; |
|
||||
| post | ExitMethods.cs:76:13:76:19 | ...; | ExitMethods.cs:75:9:77:9 | {...} |
|
||||
| post | ExitMethods.cs:85:10:85:24 | exit ApplicationExit | ExitMethods.cs:87:9:87:47 | call to method Exit |
|
||||
| post | ExitMethods.cs:86:5:88:5 | {...} | ExitMethods.cs:85:10:85:24 | enter ApplicationExit |
|
||||
| post | ExitMethods.cs:87:9:87:47 | call to method Exit | ExitMethods.cs:87:9:87:48 | ...; |
|
||||
| post | ExitMethods.cs:87:9:87:48 | ...; | ExitMethods.cs:86:5:88:5 | {...} |
|
||||
| post | ExitMethods.cs:90:13:90:21 | exit ThrowExpr | ExitMethods.cs:92:9:92:77 | return ...; |
|
||||
| post | ExitMethods.cs:90:13:90:21 | exit ThrowExpr | ExitMethods.cs:92:41:92:76 | throw ... |
|
||||
| post | ExitMethods.cs:91:5:93:5 | {...} | ExitMethods.cs:90:13:90:21 | enter ThrowExpr |
|
||||
| post | ExitMethods.cs:92:9:92:77 | return ...; | ExitMethods.cs:92:29:92:37 | ... / ... |
|
||||
| post | ExitMethods.cs:92:16:92:20 | access to parameter input | ExitMethods.cs:92:16:92:76 | ... ? ... : ... |
|
||||
| post | ExitMethods.cs:92:16:92:25 | ... != ... | ExitMethods.cs:92:25:92:25 | (...) ... |
|
||||
| post | ExitMethods.cs:92:16:92:76 | ... ? ... : ... | ExitMethods.cs:91:5:93:5 | {...} |
|
||||
| post | ExitMethods.cs:92:25:92:25 | 0 | ExitMethods.cs:92:16:92:20 | access to parameter input |
|
||||
| post | ExitMethods.cs:92:25:92:25 | (...) ... | ExitMethods.cs:92:25:92:25 | 0 |
|
||||
| post | ExitMethods.cs:92:29:92:29 | (...) ... | ExitMethods.cs:92:29:92:29 | 1 |
|
||||
| post | ExitMethods.cs:92:29:92:37 | ... / ... | ExitMethods.cs:92:33:92:37 | access to parameter input |
|
||||
| post | ExitMethods.cs:92:33:92:37 | access to parameter input | ExitMethods.cs:92:29:92:29 | (...) ... |
|
||||
| post | ExitMethods.cs:92:41:92:76 | throw ... | ExitMethods.cs:92:47:92:76 | object creation of type ArgumentException |
|
||||
| post | ExitMethods.cs:92:47:92:76 | object creation of type ArgumentException | ExitMethods.cs:92:69:92:75 | "input" |
|
||||
| post | ExitMethods.cs:95:16:95:34 | exit ExtensionMethodCall | ExitMethods.cs:97:9:97:39 | return ...; |
|
||||
| post | ExitMethods.cs:96:5:98:5 | {...} | ExitMethods.cs:95:16:95:34 | enter ExtensionMethodCall |
|
||||
| post | ExitMethods.cs:97:9:97:39 | return ...; | ExitMethods.cs:97:34:97:34 | 0 |
|
||||
| post | ExitMethods.cs:97:9:97:39 | return ...; | ExitMethods.cs:97:38:97:38 | 1 |
|
||||
| post | ExitMethods.cs:97:16:97:16 | access to parameter s | ExitMethods.cs:97:16:97:38 | ... ? ... : ... |
|
||||
| post | ExitMethods.cs:97:16:97:30 | call to method Contains | ExitMethods.cs:97:27:97:29 | - |
|
||||
| post | ExitMethods.cs:97:16:97:38 | ... ? ... : ... | ExitMethods.cs:96:5:98:5 | {...} |
|
||||
| post | ExitMethods.cs:97:27:97:29 | - | ExitMethods.cs:97:16:97:16 | access to parameter s |
|
||||
| post | ExitMethods.cs:100:17:100:32 | exit FailingAssertion | ExitMethods.cs:102:9:102:28 | call to method IsTrue |
|
||||
| post | ExitMethods.cs:101:5:104:5 | {...} | ExitMethods.cs:100:17:100:32 | enter FailingAssertion |
|
||||
| post | ExitMethods.cs:102:9:102:28 | call to method IsTrue | ExitMethods.cs:102:23:102:27 | false |
|
||||
| post | ExitMethods.cs:102:9:102:29 | ...; | ExitMethods.cs:101:5:104:5 | {...} |
|
||||
| post | ExitMethods.cs:102:23:102:27 | false | ExitMethods.cs:102:9:102:29 | ...; |
|
||||
| post | ExitMethods.cs:106:17:106:33 | exit FailingAssertion2 | ExitMethods.cs:108:9:108:26 | call to method FailingAssertion |
|
||||
| post | ExitMethods.cs:107:5:110:5 | {...} | ExitMethods.cs:106:17:106:33 | enter FailingAssertion2 |
|
||||
| post | ExitMethods.cs:108:9:108:26 | call to method FailingAssertion | ExitMethods.cs:108:9:108:26 | this access |
|
||||
| post | ExitMethods.cs:108:9:108:26 | this access | ExitMethods.cs:108:9:108:27 | ...; |
|
||||
| post | ExitMethods.cs:108:9:108:27 | ...; | ExitMethods.cs:107:5:110:5 | {...} |
|
||||
| post | ExitMethods.cs:112:10:112:20 | exit AssertFalse | ExitMethods.cs:112:33:112:49 | call to method IsFalse |
|
||||
| post | ExitMethods.cs:112:33:112:49 | call to method IsFalse | ExitMethods.cs:112:48:112:48 | access to parameter b |
|
||||
| post | ExitMethods.cs:112:48:112:48 | access to parameter b | ExitMethods.cs:112:10:112:20 | enter AssertFalse |
|
||||
| post | ExitMethods.cs:114:17:114:33 | exit FailingAssertion3 | ExitMethods.cs:116:9:116:25 | call to method AssertFalse |
|
||||
| post | ExitMethods.cs:115:5:118:5 | {...} | ExitMethods.cs:114:17:114:33 | enter FailingAssertion3 |
|
||||
| post | ExitMethods.cs:116:9:116:25 | call to method AssertFalse | ExitMethods.cs:116:21:116:24 | true |
|
||||
| post | ExitMethods.cs:116:9:116:25 | this access | ExitMethods.cs:116:9:116:26 | ...; |
|
||||
| post | ExitMethods.cs:116:9:116:26 | ...; | ExitMethods.cs:115:5:118:5 | {...} |
|
||||
| post | ExitMethods.cs:116:21:116:24 | true | ExitMethods.cs:116:9:116:25 | this access |
|
||||
| post | Extensions.cs:5:23:5:29 | exit ToInt32 | Extensions.cs:7:9:7:30 | return ...; |
|
||||
| post | Extensions.cs:6:5:8:5 | {...} | Extensions.cs:5:23:5:29 | enter ToInt32 |
|
||||
| post | Extensions.cs:7:9:7:30 | return ...; | Extensions.cs:7:16:7:29 | call to method Parse |
|
||||
|
@ -2724,92 +2748,116 @@
|
|||
| pre | Conditions.cs:109:22:109:23 | "" | Conditions.cs:109:17:109:23 | ... + ... |
|
||||
| pre | Conditions.cs:110:9:110:17 | return ...; | Conditions.cs:102:12:102:13 | exit M8 |
|
||||
| pre | Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:110:9:110:17 | return ...; |
|
||||
| pre | ExitMethods.cs:6:10:6:11 | enter M1 | ExitMethods.cs:7:5:10:5 | {...} |
|
||||
| pre | ExitMethods.cs:7:5:10:5 | {...} | ExitMethods.cs:8:9:8:25 | ...; |
|
||||
| pre | ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | ExitMethods.cs:9:9:9:15 | return ...; |
|
||||
| pre | ExitMethods.cs:8:9:8:25 | ...; | ExitMethods.cs:8:20:8:23 | true |
|
||||
| pre | ExitMethods.cs:8:20:8:23 | true | ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe |
|
||||
| pre | ExitMethods.cs:9:9:9:15 | return ...; | ExitMethods.cs:6:10:6:11 | exit M1 |
|
||||
| pre | ExitMethods.cs:12:10:12:11 | enter M2 | ExitMethods.cs:13:5:16:5 | {...} |
|
||||
| pre | ExitMethods.cs:13:5:16:5 | {...} | ExitMethods.cs:14:9:14:26 | ...; |
|
||||
| pre | ExitMethods.cs:14:9:14:25 | call to method ErrorMaybe | ExitMethods.cs:15:9:15:15 | return ...; |
|
||||
| pre | ExitMethods.cs:14:9:14:26 | ...; | ExitMethods.cs:14:20:14:24 | false |
|
||||
| pre | ExitMethods.cs:14:20:14:24 | false | ExitMethods.cs:14:9:14:25 | call to method ErrorMaybe |
|
||||
| pre | ExitMethods.cs:15:9:15:15 | return ...; | ExitMethods.cs:12:10:12:11 | exit M2 |
|
||||
| pre | ExitMethods.cs:18:10:18:11 | enter M3 | ExitMethods.cs:19:5:22:5 | {...} |
|
||||
| pre | ExitMethods.cs:19:5:22:5 | {...} | ExitMethods.cs:20:9:20:26 | ...; |
|
||||
| pre | ExitMethods.cs:20:9:20:25 | call to method ErrorAlways | ExitMethods.cs:18:10:18:11 | exit M3 |
|
||||
| pre | ExitMethods.cs:20:9:20:26 | ...; | ExitMethods.cs:20:21:20:24 | true |
|
||||
| pre | ExitMethods.cs:20:21:20:24 | true | ExitMethods.cs:20:9:20:25 | call to method ErrorAlways |
|
||||
| pre | ExitMethods.cs:24:10:24:11 | enter M4 | ExitMethods.cs:25:5:28:5 | {...} |
|
||||
| pre | ExitMethods.cs:25:5:28:5 | {...} | ExitMethods.cs:26:9:26:15 | ...; |
|
||||
| pre | ExitMethods.cs:26:9:26:14 | call to method Exit | ExitMethods.cs:24:10:24:11 | exit M4 |
|
||||
| pre | ExitMethods.cs:26:9:26:14 | this access | ExitMethods.cs:26:9:26:14 | call to method Exit |
|
||||
| pre | ExitMethods.cs:26:9:26:15 | ...; | ExitMethods.cs:26:9:26:14 | this access |
|
||||
| pre | ExitMethods.cs:30:10:30:11 | enter M5 | ExitMethods.cs:31:5:34:5 | {...} |
|
||||
| pre | ExitMethods.cs:31:5:34:5 | {...} | ExitMethods.cs:32:9:32:26 | ...; |
|
||||
| pre | ExitMethods.cs:32:9:32:25 | call to method ApplicationExit | ExitMethods.cs:30:10:30:11 | exit M5 |
|
||||
| pre | ExitMethods.cs:32:9:32:25 | this access | ExitMethods.cs:32:9:32:25 | call to method ApplicationExit |
|
||||
| pre | ExitMethods.cs:32:9:32:26 | ...; | ExitMethods.cs:32:9:32:25 | this access |
|
||||
| pre | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:37:5:50:5 | {...} |
|
||||
| pre | ExitMethods.cs:37:5:50:5 | {...} | ExitMethods.cs:38:9:49:9 | try {...} ... |
|
||||
| pre | ExitMethods.cs:38:9:49:9 | try {...} ... | ExitMethods.cs:39:9:41:9 | {...} |
|
||||
| pre | ExitMethods.cs:39:9:41:9 | {...} | ExitMethods.cs:40:13:40:31 | ...; |
|
||||
| pre | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:40:13:40:31 | ...; | ExitMethods.cs:40:25:40:29 | false |
|
||||
| pre | ExitMethods.cs:40:25:40:29 | false | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways |
|
||||
| pre | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:44:13:44:19 | return ...; |
|
||||
| pre | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:47:9:49:9 | {...} |
|
||||
| pre | ExitMethods.cs:47:9:49:9 | {...} | ExitMethods.cs:48:13:48:19 | return ...; |
|
||||
| pre | ExitMethods.cs:52:17:52:26 | enter ErrorMaybe | ExitMethods.cs:53:5:56:5 | {...} |
|
||||
| pre | ExitMethods.cs:53:5:56:5 | {...} | ExitMethods.cs:54:9:55:34 | if (...) ... |
|
||||
| pre | ExitMethods.cs:54:9:55:34 | if (...) ... | ExitMethods.cs:54:13:54:13 | access to parameter b |
|
||||
| pre | ExitMethods.cs:54:13:54:13 | access to parameter b | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe |
|
||||
| pre | ExitMethods.cs:54:13:54:13 | access to parameter b | ExitMethods.cs:55:19:55:33 | object creation of type Exception |
|
||||
| pre | ExitMethods.cs:55:19:55:33 | object creation of type Exception | ExitMethods.cs:55:13:55:34 | throw ...; |
|
||||
| pre | ExitMethods.cs:58:17:58:27 | enter ErrorAlways | ExitMethods.cs:59:5:64:5 | {...} |
|
||||
| pre | ExitMethods.cs:59:5:64:5 | {...} | ExitMethods.cs:60:9:63:45 | if (...) ... |
|
||||
| pre | ExitMethods.cs:60:9:63:45 | if (...) ... | ExitMethods.cs:60:13:60:13 | access to parameter b |
|
||||
| pre | ExitMethods.cs:60:13:60:13 | access to parameter b | ExitMethods.cs:61:19:61:33 | object creation of type Exception |
|
||||
| pre | ExitMethods.cs:60:13:60:13 | access to parameter b | ExitMethods.cs:63:41:63:43 | "b" |
|
||||
| pre | ExitMethods.cs:61:19:61:33 | object creation of type Exception | ExitMethods.cs:61:13:61:34 | throw ...; |
|
||||
| pre | ExitMethods.cs:63:19:63:44 | object creation of type ArgumentException | ExitMethods.cs:63:13:63:45 | throw ...; |
|
||||
| pre | ExitMethods.cs:63:41:63:43 | "b" | ExitMethods.cs:63:19:63:44 | object creation of type ArgumentException |
|
||||
| pre | ExitMethods.cs:66:10:66:13 | enter Exit | ExitMethods.cs:67:5:69:5 | {...} |
|
||||
| pre | ExitMethods.cs:67:5:69:5 | {...} | ExitMethods.cs:68:9:68:28 | ...; |
|
||||
| pre | ExitMethods.cs:68:9:68:27 | call to method Exit | ExitMethods.cs:66:10:66:13 | exit Exit |
|
||||
| pre | ExitMethods.cs:68:9:68:28 | ...; | ExitMethods.cs:68:26:68:26 | 0 |
|
||||
| pre | ExitMethods.cs:68:26:68:26 | 0 | ExitMethods.cs:68:9:68:27 | call to method Exit |
|
||||
| pre | ExitMethods.cs:71:10:71:24 | enter ApplicationExit | ExitMethods.cs:72:5:74:5 | {...} |
|
||||
| pre | ExitMethods.cs:72:5:74:5 | {...} | ExitMethods.cs:73:9:73:48 | ...; |
|
||||
| pre | ExitMethods.cs:73:9:73:47 | call to method Exit | ExitMethods.cs:71:10:71:24 | exit ApplicationExit |
|
||||
| pre | ExitMethods.cs:73:9:73:48 | ...; | ExitMethods.cs:73:9:73:47 | call to method Exit |
|
||||
| pre | ExitMethods.cs:76:13:76:21 | enter ThrowExpr | ExitMethods.cs:77:5:79:5 | {...} |
|
||||
| pre | ExitMethods.cs:77:5:79:5 | {...} | ExitMethods.cs:78:16:78:76 | ... ? ... : ... |
|
||||
| pre | ExitMethods.cs:78:16:78:20 | access to parameter input | ExitMethods.cs:78:25:78:25 | 0 |
|
||||
| pre | ExitMethods.cs:78:16:78:25 | ... != ... | ExitMethods.cs:78:29:78:29 | 1 |
|
||||
| pre | ExitMethods.cs:78:16:78:25 | ... != ... | ExitMethods.cs:78:69:78:75 | "input" |
|
||||
| pre | ExitMethods.cs:78:16:78:76 | ... ? ... : ... | ExitMethods.cs:78:16:78:20 | access to parameter input |
|
||||
| pre | ExitMethods.cs:78:25:78:25 | 0 | ExitMethods.cs:78:25:78:25 | (...) ... |
|
||||
| pre | ExitMethods.cs:78:25:78:25 | (...) ... | ExitMethods.cs:78:16:78:25 | ... != ... |
|
||||
| pre | ExitMethods.cs:78:29:78:29 | 1 | ExitMethods.cs:78:29:78:29 | (...) ... |
|
||||
| pre | ExitMethods.cs:78:29:78:29 | (...) ... | ExitMethods.cs:78:33:78:37 | access to parameter input |
|
||||
| pre | ExitMethods.cs:78:29:78:37 | ... / ... | ExitMethods.cs:78:9:78:77 | return ...; |
|
||||
| pre | ExitMethods.cs:78:33:78:37 | access to parameter input | ExitMethods.cs:78:29:78:37 | ... / ... |
|
||||
| pre | ExitMethods.cs:78:47:78:76 | object creation of type ArgumentException | ExitMethods.cs:78:41:78:76 | throw ... |
|
||||
| pre | ExitMethods.cs:78:69:78:75 | "input" | ExitMethods.cs:78:47:78:76 | object creation of type ArgumentException |
|
||||
| pre | ExitMethods.cs:81:16:81:34 | enter ExtensionMethodCall | ExitMethods.cs:82:5:84:5 | {...} |
|
||||
| pre | ExitMethods.cs:82:5:84:5 | {...} | ExitMethods.cs:83:16:83:38 | ... ? ... : ... |
|
||||
| pre | ExitMethods.cs:83:9:83:39 | return ...; | ExitMethods.cs:81:16:81:34 | exit ExtensionMethodCall |
|
||||
| pre | ExitMethods.cs:83:16:83:16 | access to parameter s | ExitMethods.cs:83:27:83:29 | - |
|
||||
| pre | ExitMethods.cs:83:16:83:30 | call to method Contains | ExitMethods.cs:83:34:83:34 | 0 |
|
||||
| pre | ExitMethods.cs:83:16:83:30 | call to method Contains | ExitMethods.cs:83:38:83:38 | 1 |
|
||||
| pre | ExitMethods.cs:83:16:83:38 | ... ? ... : ... | ExitMethods.cs:83:16:83:16 | access to parameter s |
|
||||
| pre | ExitMethods.cs:83:27:83:29 | - | ExitMethods.cs:83:16:83:30 | call to method Contains |
|
||||
| pre | ExitMethods.cs:91:28:91:31 | enter Exit | ExitMethods.cs:91:35:91:37 | {...} |
|
||||
| pre | ExitMethods.cs:91:35:91:37 | {...} | ExitMethods.cs:91:28:91:31 | exit Exit |
|
||||
| pre | ExitMethods.cs:7:10:7:11 | enter M1 | ExitMethods.cs:8:5:11:5 | {...} |
|
||||
| pre | ExitMethods.cs:8:5:11:5 | {...} | ExitMethods.cs:9:9:9:25 | ...; |
|
||||
| pre | ExitMethods.cs:9:9:9:24 | call to method ErrorMaybe | ExitMethods.cs:10:9:10:15 | return ...; |
|
||||
| pre | ExitMethods.cs:9:9:9:25 | ...; | ExitMethods.cs:9:20:9:23 | true |
|
||||
| pre | ExitMethods.cs:9:20:9:23 | true | ExitMethods.cs:9:9:9:24 | call to method ErrorMaybe |
|
||||
| pre | ExitMethods.cs:10:9:10:15 | return ...; | ExitMethods.cs:7:10:7:11 | exit M1 |
|
||||
| pre | ExitMethods.cs:13:10:13:11 | enter M2 | ExitMethods.cs:14:5:17:5 | {...} |
|
||||
| pre | ExitMethods.cs:14:5:17:5 | {...} | ExitMethods.cs:15:9:15:26 | ...; |
|
||||
| pre | ExitMethods.cs:15:9:15:25 | call to method ErrorMaybe | ExitMethods.cs:16:9:16:15 | return ...; |
|
||||
| pre | ExitMethods.cs:15:9:15:26 | ...; | ExitMethods.cs:15:20:15:24 | false |
|
||||
| pre | ExitMethods.cs:15:20:15:24 | false | ExitMethods.cs:15:9:15:25 | call to method ErrorMaybe |
|
||||
| pre | ExitMethods.cs:16:9:16:15 | return ...; | ExitMethods.cs:13:10:13:11 | exit M2 |
|
||||
| pre | ExitMethods.cs:19:10:19:11 | enter M3 | ExitMethods.cs:20:5:23:5 | {...} |
|
||||
| pre | ExitMethods.cs:20:5:23:5 | {...} | ExitMethods.cs:21:9:21:26 | ...; |
|
||||
| pre | ExitMethods.cs:21:9:21:25 | call to method ErrorAlways | ExitMethods.cs:19:10:19:11 | exit M3 |
|
||||
| pre | ExitMethods.cs:21:9:21:26 | ...; | ExitMethods.cs:21:21:21:24 | true |
|
||||
| pre | ExitMethods.cs:21:21:21:24 | true | ExitMethods.cs:21:9:21:25 | call to method ErrorAlways |
|
||||
| pre | ExitMethods.cs:25:10:25:11 | enter M4 | ExitMethods.cs:26:5:29:5 | {...} |
|
||||
| pre | ExitMethods.cs:26:5:29:5 | {...} | ExitMethods.cs:27:9:27:15 | ...; |
|
||||
| pre | ExitMethods.cs:27:9:27:14 | call to method Exit | ExitMethods.cs:25:10:25:11 | exit M4 |
|
||||
| pre | ExitMethods.cs:27:9:27:14 | this access | ExitMethods.cs:27:9:27:14 | call to method Exit |
|
||||
| pre | ExitMethods.cs:27:9:27:15 | ...; | ExitMethods.cs:27:9:27:14 | this access |
|
||||
| pre | ExitMethods.cs:31:10:31:11 | enter M5 | ExitMethods.cs:32:5:35:5 | {...} |
|
||||
| pre | ExitMethods.cs:32:5:35:5 | {...} | ExitMethods.cs:33:9:33:26 | ...; |
|
||||
| pre | ExitMethods.cs:33:9:33:25 | call to method ApplicationExit | ExitMethods.cs:31:10:31:11 | exit M5 |
|
||||
| pre | ExitMethods.cs:33:9:33:25 | this access | ExitMethods.cs:33:9:33:25 | call to method ApplicationExit |
|
||||
| pre | ExitMethods.cs:33:9:33:26 | ...; | ExitMethods.cs:33:9:33:25 | this access |
|
||||
| pre | ExitMethods.cs:37:10:37:11 | enter M6 | ExitMethods.cs:38:5:51:5 | {...} |
|
||||
| pre | ExitMethods.cs:38:5:51:5 | {...} | ExitMethods.cs:39:9:50:9 | try {...} ... |
|
||||
| pre | ExitMethods.cs:39:9:50:9 | try {...} ... | ExitMethods.cs:40:9:42:9 | {...} |
|
||||
| pre | ExitMethods.cs:40:9:42:9 | {...} | ExitMethods.cs:41:13:41:31 | ...; |
|
||||
| pre | ExitMethods.cs:41:13:41:30 | call to method ErrorAlways | ExitMethods.cs:43:9:46:9 | [exception: ArgumentException] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:41:13:41:30 | call to method ErrorAlways | ExitMethods.cs:43:9:46:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:41:13:41:31 | ...; | ExitMethods.cs:41:25:41:29 | false |
|
||||
| pre | ExitMethods.cs:41:25:41:29 | false | ExitMethods.cs:41:13:41:30 | call to method ErrorAlways |
|
||||
| pre | ExitMethods.cs:43:9:46:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:47:9:50:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:44:9:46:9 | {...} | ExitMethods.cs:45:13:45:19 | return ...; |
|
||||
| pre | ExitMethods.cs:47:9:50:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:48:9:50:9 | {...} |
|
||||
| pre | ExitMethods.cs:48:9:50:9 | {...} | ExitMethods.cs:49:13:49:19 | return ...; |
|
||||
| pre | ExitMethods.cs:53:17:53:26 | enter ErrorMaybe | ExitMethods.cs:54:5:57:5 | {...} |
|
||||
| pre | ExitMethods.cs:54:5:57:5 | {...} | ExitMethods.cs:55:9:56:34 | if (...) ... |
|
||||
| pre | ExitMethods.cs:55:9:56:34 | if (...) ... | ExitMethods.cs:55:13:55:13 | access to parameter b |
|
||||
| pre | ExitMethods.cs:55:13:55:13 | access to parameter b | ExitMethods.cs:53:17:53:26 | exit ErrorMaybe |
|
||||
| pre | ExitMethods.cs:55:13:55:13 | access to parameter b | ExitMethods.cs:56:19:56:33 | object creation of type Exception |
|
||||
| pre | ExitMethods.cs:56:19:56:33 | object creation of type Exception | ExitMethods.cs:56:13:56:34 | throw ...; |
|
||||
| pre | ExitMethods.cs:59:17:59:27 | enter ErrorAlways | ExitMethods.cs:60:5:65:5 | {...} |
|
||||
| pre | ExitMethods.cs:60:5:65:5 | {...} | ExitMethods.cs:61:9:64:45 | if (...) ... |
|
||||
| pre | ExitMethods.cs:61:9:64:45 | if (...) ... | ExitMethods.cs:61:13:61:13 | access to parameter b |
|
||||
| pre | ExitMethods.cs:61:13:61:13 | access to parameter b | ExitMethods.cs:62:19:62:33 | object creation of type Exception |
|
||||
| pre | ExitMethods.cs:61:13:61:13 | access to parameter b | ExitMethods.cs:64:41:64:43 | "b" |
|
||||
| pre | ExitMethods.cs:62:19:62:33 | object creation of type Exception | ExitMethods.cs:62:13:62:34 | throw ...; |
|
||||
| pre | ExitMethods.cs:64:19:64:44 | object creation of type ArgumentException | ExitMethods.cs:64:13:64:45 | throw ...; |
|
||||
| pre | ExitMethods.cs:64:41:64:43 | "b" | ExitMethods.cs:64:19:64:44 | object creation of type ArgumentException |
|
||||
| pre | ExitMethods.cs:67:10:67:13 | enter Exit | ExitMethods.cs:68:5:70:5 | {...} |
|
||||
| pre | ExitMethods.cs:68:5:70:5 | {...} | ExitMethods.cs:69:9:69:28 | ...; |
|
||||
| pre | ExitMethods.cs:69:9:69:27 | call to method Exit | ExitMethods.cs:67:10:67:13 | exit Exit |
|
||||
| pre | ExitMethods.cs:69:9:69:28 | ...; | ExitMethods.cs:69:26:69:26 | 0 |
|
||||
| pre | ExitMethods.cs:69:26:69:26 | 0 | ExitMethods.cs:69:9:69:27 | call to method Exit |
|
||||
| pre | ExitMethods.cs:72:10:72:18 | enter ExitInTry | ExitMethods.cs:73:5:83:5 | {...} |
|
||||
| pre | ExitMethods.cs:73:5:83:5 | {...} | ExitMethods.cs:74:9:82:9 | try {...} ... |
|
||||
| pre | ExitMethods.cs:74:9:82:9 | try {...} ... | ExitMethods.cs:75:9:77:9 | {...} |
|
||||
| pre | ExitMethods.cs:75:9:77:9 | {...} | ExitMethods.cs:76:13:76:19 | ...; |
|
||||
| pre | ExitMethods.cs:76:13:76:18 | call to method Exit | ExitMethods.cs:72:10:72:18 | exit ExitInTry |
|
||||
| pre | ExitMethods.cs:76:13:76:18 | this access | ExitMethods.cs:76:13:76:18 | call to method Exit |
|
||||
| pre | ExitMethods.cs:76:13:76:19 | ...; | ExitMethods.cs:76:13:76:18 | this access |
|
||||
| pre | ExitMethods.cs:85:10:85:24 | enter ApplicationExit | ExitMethods.cs:86:5:88:5 | {...} |
|
||||
| pre | ExitMethods.cs:86:5:88:5 | {...} | ExitMethods.cs:87:9:87:48 | ...; |
|
||||
| pre | ExitMethods.cs:87:9:87:47 | call to method Exit | ExitMethods.cs:85:10:85:24 | exit ApplicationExit |
|
||||
| pre | ExitMethods.cs:87:9:87:48 | ...; | ExitMethods.cs:87:9:87:47 | call to method Exit |
|
||||
| pre | ExitMethods.cs:90:13:90:21 | enter ThrowExpr | ExitMethods.cs:91:5:93:5 | {...} |
|
||||
| pre | ExitMethods.cs:91:5:93:5 | {...} | ExitMethods.cs:92:16:92:76 | ... ? ... : ... |
|
||||
| pre | ExitMethods.cs:92:16:92:20 | access to parameter input | ExitMethods.cs:92:25:92:25 | 0 |
|
||||
| pre | ExitMethods.cs:92:16:92:25 | ... != ... | ExitMethods.cs:92:29:92:29 | 1 |
|
||||
| pre | ExitMethods.cs:92:16:92:25 | ... != ... | ExitMethods.cs:92:69:92:75 | "input" |
|
||||
| pre | ExitMethods.cs:92:16:92:76 | ... ? ... : ... | ExitMethods.cs:92:16:92:20 | access to parameter input |
|
||||
| pre | ExitMethods.cs:92:25:92:25 | 0 | ExitMethods.cs:92:25:92:25 | (...) ... |
|
||||
| pre | ExitMethods.cs:92:25:92:25 | (...) ... | ExitMethods.cs:92:16:92:25 | ... != ... |
|
||||
| pre | ExitMethods.cs:92:29:92:29 | 1 | ExitMethods.cs:92:29:92:29 | (...) ... |
|
||||
| pre | ExitMethods.cs:92:29:92:29 | (...) ... | ExitMethods.cs:92:33:92:37 | access to parameter input |
|
||||
| pre | ExitMethods.cs:92:29:92:37 | ... / ... | ExitMethods.cs:92:9:92:77 | return ...; |
|
||||
| pre | ExitMethods.cs:92:33:92:37 | access to parameter input | ExitMethods.cs:92:29:92:37 | ... / ... |
|
||||
| pre | ExitMethods.cs:92:47:92:76 | object creation of type ArgumentException | ExitMethods.cs:92:41:92:76 | throw ... |
|
||||
| pre | ExitMethods.cs:92:69:92:75 | "input" | ExitMethods.cs:92:47:92:76 | object creation of type ArgumentException |
|
||||
| pre | ExitMethods.cs:95:16:95:34 | enter ExtensionMethodCall | ExitMethods.cs:96:5:98:5 | {...} |
|
||||
| pre | ExitMethods.cs:96:5:98:5 | {...} | ExitMethods.cs:97:16:97:38 | ... ? ... : ... |
|
||||
| pre | ExitMethods.cs:97:9:97:39 | return ...; | ExitMethods.cs:95:16:95:34 | exit ExtensionMethodCall |
|
||||
| pre | ExitMethods.cs:97:16:97:16 | access to parameter s | ExitMethods.cs:97:27:97:29 | - |
|
||||
| pre | ExitMethods.cs:97:16:97:30 | call to method Contains | ExitMethods.cs:97:34:97:34 | 0 |
|
||||
| pre | ExitMethods.cs:97:16:97:30 | call to method Contains | ExitMethods.cs:97:38:97:38 | 1 |
|
||||
| pre | ExitMethods.cs:97:16:97:38 | ... ? ... : ... | ExitMethods.cs:97:16:97:16 | access to parameter s |
|
||||
| pre | ExitMethods.cs:97:27:97:29 | - | ExitMethods.cs:97:16:97:30 | call to method Contains |
|
||||
| pre | ExitMethods.cs:100:17:100:32 | enter FailingAssertion | ExitMethods.cs:101:5:104:5 | {...} |
|
||||
| pre | ExitMethods.cs:101:5:104:5 | {...} | ExitMethods.cs:102:9:102:29 | ...; |
|
||||
| pre | ExitMethods.cs:102:9:102:28 | call to method IsTrue | ExitMethods.cs:100:17:100:32 | exit FailingAssertion |
|
||||
| pre | ExitMethods.cs:102:9:102:29 | ...; | ExitMethods.cs:102:23:102:27 | false |
|
||||
| pre | ExitMethods.cs:102:23:102:27 | false | ExitMethods.cs:102:9:102:28 | call to method IsTrue |
|
||||
| pre | ExitMethods.cs:106:17:106:33 | enter FailingAssertion2 | ExitMethods.cs:107:5:110:5 | {...} |
|
||||
| pre | ExitMethods.cs:107:5:110:5 | {...} | ExitMethods.cs:108:9:108:27 | ...; |
|
||||
| pre | ExitMethods.cs:108:9:108:26 | call to method FailingAssertion | ExitMethods.cs:106:17:106:33 | exit FailingAssertion2 |
|
||||
| pre | ExitMethods.cs:108:9:108:26 | this access | ExitMethods.cs:108:9:108:26 | call to method FailingAssertion |
|
||||
| pre | ExitMethods.cs:108:9:108:27 | ...; | ExitMethods.cs:108:9:108:26 | this access |
|
||||
| pre | ExitMethods.cs:112:10:112:20 | enter AssertFalse | ExitMethods.cs:112:48:112:48 | access to parameter b |
|
||||
| pre | ExitMethods.cs:112:33:112:49 | call to method IsFalse | ExitMethods.cs:112:10:112:20 | exit AssertFalse |
|
||||
| pre | ExitMethods.cs:112:48:112:48 | access to parameter b | ExitMethods.cs:112:33:112:49 | call to method IsFalse |
|
||||
| pre | ExitMethods.cs:114:17:114:33 | enter FailingAssertion3 | ExitMethods.cs:115:5:118:5 | {...} |
|
||||
| pre | ExitMethods.cs:115:5:118:5 | {...} | ExitMethods.cs:116:9:116:26 | ...; |
|
||||
| pre | ExitMethods.cs:116:9:116:25 | call to method AssertFalse | ExitMethods.cs:114:17:114:33 | exit FailingAssertion3 |
|
||||
| pre | ExitMethods.cs:116:9:116:25 | this access | ExitMethods.cs:116:21:116:24 | true |
|
||||
| pre | ExitMethods.cs:116:9:116:26 | ...; | ExitMethods.cs:116:9:116:25 | this access |
|
||||
| pre | ExitMethods.cs:116:21:116:24 | true | ExitMethods.cs:116:9:116:25 | call to method AssertFalse |
|
||||
| pre | Extensions.cs:5:23:5:29 | enter ToInt32 | Extensions.cs:6:5:8:5 | {...} |
|
||||
| pre | Extensions.cs:6:5:8:5 | {...} | Extensions.cs:7:28:7:28 | access to parameter s |
|
||||
| pre | Extensions.cs:7:9:7:30 | return ...; | Extensions.cs:5:23:5:29 | exit ToInt32 |
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import csharp
|
||||
import Common
|
||||
|
||||
from ControlFlow::Node dom, ControlFlow::Node node, string s
|
||||
from SourceControlFlowNode dom, SourceControlFlowNode node, string s
|
||||
where
|
||||
dom.strictlyDominates(node) and dom.getASuccessor() = node and s = "pre"
|
||||
or
|
||||
|
|
|
@ -474,72 +474,88 @@
|
|||
| Conditions.cs:109:17:109:24 | ...; | Conditions.cs:109:17:109:17 | access to local variable x | semmle.label | successor |
|
||||
| Conditions.cs:109:22:109:23 | "" | Conditions.cs:109:17:109:23 | ... + ... | semmle.label | successor |
|
||||
| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:110:9:110:17 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:7:5:10:5 | {...} | ExitMethods.cs:8:9:8:25 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | ExitMethods.cs:9:9:9:15 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:8:9:8:25 | ...; | ExitMethods.cs:8:20:8:23 | true | semmle.label | successor |
|
||||
| ExitMethods.cs:8:20:8:23 | true | ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | semmle.label | successor |
|
||||
| ExitMethods.cs:13:5:16:5 | {...} | ExitMethods.cs:14:9:14:26 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:14:9:14:25 | call to method ErrorMaybe | ExitMethods.cs:15:9:15:15 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:14:9:14:26 | ...; | ExitMethods.cs:14:20:14:24 | false | semmle.label | successor |
|
||||
| ExitMethods.cs:14:20:14:24 | false | ExitMethods.cs:14:9:14:25 | call to method ErrorMaybe | semmle.label | successor |
|
||||
| ExitMethods.cs:19:5:22:5 | {...} | ExitMethods.cs:20:9:20:26 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:20:9:20:26 | ...; | ExitMethods.cs:20:21:20:24 | true | semmle.label | successor |
|
||||
| ExitMethods.cs:20:21:20:24 | true | ExitMethods.cs:20:9:20:25 | call to method ErrorAlways | semmle.label | successor |
|
||||
| ExitMethods.cs:25:5:28:5 | {...} | ExitMethods.cs:26:9:26:15 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:26:9:26:14 | this access | ExitMethods.cs:26:9:26:14 | call to method Exit | semmle.label | successor |
|
||||
| ExitMethods.cs:26:9:26:15 | ...; | ExitMethods.cs:26:9:26:14 | this access | semmle.label | successor |
|
||||
| ExitMethods.cs:31:5:34:5 | {...} | ExitMethods.cs:32:9:32:26 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:32:9:32:25 | this access | ExitMethods.cs:32:9:32:25 | call to method ApplicationExit | semmle.label | successor |
|
||||
| ExitMethods.cs:32:9:32:26 | ...; | ExitMethods.cs:32:9:32:25 | this access | semmle.label | successor |
|
||||
| ExitMethods.cs:37:5:50:5 | {...} | ExitMethods.cs:38:9:49:9 | try {...} ... | semmle.label | successor |
|
||||
| ExitMethods.cs:38:9:49:9 | try {...} ... | ExitMethods.cs:39:9:41:9 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:39:9:41:9 | {...} | ExitMethods.cs:40:13:40:31 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:42:9:45:9 | catch (...) {...} | semmle.label | exception(ArgumentException) |
|
||||
| ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:42:9:45:9 | catch (...) {...} | semmle.label | exception(Exception) |
|
||||
| ExitMethods.cs:40:13:40:31 | ...; | ExitMethods.cs:40:25:40:29 | false | semmle.label | successor |
|
||||
| ExitMethods.cs:40:25:40:29 | false | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | semmle.label | successor |
|
||||
| ExitMethods.cs:42:9:45:9 | catch (...) {...} | ExitMethods.cs:43:9:45:9 | {...} | semmle.label | match |
|
||||
| ExitMethods.cs:42:9:45:9 | catch (...) {...} | ExitMethods.cs:46:9:49:9 | catch (...) {...} | semmle.label | no-match |
|
||||
| ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:44:13:44:19 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:46:9:49:9 | catch (...) {...} | ExitMethods.cs:47:9:49:9 | {...} | semmle.label | match |
|
||||
| ExitMethods.cs:47:9:49:9 | {...} | ExitMethods.cs:48:13:48:19 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:53:5:56:5 | {...} | ExitMethods.cs:54:9:55:34 | if (...) ... | semmle.label | successor |
|
||||
| ExitMethods.cs:54:9:55:34 | if (...) ... | ExitMethods.cs:54:13:54:13 | access to parameter b | semmle.label | successor |
|
||||
| ExitMethods.cs:54:13:54:13 | access to parameter b | ExitMethods.cs:55:19:55:33 | object creation of type Exception | semmle.label | true |
|
||||
| ExitMethods.cs:55:19:55:33 | object creation of type Exception | ExitMethods.cs:55:13:55:34 | throw ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:59:5:64:5 | {...} | ExitMethods.cs:60:9:63:45 | if (...) ... | semmle.label | successor |
|
||||
| ExitMethods.cs:60:9:63:45 | if (...) ... | ExitMethods.cs:60:13:60:13 | access to parameter b | semmle.label | successor |
|
||||
| ExitMethods.cs:60:13:60:13 | access to parameter b | ExitMethods.cs:61:19:61:33 | object creation of type Exception | semmle.label | true |
|
||||
| ExitMethods.cs:60:13:60:13 | access to parameter b | ExitMethods.cs:63:41:63:43 | "b" | semmle.label | false |
|
||||
| ExitMethods.cs:61:19:61:33 | object creation of type Exception | ExitMethods.cs:61:13:61:34 | throw ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:63:19:63:44 | object creation of type ArgumentException | ExitMethods.cs:63:13:63:45 | throw ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:63:41:63:43 | "b" | ExitMethods.cs:63:19:63:44 | object creation of type ArgumentException | semmle.label | successor |
|
||||
| ExitMethods.cs:67:5:69:5 | {...} | ExitMethods.cs:68:9:68:28 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:68:9:68:28 | ...; | ExitMethods.cs:68:26:68:26 | 0 | semmle.label | successor |
|
||||
| ExitMethods.cs:68:26:68:26 | 0 | ExitMethods.cs:68:9:68:27 | call to method Exit | semmle.label | successor |
|
||||
| ExitMethods.cs:72:5:74:5 | {...} | ExitMethods.cs:73:9:73:48 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:73:9:73:48 | ...; | ExitMethods.cs:73:9:73:47 | call to method Exit | semmle.label | successor |
|
||||
| ExitMethods.cs:77:5:79:5 | {...} | ExitMethods.cs:78:16:78:76 | ... ? ... : ... | semmle.label | successor |
|
||||
| ExitMethods.cs:78:16:78:20 | access to parameter input | ExitMethods.cs:78:25:78:25 | 0 | semmle.label | successor |
|
||||
| ExitMethods.cs:78:16:78:25 | ... != ... | ExitMethods.cs:78:29:78:29 | 1 | semmle.label | true |
|
||||
| ExitMethods.cs:78:16:78:25 | ... != ... | ExitMethods.cs:78:69:78:75 | "input" | semmle.label | false |
|
||||
| ExitMethods.cs:78:16:78:76 | ... ? ... : ... | ExitMethods.cs:78:16:78:20 | access to parameter input | semmle.label | successor |
|
||||
| ExitMethods.cs:78:25:78:25 | 0 | ExitMethods.cs:78:25:78:25 | (...) ... | semmle.label | successor |
|
||||
| ExitMethods.cs:78:25:78:25 | (...) ... | ExitMethods.cs:78:16:78:25 | ... != ... | semmle.label | successor |
|
||||
| ExitMethods.cs:78:29:78:29 | 1 | ExitMethods.cs:78:29:78:29 | (...) ... | semmle.label | successor |
|
||||
| ExitMethods.cs:78:29:78:29 | (...) ... | ExitMethods.cs:78:33:78:37 | access to parameter input | semmle.label | successor |
|
||||
| ExitMethods.cs:78:29:78:37 | ... / ... | ExitMethods.cs:78:9:78:77 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:78:33:78:37 | access to parameter input | ExitMethods.cs:78:29:78:37 | ... / ... | semmle.label | successor |
|
||||
| ExitMethods.cs:78:47:78:76 | object creation of type ArgumentException | ExitMethods.cs:78:41:78:76 | throw ... | semmle.label | successor |
|
||||
| ExitMethods.cs:78:69:78:75 | "input" | ExitMethods.cs:78:47:78:76 | object creation of type ArgumentException | semmle.label | successor |
|
||||
| ExitMethods.cs:82:5:84:5 | {...} | ExitMethods.cs:83:16:83:38 | ... ? ... : ... | semmle.label | successor |
|
||||
| ExitMethods.cs:83:16:83:16 | access to parameter s | ExitMethods.cs:83:27:83:29 | - | semmle.label | successor |
|
||||
| ExitMethods.cs:83:16:83:30 | call to method Contains | ExitMethods.cs:83:34:83:34 | 0 | semmle.label | true |
|
||||
| ExitMethods.cs:83:16:83:30 | call to method Contains | ExitMethods.cs:83:38:83:38 | 1 | semmle.label | false |
|
||||
| ExitMethods.cs:83:16:83:38 | ... ? ... : ... | ExitMethods.cs:83:16:83:16 | access to parameter s | semmle.label | successor |
|
||||
| ExitMethods.cs:83:27:83:29 | - | ExitMethods.cs:83:16:83:30 | call to method Contains | semmle.label | successor |
|
||||
| ExitMethods.cs:83:34:83:34 | 0 | ExitMethods.cs:83:9:83:39 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:83:38:83:38 | 1 | ExitMethods.cs:83:9:83:39 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:8:5:11:5 | {...} | ExitMethods.cs:9:9:9:25 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:9:9:9:24 | call to method ErrorMaybe | ExitMethods.cs:10:9:10:15 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:9:9:9:25 | ...; | ExitMethods.cs:9:20:9:23 | true | semmle.label | successor |
|
||||
| ExitMethods.cs:9:20:9:23 | true | ExitMethods.cs:9:9:9:24 | call to method ErrorMaybe | semmle.label | successor |
|
||||
| ExitMethods.cs:14:5:17:5 | {...} | ExitMethods.cs:15:9:15:26 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:15:9:15:25 | call to method ErrorMaybe | ExitMethods.cs:16:9:16:15 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:15:9:15:26 | ...; | ExitMethods.cs:15:20:15:24 | false | semmle.label | successor |
|
||||
| ExitMethods.cs:15:20:15:24 | false | ExitMethods.cs:15:9:15:25 | call to method ErrorMaybe | semmle.label | successor |
|
||||
| ExitMethods.cs:20:5:23:5 | {...} | ExitMethods.cs:21:9:21:26 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:21:9:21:26 | ...; | ExitMethods.cs:21:21:21:24 | true | semmle.label | successor |
|
||||
| ExitMethods.cs:21:21:21:24 | true | ExitMethods.cs:21:9:21:25 | call to method ErrorAlways | semmle.label | successor |
|
||||
| ExitMethods.cs:26:5:29:5 | {...} | ExitMethods.cs:27:9:27:15 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:27:9:27:14 | this access | ExitMethods.cs:27:9:27:14 | call to method Exit | semmle.label | successor |
|
||||
| ExitMethods.cs:27:9:27:15 | ...; | ExitMethods.cs:27:9:27:14 | this access | semmle.label | successor |
|
||||
| ExitMethods.cs:32:5:35:5 | {...} | ExitMethods.cs:33:9:33:26 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:33:9:33:25 | this access | ExitMethods.cs:33:9:33:25 | call to method ApplicationExit | semmle.label | successor |
|
||||
| ExitMethods.cs:33:9:33:26 | ...; | ExitMethods.cs:33:9:33:25 | this access | semmle.label | successor |
|
||||
| ExitMethods.cs:38:5:51:5 | {...} | ExitMethods.cs:39:9:50:9 | try {...} ... | semmle.label | successor |
|
||||
| ExitMethods.cs:39:9:50:9 | try {...} ... | ExitMethods.cs:40:9:42:9 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:40:9:42:9 | {...} | ExitMethods.cs:41:13:41:31 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:41:13:41:30 | call to method ErrorAlways | ExitMethods.cs:43:9:46:9 | catch (...) {...} | semmle.label | exception(ArgumentException) |
|
||||
| ExitMethods.cs:41:13:41:30 | call to method ErrorAlways | ExitMethods.cs:43:9:46:9 | catch (...) {...} | semmle.label | exception(Exception) |
|
||||
| ExitMethods.cs:41:13:41:31 | ...; | ExitMethods.cs:41:25:41:29 | false | semmle.label | successor |
|
||||
| ExitMethods.cs:41:25:41:29 | false | ExitMethods.cs:41:13:41:30 | call to method ErrorAlways | semmle.label | successor |
|
||||
| ExitMethods.cs:43:9:46:9 | catch (...) {...} | ExitMethods.cs:44:9:46:9 | {...} | semmle.label | match |
|
||||
| ExitMethods.cs:43:9:46:9 | catch (...) {...} | ExitMethods.cs:47:9:50:9 | catch (...) {...} | semmle.label | no-match |
|
||||
| ExitMethods.cs:44:9:46:9 | {...} | ExitMethods.cs:45:13:45:19 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:47:9:50:9 | catch (...) {...} | ExitMethods.cs:48:9:50:9 | {...} | semmle.label | match |
|
||||
| ExitMethods.cs:48:9:50:9 | {...} | ExitMethods.cs:49:13:49:19 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:54:5:57:5 | {...} | ExitMethods.cs:55:9:56:34 | if (...) ... | semmle.label | successor |
|
||||
| ExitMethods.cs:55:9:56:34 | if (...) ... | ExitMethods.cs:55:13:55:13 | access to parameter b | semmle.label | successor |
|
||||
| ExitMethods.cs:55:13:55:13 | access to parameter b | ExitMethods.cs:56:19:56:33 | object creation of type Exception | semmle.label | true |
|
||||
| ExitMethods.cs:56:19:56:33 | object creation of type Exception | ExitMethods.cs:56:13:56:34 | throw ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:60:5:65:5 | {...} | ExitMethods.cs:61:9:64:45 | if (...) ... | semmle.label | successor |
|
||||
| ExitMethods.cs:61:9:64:45 | if (...) ... | ExitMethods.cs:61:13:61:13 | access to parameter b | semmle.label | successor |
|
||||
| ExitMethods.cs:61:13:61:13 | access to parameter b | ExitMethods.cs:62:19:62:33 | object creation of type Exception | semmle.label | true |
|
||||
| ExitMethods.cs:61:13:61:13 | access to parameter b | ExitMethods.cs:64:41:64:43 | "b" | semmle.label | false |
|
||||
| ExitMethods.cs:62:19:62:33 | object creation of type Exception | ExitMethods.cs:62:13:62:34 | throw ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:64:19:64:44 | object creation of type ArgumentException | ExitMethods.cs:64:13:64:45 | throw ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:64:41:64:43 | "b" | ExitMethods.cs:64:19:64:44 | object creation of type ArgumentException | semmle.label | successor |
|
||||
| ExitMethods.cs:68:5:70:5 | {...} | ExitMethods.cs:69:9:69:28 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:69:9:69:28 | ...; | ExitMethods.cs:69:26:69:26 | 0 | semmle.label | successor |
|
||||
| ExitMethods.cs:69:26:69:26 | 0 | ExitMethods.cs:69:9:69:27 | call to method Exit | semmle.label | successor |
|
||||
| ExitMethods.cs:73:5:83:5 | {...} | ExitMethods.cs:74:9:82:9 | try {...} ... | semmle.label | successor |
|
||||
| ExitMethods.cs:74:9:82:9 | try {...} ... | ExitMethods.cs:75:9:77:9 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:75:9:77:9 | {...} | ExitMethods.cs:76:13:76:19 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:76:13:76:18 | this access | ExitMethods.cs:76:13:76:18 | call to method Exit | semmle.label | successor |
|
||||
| ExitMethods.cs:76:13:76:19 | ...; | ExitMethods.cs:76:13:76:18 | this access | semmle.label | successor |
|
||||
| ExitMethods.cs:86:5:88:5 | {...} | ExitMethods.cs:87:9:87:48 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:87:9:87:48 | ...; | ExitMethods.cs:87:9:87:47 | call to method Exit | semmle.label | successor |
|
||||
| ExitMethods.cs:91:5:93:5 | {...} | ExitMethods.cs:92:16:92:76 | ... ? ... : ... | semmle.label | successor |
|
||||
| ExitMethods.cs:92:16:92:20 | access to parameter input | ExitMethods.cs:92:25:92:25 | 0 | semmle.label | successor |
|
||||
| ExitMethods.cs:92:16:92:25 | ... != ... | ExitMethods.cs:92:29:92:29 | 1 | semmle.label | true |
|
||||
| ExitMethods.cs:92:16:92:25 | ... != ... | ExitMethods.cs:92:69:92:75 | "input" | semmle.label | false |
|
||||
| ExitMethods.cs:92:16:92:76 | ... ? ... : ... | ExitMethods.cs:92:16:92:20 | access to parameter input | semmle.label | successor |
|
||||
| ExitMethods.cs:92:25:92:25 | 0 | ExitMethods.cs:92:25:92:25 | (...) ... | semmle.label | successor |
|
||||
| ExitMethods.cs:92:25:92:25 | (...) ... | ExitMethods.cs:92:16:92:25 | ... != ... | semmle.label | successor |
|
||||
| ExitMethods.cs:92:29:92:29 | 1 | ExitMethods.cs:92:29:92:29 | (...) ... | semmle.label | successor |
|
||||
| ExitMethods.cs:92:29:92:29 | (...) ... | ExitMethods.cs:92:33:92:37 | access to parameter input | semmle.label | successor |
|
||||
| ExitMethods.cs:92:29:92:37 | ... / ... | ExitMethods.cs:92:9:92:77 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:92:33:92:37 | access to parameter input | ExitMethods.cs:92:29:92:37 | ... / ... | semmle.label | successor |
|
||||
| ExitMethods.cs:92:47:92:76 | object creation of type ArgumentException | ExitMethods.cs:92:41:92:76 | throw ... | semmle.label | successor |
|
||||
| ExitMethods.cs:92:69:92:75 | "input" | ExitMethods.cs:92:47:92:76 | object creation of type ArgumentException | semmle.label | successor |
|
||||
| ExitMethods.cs:96:5:98:5 | {...} | ExitMethods.cs:97:16:97:38 | ... ? ... : ... | semmle.label | successor |
|
||||
| ExitMethods.cs:97:16:97:16 | access to parameter s | ExitMethods.cs:97:27:97:29 | - | semmle.label | successor |
|
||||
| ExitMethods.cs:97:16:97:30 | call to method Contains | ExitMethods.cs:97:34:97:34 | 0 | semmle.label | true |
|
||||
| ExitMethods.cs:97:16:97:30 | call to method Contains | ExitMethods.cs:97:38:97:38 | 1 | semmle.label | false |
|
||||
| ExitMethods.cs:97:16:97:38 | ... ? ... : ... | ExitMethods.cs:97:16:97:16 | access to parameter s | semmle.label | successor |
|
||||
| ExitMethods.cs:97:27:97:29 | - | ExitMethods.cs:97:16:97:30 | call to method Contains | semmle.label | successor |
|
||||
| ExitMethods.cs:97:34:97:34 | 0 | ExitMethods.cs:97:9:97:39 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:97:38:97:38 | 1 | ExitMethods.cs:97:9:97:39 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:101:5:104:5 | {...} | ExitMethods.cs:102:9:102:29 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:102:9:102:29 | ...; | ExitMethods.cs:102:23:102:27 | false | semmle.label | successor |
|
||||
| ExitMethods.cs:102:23:102:27 | false | ExitMethods.cs:102:9:102:28 | call to method IsTrue | semmle.label | successor |
|
||||
| ExitMethods.cs:107:5:110:5 | {...} | ExitMethods.cs:108:9:108:27 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:108:9:108:26 | this access | ExitMethods.cs:108:9:108:26 | call to method FailingAssertion | semmle.label | successor |
|
||||
| ExitMethods.cs:108:9:108:27 | ...; | ExitMethods.cs:108:9:108:26 | this access | semmle.label | successor |
|
||||
| ExitMethods.cs:112:48:112:48 | access to parameter b | ExitMethods.cs:112:33:112:49 | call to method IsFalse | semmle.label | successor |
|
||||
| ExitMethods.cs:115:5:118:5 | {...} | ExitMethods.cs:116:9:116:26 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:116:9:116:25 | this access | ExitMethods.cs:116:21:116:24 | true | semmle.label | successor |
|
||||
| ExitMethods.cs:116:9:116:26 | ...; | ExitMethods.cs:116:9:116:25 | this access | semmle.label | successor |
|
||||
| ExitMethods.cs:116:21:116:24 | true | ExitMethods.cs:116:9:116:25 | call to method AssertFalse | semmle.label | successor |
|
||||
| Extensions.cs:6:5:8:5 | {...} | Extensions.cs:7:28:7:28 | access to parameter s | semmle.label | successor |
|
||||
| Extensions.cs:7:16:7:29 | call to method Parse | Extensions.cs:7:9:7:30 | return ...; | semmle.label | successor |
|
||||
| Extensions.cs:7:28:7:28 | access to parameter s | Extensions.cs:7:16:7:29 | call to method Parse | semmle.label | successor |
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import csharp
|
||||
import Common
|
||||
|
||||
query predicate edges(ControlFlowElement node, ControlFlowElement successor, string attr, string val) {
|
||||
query predicate edges(SourceControlFlowElement node, SourceControlFlowElement successor, string attr, string val) {
|
||||
exists(ControlFlow::SuccessorType t |
|
||||
successor = node.getAControlFlowNode().getASuccessorByType(t).getElement() |
|
||||
attr = "semmle.label" and
|
||||
|
|
|
@ -478,86 +478,122 @@
|
|||
| Conditions.cs:109:22:109:23 | "" | Conditions.cs:109:22:109:23 | "" |
|
||||
| Conditions.cs:110:9:110:17 | return ...; | Conditions.cs:110:16:110:16 | access to local variable x |
|
||||
| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:110:16:110:16 | access to local variable x |
|
||||
| ExitMethods.cs:7:5:10:5 | {...} | ExitMethods.cs:7:5:10:5 | {...} |
|
||||
| ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | ExitMethods.cs:8:20:8:23 | true |
|
||||
| ExitMethods.cs:8:9:8:25 | ...; | ExitMethods.cs:8:9:8:25 | ...; |
|
||||
| ExitMethods.cs:8:20:8:23 | true | ExitMethods.cs:8:20:8:23 | true |
|
||||
| ExitMethods.cs:9:9:9:15 | return ...; | ExitMethods.cs:9:9:9:15 | return ...; |
|
||||
| ExitMethods.cs:13:5:16:5 | {...} | ExitMethods.cs:13:5:16:5 | {...} |
|
||||
| ExitMethods.cs:14:9:14:25 | call to method ErrorMaybe | ExitMethods.cs:14:20:14:24 | false |
|
||||
| ExitMethods.cs:14:9:14:26 | ...; | ExitMethods.cs:14:9:14:26 | ...; |
|
||||
| ExitMethods.cs:14:20:14:24 | false | ExitMethods.cs:14:20:14:24 | false |
|
||||
| ExitMethods.cs:15:9:15:15 | return ...; | ExitMethods.cs:15:9:15:15 | return ...; |
|
||||
| ExitMethods.cs:19:5:22:5 | {...} | ExitMethods.cs:19:5:22:5 | {...} |
|
||||
| ExitMethods.cs:20:9:20:25 | call to method ErrorAlways | ExitMethods.cs:20:21:20:24 | true |
|
||||
| ExitMethods.cs:20:9:20:26 | ...; | ExitMethods.cs:20:9:20:26 | ...; |
|
||||
| ExitMethods.cs:20:21:20:24 | true | ExitMethods.cs:20:21:20:24 | true |
|
||||
| ExitMethods.cs:21:9:21:15 | return ...; | ExitMethods.cs:21:9:21:15 | return ...; |
|
||||
| ExitMethods.cs:25:5:28:5 | {...} | ExitMethods.cs:25:5:28:5 | {...} |
|
||||
| ExitMethods.cs:26:9:26:14 | call to method Exit | ExitMethods.cs:26:9:26:14 | this access |
|
||||
| ExitMethods.cs:26:9:26:14 | this access | ExitMethods.cs:26:9:26:14 | this access |
|
||||
| ExitMethods.cs:26:9:26:15 | ...; | ExitMethods.cs:26:9:26:15 | ...; |
|
||||
| ExitMethods.cs:27:9:27:15 | return ...; | ExitMethods.cs:27:9:27:15 | return ...; |
|
||||
| ExitMethods.cs:31:5:34:5 | {...} | ExitMethods.cs:31:5:34:5 | {...} |
|
||||
| ExitMethods.cs:32:9:32:25 | call to method ApplicationExit | ExitMethods.cs:32:9:32:25 | this access |
|
||||
| ExitMethods.cs:32:9:32:25 | this access | ExitMethods.cs:32:9:32:25 | this access |
|
||||
| ExitMethods.cs:32:9:32:26 | ...; | ExitMethods.cs:32:9:32:26 | ...; |
|
||||
| ExitMethods.cs:33:9:33:15 | return ...; | ExitMethods.cs:33:9:33:15 | return ...; |
|
||||
| ExitMethods.cs:37:5:50:5 | {...} | ExitMethods.cs:37:5:50:5 | {...} |
|
||||
| ExitMethods.cs:38:9:49:9 | try {...} ... | ExitMethods.cs:38:9:49:9 | try {...} ... |
|
||||
| ExitMethods.cs:39:9:41:9 | {...} | ExitMethods.cs:39:9:41:9 | {...} |
|
||||
| ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:40:25:40:29 | false |
|
||||
| ExitMethods.cs:40:13:40:31 | ...; | ExitMethods.cs:40:13:40:31 | ...; |
|
||||
| ExitMethods.cs:40:25:40:29 | false | ExitMethods.cs:40:25:40:29 | false |
|
||||
| ExitMethods.cs:42:9:45:9 | catch (...) {...} | ExitMethods.cs:42:9:45:9 | catch (...) {...} |
|
||||
| ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:43:9:45:9 | {...} |
|
||||
| ExitMethods.cs:44:13:44:19 | return ...; | ExitMethods.cs:44:13:44:19 | return ...; |
|
||||
| ExitMethods.cs:46:9:49:9 | catch (...) {...} | ExitMethods.cs:46:9:49:9 | catch (...) {...} |
|
||||
| ExitMethods.cs:47:9:49:9 | {...} | ExitMethods.cs:47:9:49:9 | {...} |
|
||||
| ExitMethods.cs:48:13:48:19 | return ...; | ExitMethods.cs:48:13:48:19 | return ...; |
|
||||
| ExitMethods.cs:53:5:56:5 | {...} | ExitMethods.cs:53:5:56:5 | {...} |
|
||||
| ExitMethods.cs:54:9:55:34 | if (...) ... | ExitMethods.cs:54:9:55:34 | if (...) ... |
|
||||
| ExitMethods.cs:54:13:54:13 | access to parameter b | ExitMethods.cs:54:13:54:13 | access to parameter b |
|
||||
| ExitMethods.cs:55:13:55:34 | throw ...; | ExitMethods.cs:55:19:55:33 | object creation of type Exception |
|
||||
| ExitMethods.cs:55:19:55:33 | object creation of type Exception | ExitMethods.cs:55:19:55:33 | object creation of type Exception |
|
||||
| ExitMethods.cs:59:5:64:5 | {...} | ExitMethods.cs:59:5:64:5 | {...} |
|
||||
| ExitMethods.cs:60:9:63:45 | if (...) ... | ExitMethods.cs:60:9:63:45 | if (...) ... |
|
||||
| ExitMethods.cs:60:13:60:13 | access to parameter b | ExitMethods.cs:60:13:60:13 | access to parameter b |
|
||||
| ExitMethods.cs:61:13:61:34 | throw ...; | ExitMethods.cs:61:19:61:33 | object creation of type Exception |
|
||||
| ExitMethods.cs:61:19:61:33 | object creation of type Exception | ExitMethods.cs:61:19:61:33 | object creation of type Exception |
|
||||
| ExitMethods.cs:63:13:63:45 | throw ...; | ExitMethods.cs:63:41:63:43 | "b" |
|
||||
| ExitMethods.cs:63:19:63:44 | object creation of type ArgumentException | ExitMethods.cs:63:41:63:43 | "b" |
|
||||
| ExitMethods.cs:63:41:63:43 | "b" | ExitMethods.cs:63:41:63:43 | "b" |
|
||||
| ExitMethods.cs:67:5:69:5 | {...} | ExitMethods.cs:67:5:69:5 | {...} |
|
||||
| ExitMethods.cs:68:9:68:27 | call to method Exit | ExitMethods.cs:68:26:68:26 | 0 |
|
||||
| ExitMethods.cs:68:9:68:28 | ...; | ExitMethods.cs:68:9:68:28 | ...; |
|
||||
| ExitMethods.cs:68:26:68:26 | 0 | ExitMethods.cs:68:26:68:26 | 0 |
|
||||
| ExitMethods.cs:72:5:74:5 | {...} | ExitMethods.cs:72:5:74:5 | {...} |
|
||||
| ExitMethods.cs:73:9:73:47 | call to method Exit | ExitMethods.cs:73:9:73:47 | call to method Exit |
|
||||
| ExitMethods.cs:73:9:73:48 | ...; | ExitMethods.cs:73:9:73:48 | ...; |
|
||||
| ExitMethods.cs:77:5:79:5 | {...} | ExitMethods.cs:77:5:79:5 | {...} |
|
||||
| ExitMethods.cs:78:9:78:77 | return ...; | ExitMethods.cs:78:16:78:76 | ... ? ... : ... |
|
||||
| ExitMethods.cs:78:16:78:20 | access to parameter input | ExitMethods.cs:78:16:78:20 | access to parameter input |
|
||||
| ExitMethods.cs:78:16:78:25 | ... != ... | ExitMethods.cs:78:16:78:20 | access to parameter input |
|
||||
| ExitMethods.cs:78:16:78:76 | ... ? ... : ... | ExitMethods.cs:78:16:78:76 | ... ? ... : ... |
|
||||
| ExitMethods.cs:78:25:78:25 | 0 | ExitMethods.cs:78:25:78:25 | 0 |
|
||||
| ExitMethods.cs:78:25:78:25 | (...) ... | ExitMethods.cs:78:25:78:25 | 0 |
|
||||
| ExitMethods.cs:78:29:78:29 | 1 | ExitMethods.cs:78:29:78:29 | 1 |
|
||||
| ExitMethods.cs:78:29:78:29 | (...) ... | ExitMethods.cs:78:29:78:29 | 1 |
|
||||
| ExitMethods.cs:78:29:78:37 | ... / ... | ExitMethods.cs:78:29:78:29 | 1 |
|
||||
| ExitMethods.cs:78:33:78:37 | access to parameter input | ExitMethods.cs:78:33:78:37 | access to parameter input |
|
||||
| ExitMethods.cs:78:41:78:76 | throw ... | ExitMethods.cs:78:69:78:75 | "input" |
|
||||
| ExitMethods.cs:78:47:78:76 | object creation of type ArgumentException | ExitMethods.cs:78:69:78:75 | "input" |
|
||||
| ExitMethods.cs:78:69:78:75 | "input" | ExitMethods.cs:78:69:78:75 | "input" |
|
||||
| ExitMethods.cs:82:5:84:5 | {...} | ExitMethods.cs:82:5:84:5 | {...} |
|
||||
| ExitMethods.cs:83:9:83:39 | return ...; | ExitMethods.cs:83:16:83:38 | ... ? ... : ... |
|
||||
| ExitMethods.cs:83:16:83:16 | access to parameter s | ExitMethods.cs:83:16:83:16 | access to parameter s |
|
||||
| ExitMethods.cs:83:16:83:30 | call to method Contains | ExitMethods.cs:83:16:83:16 | access to parameter s |
|
||||
| ExitMethods.cs:83:16:83:38 | ... ? ... : ... | ExitMethods.cs:83:16:83:38 | ... ? ... : ... |
|
||||
| ExitMethods.cs:83:27:83:29 | - | ExitMethods.cs:83:27:83:29 | - |
|
||||
| ExitMethods.cs:83:34:83:34 | 0 | ExitMethods.cs:83:34:83:34 | 0 |
|
||||
| ExitMethods.cs:83:38:83:38 | 1 | ExitMethods.cs:83:38:83:38 | 1 |
|
||||
| ExitMethods.cs:91:35:91:37 | {...} | ExitMethods.cs:91:35:91:37 | {...} |
|
||||
| ExitMethods.cs:8:5:11:5 | {...} | ExitMethods.cs:8:5:11:5 | {...} |
|
||||
| ExitMethods.cs:9:9:9:24 | call to method ErrorMaybe | ExitMethods.cs:9:20:9:23 | true |
|
||||
| ExitMethods.cs:9:9:9:25 | ...; | ExitMethods.cs:9:9:9:25 | ...; |
|
||||
| ExitMethods.cs:9:20:9:23 | true | ExitMethods.cs:9:20:9:23 | true |
|
||||
| ExitMethods.cs:10:9:10:15 | return ...; | ExitMethods.cs:10:9:10:15 | return ...; |
|
||||
| ExitMethods.cs:14:5:17:5 | {...} | ExitMethods.cs:14:5:17:5 | {...} |
|
||||
| ExitMethods.cs:15:9:15:25 | call to method ErrorMaybe | ExitMethods.cs:15:20:15:24 | false |
|
||||
| ExitMethods.cs:15:9:15:26 | ...; | ExitMethods.cs:15:9:15:26 | ...; |
|
||||
| ExitMethods.cs:15:20:15:24 | false | ExitMethods.cs:15:20:15:24 | false |
|
||||
| ExitMethods.cs:16:9:16:15 | return ...; | ExitMethods.cs:16:9:16:15 | return ...; |
|
||||
| ExitMethods.cs:20:5:23:5 | {...} | ExitMethods.cs:20:5:23:5 | {...} |
|
||||
| ExitMethods.cs:21:9:21:25 | call to method ErrorAlways | ExitMethods.cs:21:21:21:24 | true |
|
||||
| ExitMethods.cs:21:9:21:26 | ...; | ExitMethods.cs:21:9:21:26 | ...; |
|
||||
| ExitMethods.cs:21:21:21:24 | true | ExitMethods.cs:21:21:21:24 | true |
|
||||
| ExitMethods.cs:22:9:22:15 | return ...; | ExitMethods.cs:22:9:22:15 | return ...; |
|
||||
| ExitMethods.cs:26:5:29:5 | {...} | ExitMethods.cs:26:5:29:5 | {...} |
|
||||
| ExitMethods.cs:27:9:27:14 | call to method Exit | ExitMethods.cs:27:9:27:14 | this access |
|
||||
| ExitMethods.cs:27:9:27:14 | this access | ExitMethods.cs:27:9:27:14 | this access |
|
||||
| ExitMethods.cs:27:9:27:15 | ...; | ExitMethods.cs:27:9:27:15 | ...; |
|
||||
| ExitMethods.cs:28:9:28:15 | return ...; | ExitMethods.cs:28:9:28:15 | return ...; |
|
||||
| ExitMethods.cs:32:5:35:5 | {...} | ExitMethods.cs:32:5:35:5 | {...} |
|
||||
| ExitMethods.cs:33:9:33:25 | call to method ApplicationExit | ExitMethods.cs:33:9:33:25 | this access |
|
||||
| ExitMethods.cs:33:9:33:25 | this access | ExitMethods.cs:33:9:33:25 | this access |
|
||||
| ExitMethods.cs:33:9:33:26 | ...; | ExitMethods.cs:33:9:33:26 | ...; |
|
||||
| ExitMethods.cs:34:9:34:15 | return ...; | ExitMethods.cs:34:9:34:15 | return ...; |
|
||||
| ExitMethods.cs:38:5:51:5 | {...} | ExitMethods.cs:38:5:51:5 | {...} |
|
||||
| ExitMethods.cs:39:9:50:9 | try {...} ... | ExitMethods.cs:39:9:50:9 | try {...} ... |
|
||||
| ExitMethods.cs:40:9:42:9 | {...} | ExitMethods.cs:40:9:42:9 | {...} |
|
||||
| ExitMethods.cs:41:13:41:30 | call to method ErrorAlways | ExitMethods.cs:41:25:41:29 | false |
|
||||
| ExitMethods.cs:41:13:41:31 | ...; | ExitMethods.cs:41:13:41:31 | ...; |
|
||||
| ExitMethods.cs:41:25:41:29 | false | ExitMethods.cs:41:25:41:29 | false |
|
||||
| ExitMethods.cs:43:9:46:9 | catch (...) {...} | ExitMethods.cs:43:9:46:9 | catch (...) {...} |
|
||||
| ExitMethods.cs:44:9:46:9 | {...} | ExitMethods.cs:44:9:46:9 | {...} |
|
||||
| ExitMethods.cs:45:13:45:19 | return ...; | ExitMethods.cs:45:13:45:19 | return ...; |
|
||||
| ExitMethods.cs:47:9:50:9 | catch (...) {...} | ExitMethods.cs:47:9:50:9 | catch (...) {...} |
|
||||
| ExitMethods.cs:48:9:50:9 | {...} | ExitMethods.cs:48:9:50:9 | {...} |
|
||||
| ExitMethods.cs:49:13:49:19 | return ...; | ExitMethods.cs:49:13:49:19 | return ...; |
|
||||
| ExitMethods.cs:54:5:57:5 | {...} | ExitMethods.cs:54:5:57:5 | {...} |
|
||||
| ExitMethods.cs:55:9:56:34 | if (...) ... | ExitMethods.cs:55:9:56:34 | if (...) ... |
|
||||
| ExitMethods.cs:55:13:55:13 | access to parameter b | ExitMethods.cs:55:13:55:13 | access to parameter b |
|
||||
| ExitMethods.cs:56:13:56:34 | throw ...; | ExitMethods.cs:56:19:56:33 | object creation of type Exception |
|
||||
| ExitMethods.cs:56:19:56:33 | object creation of type Exception | ExitMethods.cs:56:19:56:33 | object creation of type Exception |
|
||||
| ExitMethods.cs:60:5:65:5 | {...} | ExitMethods.cs:60:5:65:5 | {...} |
|
||||
| ExitMethods.cs:61:9:64:45 | if (...) ... | ExitMethods.cs:61:9:64:45 | if (...) ... |
|
||||
| ExitMethods.cs:61:13:61:13 | access to parameter b | ExitMethods.cs:61:13:61:13 | access to parameter b |
|
||||
| ExitMethods.cs:62:13:62:34 | throw ...; | ExitMethods.cs:62:19:62:33 | object creation of type Exception |
|
||||
| ExitMethods.cs:62:19:62:33 | object creation of type Exception | ExitMethods.cs:62:19:62:33 | object creation of type Exception |
|
||||
| ExitMethods.cs:64:13:64:45 | throw ...; | ExitMethods.cs:64:41:64:43 | "b" |
|
||||
| ExitMethods.cs:64:19:64:44 | object creation of type ArgumentException | ExitMethods.cs:64:41:64:43 | "b" |
|
||||
| ExitMethods.cs:64:41:64:43 | "b" | ExitMethods.cs:64:41:64:43 | "b" |
|
||||
| ExitMethods.cs:68:5:70:5 | {...} | ExitMethods.cs:68:5:70:5 | {...} |
|
||||
| ExitMethods.cs:69:9:69:27 | call to method Exit | ExitMethods.cs:69:26:69:26 | 0 |
|
||||
| ExitMethods.cs:69:9:69:28 | ...; | ExitMethods.cs:69:9:69:28 | ...; |
|
||||
| ExitMethods.cs:69:26:69:26 | 0 | ExitMethods.cs:69:26:69:26 | 0 |
|
||||
| ExitMethods.cs:73:5:83:5 | {...} | ExitMethods.cs:73:5:83:5 | {...} |
|
||||
| ExitMethods.cs:74:9:82:9 | try {...} ... | ExitMethods.cs:74:9:82:9 | try {...} ... |
|
||||
| ExitMethods.cs:75:9:77:9 | {...} | ExitMethods.cs:75:9:77:9 | {...} |
|
||||
| ExitMethods.cs:76:13:76:18 | call to method Exit | ExitMethods.cs:76:13:76:18 | this access |
|
||||
| ExitMethods.cs:76:13:76:18 | this access | ExitMethods.cs:76:13:76:18 | this access |
|
||||
| ExitMethods.cs:76:13:76:19 | ...; | ExitMethods.cs:76:13:76:19 | ...; |
|
||||
| ExitMethods.cs:79:9:82:9 | {...} | ExitMethods.cs:79:9:82:9 | {...} |
|
||||
| ExitMethods.cs:81:13:81:40 | call to method WriteLine | ExitMethods.cs:81:38:81:39 | "" |
|
||||
| ExitMethods.cs:81:13:81:41 | ...; | ExitMethods.cs:81:13:81:41 | ...; |
|
||||
| ExitMethods.cs:81:38:81:39 | "" | ExitMethods.cs:81:38:81:39 | "" |
|
||||
| ExitMethods.cs:86:5:88:5 | {...} | ExitMethods.cs:86:5:88:5 | {...} |
|
||||
| ExitMethods.cs:87:9:87:47 | call to method Exit | ExitMethods.cs:87:9:87:47 | call to method Exit |
|
||||
| ExitMethods.cs:87:9:87:48 | ...; | ExitMethods.cs:87:9:87:48 | ...; |
|
||||
| ExitMethods.cs:91:5:93:5 | {...} | ExitMethods.cs:91:5:93:5 | {...} |
|
||||
| ExitMethods.cs:92:9:92:77 | return ...; | ExitMethods.cs:92:16:92:76 | ... ? ... : ... |
|
||||
| ExitMethods.cs:92:16:92:20 | access to parameter input | ExitMethods.cs:92:16:92:20 | access to parameter input |
|
||||
| ExitMethods.cs:92:16:92:25 | ... != ... | ExitMethods.cs:92:16:92:20 | access to parameter input |
|
||||
| ExitMethods.cs:92:16:92:76 | ... ? ... : ... | ExitMethods.cs:92:16:92:76 | ... ? ... : ... |
|
||||
| ExitMethods.cs:92:25:92:25 | 0 | ExitMethods.cs:92:25:92:25 | 0 |
|
||||
| ExitMethods.cs:92:25:92:25 | (...) ... | ExitMethods.cs:92:25:92:25 | 0 |
|
||||
| ExitMethods.cs:92:29:92:29 | 1 | ExitMethods.cs:92:29:92:29 | 1 |
|
||||
| ExitMethods.cs:92:29:92:29 | (...) ... | ExitMethods.cs:92:29:92:29 | 1 |
|
||||
| ExitMethods.cs:92:29:92:37 | ... / ... | ExitMethods.cs:92:29:92:29 | 1 |
|
||||
| ExitMethods.cs:92:33:92:37 | access to parameter input | ExitMethods.cs:92:33:92:37 | access to parameter input |
|
||||
| ExitMethods.cs:92:41:92:76 | throw ... | ExitMethods.cs:92:69:92:75 | "input" |
|
||||
| ExitMethods.cs:92:47:92:76 | object creation of type ArgumentException | ExitMethods.cs:92:69:92:75 | "input" |
|
||||
| ExitMethods.cs:92:69:92:75 | "input" | ExitMethods.cs:92:69:92:75 | "input" |
|
||||
| ExitMethods.cs:96:5:98:5 | {...} | ExitMethods.cs:96:5:98:5 | {...} |
|
||||
| ExitMethods.cs:97:9:97:39 | return ...; | ExitMethods.cs:97:16:97:38 | ... ? ... : ... |
|
||||
| ExitMethods.cs:97:16:97:16 | access to parameter s | ExitMethods.cs:97:16:97:16 | access to parameter s |
|
||||
| ExitMethods.cs:97:16:97:30 | call to method Contains | ExitMethods.cs:97:16:97:16 | access to parameter s |
|
||||
| ExitMethods.cs:97:16:97:38 | ... ? ... : ... | ExitMethods.cs:97:16:97:38 | ... ? ... : ... |
|
||||
| ExitMethods.cs:97:27:97:29 | - | ExitMethods.cs:97:27:97:29 | - |
|
||||
| ExitMethods.cs:97:34:97:34 | 0 | ExitMethods.cs:97:34:97:34 | 0 |
|
||||
| ExitMethods.cs:97:38:97:38 | 1 | ExitMethods.cs:97:38:97:38 | 1 |
|
||||
| ExitMethods.cs:101:5:104:5 | {...} | ExitMethods.cs:101:5:104:5 | {...} |
|
||||
| ExitMethods.cs:102:9:102:28 | call to method IsTrue | ExitMethods.cs:102:23:102:27 | false |
|
||||
| ExitMethods.cs:102:9:102:29 | ...; | ExitMethods.cs:102:9:102:29 | ...; |
|
||||
| ExitMethods.cs:102:23:102:27 | false | ExitMethods.cs:102:23:102:27 | false |
|
||||
| ExitMethods.cs:103:9:103:18 | ... ...; | ExitMethods.cs:103:9:103:18 | ... ...; |
|
||||
| ExitMethods.cs:103:13:103:13 | access to local variable x | ExitMethods.cs:103:13:103:13 | access to local variable x |
|
||||
| ExitMethods.cs:103:13:103:17 | Int32 x = ... | ExitMethods.cs:103:13:103:13 | access to local variable x |
|
||||
| ExitMethods.cs:103:17:103:17 | 0 | ExitMethods.cs:103:17:103:17 | 0 |
|
||||
| ExitMethods.cs:107:5:110:5 | {...} | ExitMethods.cs:107:5:110:5 | {...} |
|
||||
| ExitMethods.cs:108:9:108:26 | call to method FailingAssertion | ExitMethods.cs:108:9:108:26 | this access |
|
||||
| ExitMethods.cs:108:9:108:26 | this access | ExitMethods.cs:108:9:108:26 | this access |
|
||||
| ExitMethods.cs:108:9:108:27 | ...; | ExitMethods.cs:108:9:108:27 | ...; |
|
||||
| ExitMethods.cs:109:9:109:18 | ... ...; | ExitMethods.cs:109:9:109:18 | ... ...; |
|
||||
| ExitMethods.cs:109:13:109:13 | access to local variable x | ExitMethods.cs:109:13:109:13 | access to local variable x |
|
||||
| ExitMethods.cs:109:13:109:17 | Int32 x = ... | ExitMethods.cs:109:13:109:13 | access to local variable x |
|
||||
| ExitMethods.cs:109:17:109:17 | 0 | ExitMethods.cs:109:17:109:17 | 0 |
|
||||
| ExitMethods.cs:112:33:112:49 | call to method IsFalse | ExitMethods.cs:112:48:112:48 | access to parameter b |
|
||||
| ExitMethods.cs:112:48:112:48 | access to parameter b | ExitMethods.cs:112:48:112:48 | access to parameter b |
|
||||
| ExitMethods.cs:115:5:118:5 | {...} | ExitMethods.cs:115:5:118:5 | {...} |
|
||||
| ExitMethods.cs:116:9:116:25 | call to method AssertFalse | ExitMethods.cs:116:9:116:25 | this access |
|
||||
| ExitMethods.cs:116:9:116:25 | this access | ExitMethods.cs:116:9:116:25 | this access |
|
||||
| ExitMethods.cs:116:9:116:26 | ...; | ExitMethods.cs:116:9:116:26 | ...; |
|
||||
| ExitMethods.cs:116:21:116:24 | true | ExitMethods.cs:116:21:116:24 | true |
|
||||
| ExitMethods.cs:117:9:117:18 | ... ...; | ExitMethods.cs:117:9:117:18 | ... ...; |
|
||||
| ExitMethods.cs:117:13:117:13 | access to local variable x | ExitMethods.cs:117:13:117:13 | access to local variable x |
|
||||
| ExitMethods.cs:117:13:117:17 | Int32 x = ... | ExitMethods.cs:117:13:117:13 | access to local variable x |
|
||||
| ExitMethods.cs:117:17:117:17 | 0 | ExitMethods.cs:117:17:117:17 | 0 |
|
||||
| Extensions.cs:6:5:8:5 | {...} | Extensions.cs:6:5:8:5 | {...} |
|
||||
| Extensions.cs:7:9:7:30 | return ...; | Extensions.cs:7:28:7:28 | access to parameter s |
|
||||
| Extensions.cs:7:16:7:29 | call to method Parse | Extensions.cs:7:28:7:28 | access to parameter s |
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import csharp
|
||||
import Common
|
||||
import ControlFlow::Internal
|
||||
|
||||
from ControlFlowElement cfe
|
||||
from SourceControlFlowElement cfe
|
||||
select cfe, first(cfe)
|
||||
|
|
|
@ -32,19 +32,23 @@
|
|||
| Conditions.cs:70:9:70:10 | M6 | Conditions.cs:71:5:84:5 | {...} |
|
||||
| Conditions.cs:86:9:86:10 | M7 | Conditions.cs:87:5:100:5 | {...} |
|
||||
| Conditions.cs:102:12:102:13 | M8 | Conditions.cs:103:5:111:5 | {...} |
|
||||
| ExitMethods.cs:6:10:6:11 | M1 | ExitMethods.cs:7:5:10:5 | {...} |
|
||||
| ExitMethods.cs:12:10:12:11 | M2 | ExitMethods.cs:13:5:16:5 | {...} |
|
||||
| ExitMethods.cs:18:10:18:11 | M3 | ExitMethods.cs:19:5:22:5 | {...} |
|
||||
| ExitMethods.cs:24:10:24:11 | M4 | ExitMethods.cs:25:5:28:5 | {...} |
|
||||
| ExitMethods.cs:30:10:30:11 | M5 | ExitMethods.cs:31:5:34:5 | {...} |
|
||||
| ExitMethods.cs:36:10:36:11 | M6 | ExitMethods.cs:37:5:50:5 | {...} |
|
||||
| ExitMethods.cs:52:17:52:26 | ErrorMaybe | ExitMethods.cs:53:5:56:5 | {...} |
|
||||
| ExitMethods.cs:58:17:58:27 | ErrorAlways | ExitMethods.cs:59:5:64:5 | {...} |
|
||||
| ExitMethods.cs:66:10:66:13 | Exit | ExitMethods.cs:67:5:69:5 | {...} |
|
||||
| ExitMethods.cs:71:10:71:24 | ApplicationExit | ExitMethods.cs:72:5:74:5 | {...} |
|
||||
| ExitMethods.cs:76:13:76:21 | ThrowExpr | ExitMethods.cs:77:5:79:5 | {...} |
|
||||
| ExitMethods.cs:81:16:81:34 | ExtensionMethodCall | ExitMethods.cs:82:5:84:5 | {...} |
|
||||
| ExitMethods.cs:91:28:91:31 | Exit | ExitMethods.cs:91:35:91:37 | {...} |
|
||||
| ExitMethods.cs:7:10:7:11 | M1 | ExitMethods.cs:8:5:11:5 | {...} |
|
||||
| ExitMethods.cs:13:10:13:11 | M2 | ExitMethods.cs:14:5:17:5 | {...} |
|
||||
| ExitMethods.cs:19:10:19:11 | M3 | ExitMethods.cs:20:5:23:5 | {...} |
|
||||
| ExitMethods.cs:25:10:25:11 | M4 | ExitMethods.cs:26:5:29:5 | {...} |
|
||||
| ExitMethods.cs:31:10:31:11 | M5 | ExitMethods.cs:32:5:35:5 | {...} |
|
||||
| ExitMethods.cs:37:10:37:11 | M6 | ExitMethods.cs:38:5:51:5 | {...} |
|
||||
| ExitMethods.cs:53:17:53:26 | ErrorMaybe | ExitMethods.cs:54:5:57:5 | {...} |
|
||||
| ExitMethods.cs:59:17:59:27 | ErrorAlways | ExitMethods.cs:60:5:65:5 | {...} |
|
||||
| ExitMethods.cs:67:10:67:13 | Exit | ExitMethods.cs:68:5:70:5 | {...} |
|
||||
| ExitMethods.cs:72:10:72:18 | ExitInTry | ExitMethods.cs:73:5:83:5 | {...} |
|
||||
| ExitMethods.cs:85:10:85:24 | ApplicationExit | ExitMethods.cs:86:5:88:5 | {...} |
|
||||
| ExitMethods.cs:90:13:90:21 | ThrowExpr | ExitMethods.cs:91:5:93:5 | {...} |
|
||||
| ExitMethods.cs:95:16:95:34 | ExtensionMethodCall | ExitMethods.cs:96:5:98:5 | {...} |
|
||||
| ExitMethods.cs:100:17:100:32 | FailingAssertion | ExitMethods.cs:101:5:104:5 | {...} |
|
||||
| ExitMethods.cs:106:17:106:33 | FailingAssertion2 | ExitMethods.cs:107:5:110:5 | {...} |
|
||||
| ExitMethods.cs:112:10:112:20 | AssertFalse | ExitMethods.cs:112:48:112:48 | access to parameter b |
|
||||
| ExitMethods.cs:114:17:114:33 | FailingAssertion3 | ExitMethods.cs:115:5:118:5 | {...} |
|
||||
| Extensions.cs:5:23:5:29 | ToInt32 | Extensions.cs:6:5:8:5 | {...} |
|
||||
| Extensions.cs:10:24:10:29 | ToBool | Extensions.cs:11:5:13:5 | {...} |
|
||||
| Extensions.cs:15:23:15:33 | CallToInt32 | Extensions.cs:15:48:15:50 | "0" |
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import csharp
|
||||
import semmle.code.csharp.controlflow.ControlFlowElement
|
||||
import Common
|
||||
|
||||
from Callable c, ControlFlowElement cfn
|
||||
from Callable c, SourceControlFlowElement cfn
|
||||
where c.getEntryPoint().getASuccessor().getElement() = cfn
|
||||
select c, cfn
|
||||
|
|
|
@ -672,110 +672,151 @@
|
|||
| Conditions.cs:109:22:109:23 | "" | Conditions.cs:109:22:109:23 | "" | normal |
|
||||
| Conditions.cs:110:9:110:17 | return ...; | Conditions.cs:110:9:110:17 | return ...; | return |
|
||||
| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:110:16:110:16 | access to local variable x | normal |
|
||||
| ExitMethods.cs:7:5:10:5 | {...} | ExitMethods.cs:9:9:9:15 | return ...; | return |
|
||||
| ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | normal |
|
||||
| ExitMethods.cs:8:9:8:25 | ...; | ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | normal |
|
||||
| ExitMethods.cs:8:20:8:23 | true | ExitMethods.cs:8:20:8:23 | true | normal |
|
||||
| ExitMethods.cs:9:9:9:15 | return ...; | ExitMethods.cs:9:9:9:15 | return ...; | return |
|
||||
| ExitMethods.cs:13:5:16:5 | {...} | ExitMethods.cs:15:9:15:15 | return ...; | return |
|
||||
| ExitMethods.cs:14:9:14:25 | call to method ErrorMaybe | ExitMethods.cs:14:9:14:25 | call to method ErrorMaybe | normal |
|
||||
| ExitMethods.cs:14:9:14:26 | ...; | ExitMethods.cs:14:9:14:25 | call to method ErrorMaybe | normal |
|
||||
| ExitMethods.cs:14:20:14:24 | false | ExitMethods.cs:14:20:14:24 | false | normal |
|
||||
| ExitMethods.cs:15:9:15:15 | return ...; | ExitMethods.cs:15:9:15:15 | return ...; | return |
|
||||
| ExitMethods.cs:19:5:22:5 | {...} | ExitMethods.cs:20:9:20:25 | call to method ErrorAlways | throw(ArgumentException) |
|
||||
| ExitMethods.cs:19:5:22:5 | {...} | ExitMethods.cs:20:9:20:25 | call to method ErrorAlways | throw(Exception) |
|
||||
| ExitMethods.cs:19:5:22:5 | {...} | ExitMethods.cs:21:9:21:15 | return ...; | return |
|
||||
| ExitMethods.cs:20:9:20:25 | call to method ErrorAlways | ExitMethods.cs:20:9:20:25 | call to method ErrorAlways | throw(ArgumentException) |
|
||||
| ExitMethods.cs:20:9:20:25 | call to method ErrorAlways | ExitMethods.cs:20:9:20:25 | call to method ErrorAlways | throw(Exception) |
|
||||
| ExitMethods.cs:20:9:20:26 | ...; | ExitMethods.cs:20:9:20:25 | call to method ErrorAlways | throw(ArgumentException) |
|
||||
| ExitMethods.cs:20:9:20:26 | ...; | ExitMethods.cs:20:9:20:25 | call to method ErrorAlways | throw(Exception) |
|
||||
| ExitMethods.cs:20:21:20:24 | true | ExitMethods.cs:20:21:20:24 | true | normal |
|
||||
| ExitMethods.cs:21:9:21:15 | return ...; | ExitMethods.cs:21:9:21:15 | return ...; | return |
|
||||
| ExitMethods.cs:25:5:28:5 | {...} | ExitMethods.cs:26:9:26:14 | call to method Exit | return |
|
||||
| ExitMethods.cs:25:5:28:5 | {...} | ExitMethods.cs:27:9:27:15 | return ...; | return |
|
||||
| ExitMethods.cs:26:9:26:14 | call to method Exit | ExitMethods.cs:26:9:26:14 | call to method Exit | return |
|
||||
| ExitMethods.cs:26:9:26:14 | this access | ExitMethods.cs:26:9:26:14 | this access | normal |
|
||||
| ExitMethods.cs:26:9:26:15 | ...; | ExitMethods.cs:26:9:26:14 | call to method Exit | return |
|
||||
| ExitMethods.cs:27:9:27:15 | return ...; | ExitMethods.cs:27:9:27:15 | return ...; | return |
|
||||
| ExitMethods.cs:31:5:34:5 | {...} | ExitMethods.cs:32:9:32:25 | call to method ApplicationExit | return |
|
||||
| ExitMethods.cs:31:5:34:5 | {...} | ExitMethods.cs:33:9:33:15 | return ...; | return |
|
||||
| ExitMethods.cs:32:9:32:25 | call to method ApplicationExit | ExitMethods.cs:32:9:32:25 | call to method ApplicationExit | return |
|
||||
| ExitMethods.cs:32:9:32:25 | this access | ExitMethods.cs:32:9:32:25 | this access | normal |
|
||||
| ExitMethods.cs:32:9:32:26 | ...; | ExitMethods.cs:32:9:32:25 | call to method ApplicationExit | return |
|
||||
| ExitMethods.cs:33:9:33:15 | return ...; | ExitMethods.cs:33:9:33:15 | return ...; | return |
|
||||
| ExitMethods.cs:37:5:50:5 | {...} | ExitMethods.cs:44:13:44:19 | return ...; | return |
|
||||
| ExitMethods.cs:37:5:50:5 | {...} | ExitMethods.cs:48:13:48:19 | return ...; | return |
|
||||
| ExitMethods.cs:38:9:49:9 | try {...} ... | ExitMethods.cs:44:13:44:19 | return ...; | return |
|
||||
| ExitMethods.cs:38:9:49:9 | try {...} ... | ExitMethods.cs:48:13:48:19 | return ...; | return |
|
||||
| ExitMethods.cs:39:9:41:9 | {...} | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | throw(ArgumentException) |
|
||||
| ExitMethods.cs:39:9:41:9 | {...} | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | throw(Exception) |
|
||||
| ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | throw(ArgumentException) |
|
||||
| ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | throw(Exception) |
|
||||
| ExitMethods.cs:40:13:40:31 | ...; | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | throw(ArgumentException) |
|
||||
| ExitMethods.cs:40:13:40:31 | ...; | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | throw(Exception) |
|
||||
| ExitMethods.cs:40:25:40:29 | false | ExitMethods.cs:40:25:40:29 | false | normal |
|
||||
| ExitMethods.cs:42:9:45:9 | catch (...) {...} | ExitMethods.cs:42:9:45:9 | catch (...) {...} | no-match |
|
||||
| ExitMethods.cs:42:9:45:9 | catch (...) {...} | ExitMethods.cs:44:13:44:19 | return ...; | return |
|
||||
| ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:44:13:44:19 | return ...; | return |
|
||||
| ExitMethods.cs:44:13:44:19 | return ...; | ExitMethods.cs:44:13:44:19 | return ...; | return |
|
||||
| ExitMethods.cs:46:9:49:9 | catch (...) {...} | ExitMethods.cs:48:13:48:19 | return ...; | return |
|
||||
| ExitMethods.cs:47:9:49:9 | {...} | ExitMethods.cs:48:13:48:19 | return ...; | return |
|
||||
| ExitMethods.cs:48:13:48:19 | return ...; | ExitMethods.cs:48:13:48:19 | return ...; | return |
|
||||
| ExitMethods.cs:53:5:56:5 | {...} | ExitMethods.cs:54:13:54:13 | access to parameter b | false/false |
|
||||
| ExitMethods.cs:53:5:56:5 | {...} | ExitMethods.cs:55:13:55:34 | throw ...; | throw(Exception) |
|
||||
| ExitMethods.cs:54:9:55:34 | if (...) ... | ExitMethods.cs:54:13:54:13 | access to parameter b | false/false |
|
||||
| ExitMethods.cs:54:9:55:34 | if (...) ... | ExitMethods.cs:55:13:55:34 | throw ...; | throw(Exception) |
|
||||
| ExitMethods.cs:54:13:54:13 | access to parameter b | ExitMethods.cs:54:13:54:13 | access to parameter b | false/false |
|
||||
| ExitMethods.cs:54:13:54:13 | access to parameter b | ExitMethods.cs:54:13:54:13 | access to parameter b | true/true |
|
||||
| ExitMethods.cs:55:13:55:34 | throw ...; | ExitMethods.cs:55:13:55:34 | throw ...; | throw(Exception) |
|
||||
| ExitMethods.cs:55:19:55:33 | object creation of type Exception | ExitMethods.cs:55:19:55:33 | object creation of type Exception | normal |
|
||||
| ExitMethods.cs:59:5:64:5 | {...} | ExitMethods.cs:61:13:61:34 | throw ...; | throw(Exception) |
|
||||
| ExitMethods.cs:59:5:64:5 | {...} | ExitMethods.cs:63:13:63:45 | throw ...; | throw(ArgumentException) |
|
||||
| ExitMethods.cs:60:9:63:45 | if (...) ... | ExitMethods.cs:61:13:61:34 | throw ...; | throw(Exception) |
|
||||
| ExitMethods.cs:60:9:63:45 | if (...) ... | ExitMethods.cs:63:13:63:45 | throw ...; | throw(ArgumentException) |
|
||||
| ExitMethods.cs:60:13:60:13 | access to parameter b | ExitMethods.cs:60:13:60:13 | access to parameter b | false/false |
|
||||
| ExitMethods.cs:60:13:60:13 | access to parameter b | ExitMethods.cs:60:13:60:13 | access to parameter b | true/true |
|
||||
| ExitMethods.cs:61:13:61:34 | throw ...; | ExitMethods.cs:61:13:61:34 | throw ...; | throw(Exception) |
|
||||
| ExitMethods.cs:61:19:61:33 | object creation of type Exception | ExitMethods.cs:61:19:61:33 | object creation of type Exception | normal |
|
||||
| ExitMethods.cs:63:13:63:45 | throw ...; | ExitMethods.cs:63:13:63:45 | throw ...; | throw(ArgumentException) |
|
||||
| ExitMethods.cs:63:19:63:44 | object creation of type ArgumentException | ExitMethods.cs:63:19:63:44 | object creation of type ArgumentException | normal |
|
||||
| ExitMethods.cs:63:41:63:43 | "b" | ExitMethods.cs:63:41:63:43 | "b" | normal |
|
||||
| ExitMethods.cs:67:5:69:5 | {...} | ExitMethods.cs:68:9:68:27 | call to method Exit | return |
|
||||
| ExitMethods.cs:68:9:68:27 | call to method Exit | ExitMethods.cs:68:9:68:27 | call to method Exit | return |
|
||||
| ExitMethods.cs:68:9:68:28 | ...; | ExitMethods.cs:68:9:68:27 | call to method Exit | return |
|
||||
| ExitMethods.cs:68:26:68:26 | 0 | ExitMethods.cs:68:26:68:26 | 0 | normal |
|
||||
| ExitMethods.cs:72:5:74:5 | {...} | ExitMethods.cs:73:9:73:47 | call to method Exit | return |
|
||||
| ExitMethods.cs:73:9:73:47 | call to method Exit | ExitMethods.cs:73:9:73:47 | call to method Exit | return |
|
||||
| ExitMethods.cs:73:9:73:48 | ...; | ExitMethods.cs:73:9:73:47 | call to method Exit | return |
|
||||
| ExitMethods.cs:77:5:79:5 | {...} | ExitMethods.cs:78:9:78:77 | return ...; | return |
|
||||
| ExitMethods.cs:77:5:79:5 | {...} | ExitMethods.cs:78:41:78:76 | throw ... | throw(ArgumentException) |
|
||||
| ExitMethods.cs:78:9:78:77 | return ...; | ExitMethods.cs:78:9:78:77 | return ...; | return |
|
||||
| ExitMethods.cs:78:9:78:77 | return ...; | ExitMethods.cs:78:41:78:76 | throw ... | throw(ArgumentException) |
|
||||
| ExitMethods.cs:78:16:78:20 | access to parameter input | ExitMethods.cs:78:16:78:20 | access to parameter input | normal |
|
||||
| ExitMethods.cs:78:16:78:25 | ... != ... | ExitMethods.cs:78:16:78:25 | ... != ... | false/false |
|
||||
| ExitMethods.cs:78:16:78:25 | ... != ... | ExitMethods.cs:78:16:78:25 | ... != ... | true/true |
|
||||
| ExitMethods.cs:78:16:78:76 | ... ? ... : ... | ExitMethods.cs:78:29:78:37 | ... / ... | normal |
|
||||
| ExitMethods.cs:78:16:78:76 | ... ? ... : ... | ExitMethods.cs:78:41:78:76 | throw ... | throw(ArgumentException) |
|
||||
| ExitMethods.cs:78:25:78:25 | 0 | ExitMethods.cs:78:25:78:25 | 0 | normal |
|
||||
| ExitMethods.cs:78:25:78:25 | (...) ... | ExitMethods.cs:78:25:78:25 | (...) ... | normal |
|
||||
| ExitMethods.cs:78:29:78:29 | 1 | ExitMethods.cs:78:29:78:29 | 1 | normal |
|
||||
| ExitMethods.cs:78:29:78:29 | (...) ... | ExitMethods.cs:78:29:78:29 | (...) ... | normal |
|
||||
| ExitMethods.cs:78:29:78:37 | ... / ... | ExitMethods.cs:78:29:78:37 | ... / ... | normal |
|
||||
| ExitMethods.cs:78:33:78:37 | access to parameter input | ExitMethods.cs:78:33:78:37 | access to parameter input | normal |
|
||||
| ExitMethods.cs:78:41:78:76 | throw ... | ExitMethods.cs:78:41:78:76 | throw ... | throw(ArgumentException) |
|
||||
| ExitMethods.cs:78:47:78:76 | object creation of type ArgumentException | ExitMethods.cs:78:47:78:76 | object creation of type ArgumentException | normal |
|
||||
| ExitMethods.cs:78:69:78:75 | "input" | ExitMethods.cs:78:69:78:75 | "input" | normal |
|
||||
| ExitMethods.cs:82:5:84:5 | {...} | ExitMethods.cs:83:9:83:39 | return ...; | return |
|
||||
| ExitMethods.cs:83:9:83:39 | return ...; | ExitMethods.cs:83:9:83:39 | return ...; | return |
|
||||
| ExitMethods.cs:83:16:83:16 | access to parameter s | ExitMethods.cs:83:16:83:16 | access to parameter s | normal |
|
||||
| ExitMethods.cs:83:16:83:30 | call to method Contains | ExitMethods.cs:83:16:83:30 | call to method Contains | false/false |
|
||||
| ExitMethods.cs:83:16:83:30 | call to method Contains | ExitMethods.cs:83:16:83:30 | call to method Contains | true/true |
|
||||
| ExitMethods.cs:83:16:83:38 | ... ? ... : ... | ExitMethods.cs:83:34:83:34 | 0 | normal |
|
||||
| ExitMethods.cs:83:16:83:38 | ... ? ... : ... | ExitMethods.cs:83:38:83:38 | 1 | normal |
|
||||
| ExitMethods.cs:83:27:83:29 | - | ExitMethods.cs:83:27:83:29 | - | normal |
|
||||
| ExitMethods.cs:83:34:83:34 | 0 | ExitMethods.cs:83:34:83:34 | 0 | normal |
|
||||
| ExitMethods.cs:83:38:83:38 | 1 | ExitMethods.cs:83:38:83:38 | 1 | normal |
|
||||
| ExitMethods.cs:91:35:91:37 | {...} | ExitMethods.cs:91:35:91:37 | {...} | normal |
|
||||
| ExitMethods.cs:8:5:11:5 | {...} | ExitMethods.cs:10:9:10:15 | return ...; | return |
|
||||
| ExitMethods.cs:9:9:9:24 | call to method ErrorMaybe | ExitMethods.cs:9:9:9:24 | call to method ErrorMaybe | normal |
|
||||
| ExitMethods.cs:9:9:9:25 | ...; | ExitMethods.cs:9:9:9:24 | call to method ErrorMaybe | normal |
|
||||
| ExitMethods.cs:9:20:9:23 | true | ExitMethods.cs:9:20:9:23 | true | normal |
|
||||
| ExitMethods.cs:10:9:10:15 | return ...; | ExitMethods.cs:10:9:10:15 | return ...; | return |
|
||||
| ExitMethods.cs:14:5:17:5 | {...} | ExitMethods.cs:16:9:16:15 | return ...; | return |
|
||||
| ExitMethods.cs:15:9:15:25 | call to method ErrorMaybe | ExitMethods.cs:15:9:15:25 | call to method ErrorMaybe | normal |
|
||||
| ExitMethods.cs:15:9:15:26 | ...; | ExitMethods.cs:15:9:15:25 | call to method ErrorMaybe | normal |
|
||||
| ExitMethods.cs:15:20:15:24 | false | ExitMethods.cs:15:20:15:24 | false | normal |
|
||||
| ExitMethods.cs:16:9:16:15 | return ...; | ExitMethods.cs:16:9:16:15 | return ...; | return |
|
||||
| ExitMethods.cs:20:5:23:5 | {...} | ExitMethods.cs:21:9:21:25 | call to method ErrorAlways | throw(ArgumentException) |
|
||||
| ExitMethods.cs:20:5:23:5 | {...} | ExitMethods.cs:21:9:21:25 | call to method ErrorAlways | throw(Exception) |
|
||||
| ExitMethods.cs:20:5:23:5 | {...} | ExitMethods.cs:22:9:22:15 | return ...; | return |
|
||||
| ExitMethods.cs:21:9:21:25 | call to method ErrorAlways | ExitMethods.cs:21:9:21:25 | call to method ErrorAlways | throw(ArgumentException) |
|
||||
| ExitMethods.cs:21:9:21:25 | call to method ErrorAlways | ExitMethods.cs:21:9:21:25 | call to method ErrorAlways | throw(Exception) |
|
||||
| ExitMethods.cs:21:9:21:26 | ...; | ExitMethods.cs:21:9:21:25 | call to method ErrorAlways | throw(ArgumentException) |
|
||||
| ExitMethods.cs:21:9:21:26 | ...; | ExitMethods.cs:21:9:21:25 | call to method ErrorAlways | throw(Exception) |
|
||||
| ExitMethods.cs:21:21:21:24 | true | ExitMethods.cs:21:21:21:24 | true | normal |
|
||||
| ExitMethods.cs:22:9:22:15 | return ...; | ExitMethods.cs:22:9:22:15 | return ...; | return |
|
||||
| ExitMethods.cs:26:5:29:5 | {...} | ExitMethods.cs:27:9:27:14 | call to method Exit | exit |
|
||||
| ExitMethods.cs:26:5:29:5 | {...} | ExitMethods.cs:28:9:28:15 | return ...; | return |
|
||||
| ExitMethods.cs:27:9:27:14 | call to method Exit | ExitMethods.cs:27:9:27:14 | call to method Exit | exit |
|
||||
| ExitMethods.cs:27:9:27:14 | this access | ExitMethods.cs:27:9:27:14 | this access | normal |
|
||||
| ExitMethods.cs:27:9:27:15 | ...; | ExitMethods.cs:27:9:27:14 | call to method Exit | exit |
|
||||
| ExitMethods.cs:28:9:28:15 | return ...; | ExitMethods.cs:28:9:28:15 | return ...; | return |
|
||||
| ExitMethods.cs:32:5:35:5 | {...} | ExitMethods.cs:33:9:33:25 | call to method ApplicationExit | exit |
|
||||
| ExitMethods.cs:32:5:35:5 | {...} | ExitMethods.cs:34:9:34:15 | return ...; | return |
|
||||
| ExitMethods.cs:33:9:33:25 | call to method ApplicationExit | ExitMethods.cs:33:9:33:25 | call to method ApplicationExit | exit |
|
||||
| ExitMethods.cs:33:9:33:25 | this access | ExitMethods.cs:33:9:33:25 | this access | normal |
|
||||
| ExitMethods.cs:33:9:33:26 | ...; | ExitMethods.cs:33:9:33:25 | call to method ApplicationExit | exit |
|
||||
| ExitMethods.cs:34:9:34:15 | return ...; | ExitMethods.cs:34:9:34:15 | return ...; | return |
|
||||
| ExitMethods.cs:38:5:51:5 | {...} | ExitMethods.cs:45:13:45:19 | return ...; | return |
|
||||
| ExitMethods.cs:38:5:51:5 | {...} | ExitMethods.cs:49:13:49:19 | return ...; | return |
|
||||
| ExitMethods.cs:39:9:50:9 | try {...} ... | ExitMethods.cs:45:13:45:19 | return ...; | return |
|
||||
| ExitMethods.cs:39:9:50:9 | try {...} ... | ExitMethods.cs:49:13:49:19 | return ...; | return |
|
||||
| ExitMethods.cs:40:9:42:9 | {...} | ExitMethods.cs:41:13:41:30 | call to method ErrorAlways | throw(ArgumentException) |
|
||||
| ExitMethods.cs:40:9:42:9 | {...} | ExitMethods.cs:41:13:41:30 | call to method ErrorAlways | throw(Exception) |
|
||||
| ExitMethods.cs:41:13:41:30 | call to method ErrorAlways | ExitMethods.cs:41:13:41:30 | call to method ErrorAlways | throw(ArgumentException) |
|
||||
| ExitMethods.cs:41:13:41:30 | call to method ErrorAlways | ExitMethods.cs:41:13:41:30 | call to method ErrorAlways | throw(Exception) |
|
||||
| ExitMethods.cs:41:13:41:31 | ...; | ExitMethods.cs:41:13:41:30 | call to method ErrorAlways | throw(ArgumentException) |
|
||||
| ExitMethods.cs:41:13:41:31 | ...; | ExitMethods.cs:41:13:41:30 | call to method ErrorAlways | throw(Exception) |
|
||||
| ExitMethods.cs:41:25:41:29 | false | ExitMethods.cs:41:25:41:29 | false | normal |
|
||||
| ExitMethods.cs:43:9:46:9 | catch (...) {...} | ExitMethods.cs:43:9:46:9 | catch (...) {...} | no-match |
|
||||
| ExitMethods.cs:43:9:46:9 | catch (...) {...} | ExitMethods.cs:45:13:45:19 | return ...; | return |
|
||||
| ExitMethods.cs:44:9:46:9 | {...} | ExitMethods.cs:45:13:45:19 | return ...; | return |
|
||||
| ExitMethods.cs:45:13:45:19 | return ...; | ExitMethods.cs:45:13:45:19 | return ...; | return |
|
||||
| ExitMethods.cs:47:9:50:9 | catch (...) {...} | ExitMethods.cs:49:13:49:19 | return ...; | return |
|
||||
| ExitMethods.cs:48:9:50:9 | {...} | ExitMethods.cs:49:13:49:19 | return ...; | return |
|
||||
| ExitMethods.cs:49:13:49:19 | return ...; | ExitMethods.cs:49:13:49:19 | return ...; | return |
|
||||
| ExitMethods.cs:54:5:57:5 | {...} | ExitMethods.cs:55:13:55:13 | access to parameter b | false/false |
|
||||
| ExitMethods.cs:54:5:57:5 | {...} | ExitMethods.cs:56:13:56:34 | throw ...; | throw(Exception) |
|
||||
| ExitMethods.cs:55:9:56:34 | if (...) ... | ExitMethods.cs:55:13:55:13 | access to parameter b | false/false |
|
||||
| ExitMethods.cs:55:9:56:34 | if (...) ... | ExitMethods.cs:56:13:56:34 | throw ...; | throw(Exception) |
|
||||
| ExitMethods.cs:55:13:55:13 | access to parameter b | ExitMethods.cs:55:13:55:13 | access to parameter b | false/false |
|
||||
| ExitMethods.cs:55:13:55:13 | access to parameter b | ExitMethods.cs:55:13:55:13 | access to parameter b | true/true |
|
||||
| ExitMethods.cs:56:13:56:34 | throw ...; | ExitMethods.cs:56:13:56:34 | throw ...; | throw(Exception) |
|
||||
| ExitMethods.cs:56:19:56:33 | object creation of type Exception | ExitMethods.cs:56:19:56:33 | object creation of type Exception | normal |
|
||||
| ExitMethods.cs:60:5:65:5 | {...} | ExitMethods.cs:62:13:62:34 | throw ...; | throw(Exception) |
|
||||
| ExitMethods.cs:60:5:65:5 | {...} | ExitMethods.cs:64:13:64:45 | throw ...; | throw(ArgumentException) |
|
||||
| ExitMethods.cs:61:9:64:45 | if (...) ... | ExitMethods.cs:62:13:62:34 | throw ...; | throw(Exception) |
|
||||
| ExitMethods.cs:61:9:64:45 | if (...) ... | ExitMethods.cs:64:13:64:45 | throw ...; | throw(ArgumentException) |
|
||||
| ExitMethods.cs:61:13:61:13 | access to parameter b | ExitMethods.cs:61:13:61:13 | access to parameter b | false/false |
|
||||
| ExitMethods.cs:61:13:61:13 | access to parameter b | ExitMethods.cs:61:13:61:13 | access to parameter b | true/true |
|
||||
| ExitMethods.cs:62:13:62:34 | throw ...; | ExitMethods.cs:62:13:62:34 | throw ...; | throw(Exception) |
|
||||
| ExitMethods.cs:62:19:62:33 | object creation of type Exception | ExitMethods.cs:62:19:62:33 | object creation of type Exception | normal |
|
||||
| ExitMethods.cs:64:13:64:45 | throw ...; | ExitMethods.cs:64:13:64:45 | throw ...; | throw(ArgumentException) |
|
||||
| ExitMethods.cs:64:19:64:44 | object creation of type ArgumentException | ExitMethods.cs:64:19:64:44 | object creation of type ArgumentException | normal |
|
||||
| ExitMethods.cs:64:41:64:43 | "b" | ExitMethods.cs:64:41:64:43 | "b" | normal |
|
||||
| ExitMethods.cs:68:5:70:5 | {...} | ExitMethods.cs:69:9:69:27 | call to method Exit | exit |
|
||||
| ExitMethods.cs:69:9:69:27 | call to method Exit | ExitMethods.cs:69:9:69:27 | call to method Exit | exit |
|
||||
| ExitMethods.cs:69:9:69:28 | ...; | ExitMethods.cs:69:9:69:27 | call to method Exit | exit |
|
||||
| ExitMethods.cs:69:26:69:26 | 0 | ExitMethods.cs:69:26:69:26 | 0 | normal |
|
||||
| ExitMethods.cs:73:5:83:5 | {...} | ExitMethods.cs:76:13:76:18 | call to method Exit | exit |
|
||||
| ExitMethods.cs:73:5:83:5 | {...} | ExitMethods.cs:81:13:81:40 | call to method WriteLine | exit |
|
||||
| ExitMethods.cs:74:9:82:9 | try {...} ... | ExitMethods.cs:76:13:76:18 | call to method Exit | exit |
|
||||
| ExitMethods.cs:74:9:82:9 | try {...} ... | ExitMethods.cs:81:13:81:40 | call to method WriteLine | exit |
|
||||
| ExitMethods.cs:75:9:77:9 | {...} | ExitMethods.cs:76:13:76:18 | call to method Exit | exit |
|
||||
| ExitMethods.cs:76:13:76:18 | call to method Exit | ExitMethods.cs:76:13:76:18 | call to method Exit | exit |
|
||||
| ExitMethods.cs:76:13:76:18 | this access | ExitMethods.cs:76:13:76:18 | this access | normal |
|
||||
| ExitMethods.cs:76:13:76:19 | ...; | ExitMethods.cs:76:13:76:18 | call to method Exit | exit |
|
||||
| ExitMethods.cs:79:9:82:9 | {...} | ExitMethods.cs:81:13:81:40 | call to method WriteLine | normal |
|
||||
| ExitMethods.cs:81:13:81:40 | call to method WriteLine | ExitMethods.cs:81:13:81:40 | call to method WriteLine | normal |
|
||||
| ExitMethods.cs:81:13:81:41 | ...; | ExitMethods.cs:81:13:81:40 | call to method WriteLine | normal |
|
||||
| ExitMethods.cs:81:38:81:39 | "" | ExitMethods.cs:81:38:81:39 | "" | normal |
|
||||
| ExitMethods.cs:86:5:88:5 | {...} | ExitMethods.cs:87:9:87:47 | call to method Exit | exit |
|
||||
| ExitMethods.cs:87:9:87:47 | call to method Exit | ExitMethods.cs:87:9:87:47 | call to method Exit | exit |
|
||||
| ExitMethods.cs:87:9:87:48 | ...; | ExitMethods.cs:87:9:87:47 | call to method Exit | exit |
|
||||
| ExitMethods.cs:91:5:93:5 | {...} | ExitMethods.cs:92:9:92:77 | return ...; | return |
|
||||
| ExitMethods.cs:91:5:93:5 | {...} | ExitMethods.cs:92:41:92:76 | throw ... | throw(ArgumentException) |
|
||||
| ExitMethods.cs:92:9:92:77 | return ...; | ExitMethods.cs:92:9:92:77 | return ...; | return |
|
||||
| ExitMethods.cs:92:9:92:77 | return ...; | ExitMethods.cs:92:41:92:76 | throw ... | throw(ArgumentException) |
|
||||
| ExitMethods.cs:92:16:92:20 | access to parameter input | ExitMethods.cs:92:16:92:20 | access to parameter input | normal |
|
||||
| ExitMethods.cs:92:16:92:25 | ... != ... | ExitMethods.cs:92:16:92:25 | ... != ... | false/false |
|
||||
| ExitMethods.cs:92:16:92:25 | ... != ... | ExitMethods.cs:92:16:92:25 | ... != ... | true/true |
|
||||
| ExitMethods.cs:92:16:92:76 | ... ? ... : ... | ExitMethods.cs:92:29:92:37 | ... / ... | normal |
|
||||
| ExitMethods.cs:92:16:92:76 | ... ? ... : ... | ExitMethods.cs:92:41:92:76 | throw ... | throw(ArgumentException) |
|
||||
| ExitMethods.cs:92:25:92:25 | 0 | ExitMethods.cs:92:25:92:25 | 0 | normal |
|
||||
| ExitMethods.cs:92:25:92:25 | (...) ... | ExitMethods.cs:92:25:92:25 | (...) ... | normal |
|
||||
| ExitMethods.cs:92:29:92:29 | 1 | ExitMethods.cs:92:29:92:29 | 1 | normal |
|
||||
| ExitMethods.cs:92:29:92:29 | (...) ... | ExitMethods.cs:92:29:92:29 | (...) ... | normal |
|
||||
| ExitMethods.cs:92:29:92:37 | ... / ... | ExitMethods.cs:92:29:92:37 | ... / ... | normal |
|
||||
| ExitMethods.cs:92:33:92:37 | access to parameter input | ExitMethods.cs:92:33:92:37 | access to parameter input | normal |
|
||||
| ExitMethods.cs:92:41:92:76 | throw ... | ExitMethods.cs:92:41:92:76 | throw ... | throw(ArgumentException) |
|
||||
| ExitMethods.cs:92:47:92:76 | object creation of type ArgumentException | ExitMethods.cs:92:47:92:76 | object creation of type ArgumentException | normal |
|
||||
| ExitMethods.cs:92:69:92:75 | "input" | ExitMethods.cs:92:69:92:75 | "input" | normal |
|
||||
| ExitMethods.cs:96:5:98:5 | {...} | ExitMethods.cs:97:9:97:39 | return ...; | return |
|
||||
| ExitMethods.cs:97:9:97:39 | return ...; | ExitMethods.cs:97:9:97:39 | return ...; | return |
|
||||
| ExitMethods.cs:97:16:97:16 | access to parameter s | ExitMethods.cs:97:16:97:16 | access to parameter s | normal |
|
||||
| ExitMethods.cs:97:16:97:30 | call to method Contains | ExitMethods.cs:97:16:97:30 | call to method Contains | false/false |
|
||||
| ExitMethods.cs:97:16:97:30 | call to method Contains | ExitMethods.cs:97:16:97:30 | call to method Contains | true/true |
|
||||
| ExitMethods.cs:97:16:97:38 | ... ? ... : ... | ExitMethods.cs:97:34:97:34 | 0 | normal |
|
||||
| ExitMethods.cs:97:16:97:38 | ... ? ... : ... | ExitMethods.cs:97:38:97:38 | 1 | normal |
|
||||
| ExitMethods.cs:97:27:97:29 | - | ExitMethods.cs:97:27:97:29 | - | normal |
|
||||
| ExitMethods.cs:97:34:97:34 | 0 | ExitMethods.cs:97:34:97:34 | 0 | normal |
|
||||
| ExitMethods.cs:97:38:97:38 | 1 | ExitMethods.cs:97:38:97:38 | 1 | normal |
|
||||
| ExitMethods.cs:101:5:104:5 | {...} | ExitMethods.cs:102:9:102:28 | call to method IsTrue | throw(AssertFailedException) |
|
||||
| ExitMethods.cs:101:5:104:5 | {...} | ExitMethods.cs:103:13:103:17 | Int32 x = ... | normal |
|
||||
| ExitMethods.cs:102:9:102:28 | call to method IsTrue | ExitMethods.cs:102:9:102:28 | call to method IsTrue | throw(AssertFailedException) |
|
||||
| ExitMethods.cs:102:9:102:29 | ...; | ExitMethods.cs:102:9:102:28 | call to method IsTrue | throw(AssertFailedException) |
|
||||
| ExitMethods.cs:102:23:102:27 | false | ExitMethods.cs:102:23:102:27 | false | normal |
|
||||
| ExitMethods.cs:103:9:103:18 | ... ...; | ExitMethods.cs:103:13:103:17 | Int32 x = ... | normal |
|
||||
| ExitMethods.cs:103:13:103:13 | access to local variable x | ExitMethods.cs:103:13:103:13 | access to local variable x | normal |
|
||||
| ExitMethods.cs:103:13:103:17 | Int32 x = ... | ExitMethods.cs:103:13:103:17 | Int32 x = ... | normal |
|
||||
| ExitMethods.cs:103:17:103:17 | 0 | ExitMethods.cs:103:17:103:17 | 0 | normal |
|
||||
| ExitMethods.cs:107:5:110:5 | {...} | ExitMethods.cs:108:9:108:26 | call to method FailingAssertion | throw(AssertFailedException) |
|
||||
| ExitMethods.cs:107:5:110:5 | {...} | ExitMethods.cs:109:13:109:17 | Int32 x = ... | normal |
|
||||
| ExitMethods.cs:108:9:108:26 | call to method FailingAssertion | ExitMethods.cs:108:9:108:26 | call to method FailingAssertion | throw(AssertFailedException) |
|
||||
| ExitMethods.cs:108:9:108:26 | this access | ExitMethods.cs:108:9:108:26 | this access | normal |
|
||||
| ExitMethods.cs:108:9:108:27 | ...; | ExitMethods.cs:108:9:108:26 | call to method FailingAssertion | throw(AssertFailedException) |
|
||||
| ExitMethods.cs:109:9:109:18 | ... ...; | ExitMethods.cs:109:13:109:17 | Int32 x = ... | normal |
|
||||
| ExitMethods.cs:109:13:109:13 | access to local variable x | ExitMethods.cs:109:13:109:13 | access to local variable x | normal |
|
||||
| ExitMethods.cs:109:13:109:17 | Int32 x = ... | ExitMethods.cs:109:13:109:17 | Int32 x = ... | normal |
|
||||
| ExitMethods.cs:109:17:109:17 | 0 | ExitMethods.cs:109:17:109:17 | 0 | normal |
|
||||
| ExitMethods.cs:112:33:112:49 | call to method IsFalse | ExitMethods.cs:112:33:112:49 | call to method IsFalse | normal |
|
||||
| ExitMethods.cs:112:48:112:48 | access to parameter b | ExitMethods.cs:112:48:112:48 | access to parameter b | normal |
|
||||
| ExitMethods.cs:115:5:118:5 | {...} | ExitMethods.cs:116:9:116:25 | call to method AssertFalse | throw(AssertFailedException) |
|
||||
| ExitMethods.cs:115:5:118:5 | {...} | ExitMethods.cs:117:13:117:17 | Int32 x = ... | normal |
|
||||
| ExitMethods.cs:116:9:116:25 | call to method AssertFalse | ExitMethods.cs:116:9:116:25 | call to method AssertFalse | throw(AssertFailedException) |
|
||||
| ExitMethods.cs:116:9:116:25 | this access | ExitMethods.cs:116:9:116:25 | this access | normal |
|
||||
| ExitMethods.cs:116:9:116:26 | ...; | ExitMethods.cs:116:9:116:25 | call to method AssertFalse | throw(AssertFailedException) |
|
||||
| ExitMethods.cs:116:21:116:24 | true | ExitMethods.cs:116:21:116:24 | true | normal |
|
||||
| ExitMethods.cs:117:9:117:18 | ... ...; | ExitMethods.cs:117:13:117:17 | Int32 x = ... | normal |
|
||||
| ExitMethods.cs:117:13:117:13 | access to local variable x | ExitMethods.cs:117:13:117:13 | access to local variable x | normal |
|
||||
| ExitMethods.cs:117:13:117:17 | Int32 x = ... | ExitMethods.cs:117:13:117:17 | Int32 x = ... | normal |
|
||||
| ExitMethods.cs:117:17:117:17 | 0 | ExitMethods.cs:117:17:117:17 | 0 | normal |
|
||||
| Extensions.cs:6:5:8:5 | {...} | Extensions.cs:7:9:7:30 | return ...; | return |
|
||||
| Extensions.cs:7:9:7:30 | return ...; | Extensions.cs:7:9:7:30 | return ...; | return |
|
||||
| Extensions.cs:7:16:7:29 | call to method Parse | Extensions.cs:7:16:7:29 | call to method Parse | normal |
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import csharp
|
||||
import ControlFlow::Internal
|
||||
private import semmle.code.csharp.controlflow.Completion
|
||||
import Common
|
||||
|
||||
from ControlFlowElement cfe, Completion c
|
||||
from SourceControlFlowElement cfe, Completion c
|
||||
select cfe, last(cfe, c), c
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
using System;
|
||||
using System.Linq;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
||||
class ExitMethods
|
||||
{
|
||||
|
@ -68,6 +69,19 @@ class ExitMethods
|
|||
Environment.Exit(0);
|
||||
}
|
||||
|
||||
void ExitInTry()
|
||||
{
|
||||
try
|
||||
{
|
||||
Exit();
|
||||
}
|
||||
finally
|
||||
{
|
||||
// dead
|
||||
System.Console.WriteLine("");
|
||||
}
|
||||
}
|
||||
|
||||
void ApplicationExit()
|
||||
{
|
||||
System.Windows.Forms.Application.Exit();
|
||||
|
@ -82,12 +96,26 @@ class ExitMethods
|
|||
{
|
||||
return s.Contains('-') ? 0 : 1;
|
||||
}
|
||||
}
|
||||
|
||||
namespace System.Windows.Forms
|
||||
{
|
||||
public class Application
|
||||
public void FailingAssertion()
|
||||
{
|
||||
public static void Exit() { }
|
||||
Assert.IsTrue(false);
|
||||
var x = 0; // dead
|
||||
}
|
||||
|
||||
public void FailingAssertion2()
|
||||
{
|
||||
FailingAssertion();
|
||||
var x = 0; // dead
|
||||
}
|
||||
|
||||
void AssertFalse(bool b) => Assert.IsFalse(b);
|
||||
|
||||
public void FailingAssertion3()
|
||||
{
|
||||
AssertFalse(true);
|
||||
var x = 0; // dead
|
||||
}
|
||||
}
|
||||
|
||||
// semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Windows.cs ${testdir}/../../../resources/stubs/Microsoft.VisualStudio.TestTools.UnitTesting.cs
|
||||
|
|
|
@ -728,104 +728,128 @@
|
|||
| Conditions.cs:109:22:109:23 | "" | Conditions.cs:109:17:109:23 | ... + ... | semmle.label | successor |
|
||||
| Conditions.cs:110:9:110:17 | return ...; | Conditions.cs:102:12:102:13 | exit M8 | semmle.label | return |
|
||||
| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:110:9:110:17 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:6:10:6:11 | enter M1 | ExitMethods.cs:7:5:10:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:7:5:10:5 | {...} | ExitMethods.cs:8:9:8:25 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | ExitMethods.cs:9:9:9:15 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:8:9:8:25 | ...; | ExitMethods.cs:8:20:8:23 | true | semmle.label | successor |
|
||||
| ExitMethods.cs:8:20:8:23 | true | ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | semmle.label | successor |
|
||||
| ExitMethods.cs:9:9:9:15 | return ...; | ExitMethods.cs:6:10:6:11 | exit M1 | semmle.label | return |
|
||||
| ExitMethods.cs:12:10:12:11 | enter M2 | ExitMethods.cs:13:5:16:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:13:5:16:5 | {...} | ExitMethods.cs:14:9:14:26 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:14:9:14:25 | call to method ErrorMaybe | ExitMethods.cs:15:9:15:15 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:14:9:14:26 | ...; | ExitMethods.cs:14:20:14:24 | false | semmle.label | successor |
|
||||
| ExitMethods.cs:14:20:14:24 | false | ExitMethods.cs:14:9:14:25 | call to method ErrorMaybe | semmle.label | successor |
|
||||
| ExitMethods.cs:15:9:15:15 | return ...; | ExitMethods.cs:12:10:12:11 | exit M2 | semmle.label | return |
|
||||
| ExitMethods.cs:18:10:18:11 | enter M3 | ExitMethods.cs:19:5:22:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:19:5:22:5 | {...} | ExitMethods.cs:20:9:20:26 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:20:9:20:25 | call to method ErrorAlways | ExitMethods.cs:18:10:18:11 | exit M3 | semmle.label | exception(ArgumentException) |
|
||||
| ExitMethods.cs:20:9:20:25 | call to method ErrorAlways | ExitMethods.cs:18:10:18:11 | exit M3 | semmle.label | exception(Exception) |
|
||||
| ExitMethods.cs:20:9:20:26 | ...; | ExitMethods.cs:20:21:20:24 | true | semmle.label | successor |
|
||||
| ExitMethods.cs:20:21:20:24 | true | ExitMethods.cs:20:9:20:25 | call to method ErrorAlways | semmle.label | successor |
|
||||
| ExitMethods.cs:24:10:24:11 | enter M4 | ExitMethods.cs:25:5:28:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:25:5:28:5 | {...} | ExitMethods.cs:26:9:26:15 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:26:9:26:14 | call to method Exit | ExitMethods.cs:24:10:24:11 | exit M4 | semmle.label | return |
|
||||
| ExitMethods.cs:26:9:26:14 | this access | ExitMethods.cs:26:9:26:14 | call to method Exit | semmle.label | successor |
|
||||
| ExitMethods.cs:26:9:26:15 | ...; | ExitMethods.cs:26:9:26:14 | this access | semmle.label | successor |
|
||||
| ExitMethods.cs:30:10:30:11 | enter M5 | ExitMethods.cs:31:5:34:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:31:5:34:5 | {...} | ExitMethods.cs:32:9:32:26 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:32:9:32:25 | call to method ApplicationExit | ExitMethods.cs:30:10:30:11 | exit M5 | semmle.label | return |
|
||||
| ExitMethods.cs:32:9:32:25 | this access | ExitMethods.cs:32:9:32:25 | call to method ApplicationExit | semmle.label | successor |
|
||||
| ExitMethods.cs:32:9:32:26 | ...; | ExitMethods.cs:32:9:32:25 | this access | semmle.label | successor |
|
||||
| ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:37:5:50:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:37:5:50:5 | {...} | ExitMethods.cs:38:9:49:9 | try {...} ... | semmle.label | successor |
|
||||
| ExitMethods.cs:38:9:49:9 | try {...} ... | ExitMethods.cs:39:9:41:9 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:39:9:41:9 | {...} | ExitMethods.cs:40:13:40:31 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} | semmle.label | exception(ArgumentException) |
|
||||
| ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | semmle.label | exception(Exception) |
|
||||
| ExitMethods.cs:40:13:40:31 | ...; | ExitMethods.cs:40:25:40:29 | false | semmle.label | successor |
|
||||
| ExitMethods.cs:40:25:40:29 | false | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | semmle.label | successor |
|
||||
| ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} | ExitMethods.cs:43:9:45:9 | {...} | semmle.label | match |
|
||||
| ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:43:9:45:9 | {...} | semmle.label | match |
|
||||
| ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} | semmle.label | no-match |
|
||||
| ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:44:13:44:19 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:44:13:44:19 | return ...; | ExitMethods.cs:36:10:36:11 | exit M6 | semmle.label | return |
|
||||
| ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:47:9:49:9 | {...} | semmle.label | match |
|
||||
| ExitMethods.cs:47:9:49:9 | {...} | ExitMethods.cs:48:13:48:19 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:48:13:48:19 | return ...; | ExitMethods.cs:36:10:36:11 | exit M6 | semmle.label | return |
|
||||
| ExitMethods.cs:52:17:52:26 | enter ErrorMaybe | ExitMethods.cs:53:5:56:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:53:5:56:5 | {...} | ExitMethods.cs:54:9:55:34 | if (...) ... | semmle.label | successor |
|
||||
| ExitMethods.cs:54:9:55:34 | if (...) ... | ExitMethods.cs:54:13:54:13 | access to parameter b | semmle.label | successor |
|
||||
| ExitMethods.cs:54:13:54:13 | access to parameter b | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe | semmle.label | false |
|
||||
| ExitMethods.cs:54:13:54:13 | access to parameter b | ExitMethods.cs:55:19:55:33 | object creation of type Exception | semmle.label | true |
|
||||
| ExitMethods.cs:55:13:55:34 | throw ...; | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe | semmle.label | exception(Exception) |
|
||||
| ExitMethods.cs:55:19:55:33 | object creation of type Exception | ExitMethods.cs:55:13:55:34 | throw ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:58:17:58:27 | enter ErrorAlways | ExitMethods.cs:59:5:64:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:59:5:64:5 | {...} | ExitMethods.cs:60:9:63:45 | if (...) ... | semmle.label | successor |
|
||||
| ExitMethods.cs:60:9:63:45 | if (...) ... | ExitMethods.cs:60:13:60:13 | access to parameter b | semmle.label | successor |
|
||||
| ExitMethods.cs:60:13:60:13 | access to parameter b | ExitMethods.cs:61:19:61:33 | object creation of type Exception | semmle.label | true |
|
||||
| ExitMethods.cs:60:13:60:13 | access to parameter b | ExitMethods.cs:63:41:63:43 | "b" | semmle.label | false |
|
||||
| ExitMethods.cs:61:13:61:34 | throw ...; | ExitMethods.cs:58:17:58:27 | exit ErrorAlways | semmle.label | exception(Exception) |
|
||||
| ExitMethods.cs:61:19:61:33 | object creation of type Exception | ExitMethods.cs:61:13:61:34 | throw ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:63:13:63:45 | throw ...; | ExitMethods.cs:58:17:58:27 | exit ErrorAlways | semmle.label | exception(ArgumentException) |
|
||||
| ExitMethods.cs:63:19:63:44 | object creation of type ArgumentException | ExitMethods.cs:63:13:63:45 | throw ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:63:41:63:43 | "b" | ExitMethods.cs:63:19:63:44 | object creation of type ArgumentException | semmle.label | successor |
|
||||
| ExitMethods.cs:66:10:66:13 | enter Exit | ExitMethods.cs:67:5:69:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:67:5:69:5 | {...} | ExitMethods.cs:68:9:68:28 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:68:9:68:27 | call to method Exit | ExitMethods.cs:66:10:66:13 | exit Exit | semmle.label | return |
|
||||
| ExitMethods.cs:68:9:68:28 | ...; | ExitMethods.cs:68:26:68:26 | 0 | semmle.label | successor |
|
||||
| ExitMethods.cs:68:26:68:26 | 0 | ExitMethods.cs:68:9:68:27 | call to method Exit | semmle.label | successor |
|
||||
| ExitMethods.cs:71:10:71:24 | enter ApplicationExit | ExitMethods.cs:72:5:74:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:72:5:74:5 | {...} | ExitMethods.cs:73:9:73:48 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:73:9:73:47 | call to method Exit | ExitMethods.cs:71:10:71:24 | exit ApplicationExit | semmle.label | return |
|
||||
| ExitMethods.cs:73:9:73:48 | ...; | ExitMethods.cs:73:9:73:47 | call to method Exit | semmle.label | successor |
|
||||
| ExitMethods.cs:76:13:76:21 | enter ThrowExpr | ExitMethods.cs:77:5:79:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:77:5:79:5 | {...} | ExitMethods.cs:78:16:78:76 | ... ? ... : ... | semmle.label | successor |
|
||||
| ExitMethods.cs:78:9:78:77 | return ...; | ExitMethods.cs:76:13:76:21 | exit ThrowExpr | semmle.label | return |
|
||||
| ExitMethods.cs:78:16:78:20 | access to parameter input | ExitMethods.cs:78:25:78:25 | 0 | semmle.label | successor |
|
||||
| ExitMethods.cs:78:16:78:25 | ... != ... | ExitMethods.cs:78:29:78:29 | 1 | semmle.label | true |
|
||||
| ExitMethods.cs:78:16:78:25 | ... != ... | ExitMethods.cs:78:69:78:75 | "input" | semmle.label | false |
|
||||
| ExitMethods.cs:78:16:78:76 | ... ? ... : ... | ExitMethods.cs:78:16:78:20 | access to parameter input | semmle.label | successor |
|
||||
| ExitMethods.cs:78:25:78:25 | 0 | ExitMethods.cs:78:25:78:25 | (...) ... | semmle.label | successor |
|
||||
| ExitMethods.cs:78:25:78:25 | (...) ... | ExitMethods.cs:78:16:78:25 | ... != ... | semmle.label | successor |
|
||||
| ExitMethods.cs:78:29:78:29 | 1 | ExitMethods.cs:78:29:78:29 | (...) ... | semmle.label | successor |
|
||||
| ExitMethods.cs:78:29:78:29 | (...) ... | ExitMethods.cs:78:33:78:37 | access to parameter input | semmle.label | successor |
|
||||
| ExitMethods.cs:78:29:78:37 | ... / ... | ExitMethods.cs:78:9:78:77 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:78:33:78:37 | access to parameter input | ExitMethods.cs:78:29:78:37 | ... / ... | semmle.label | successor |
|
||||
| ExitMethods.cs:78:41:78:76 | throw ... | ExitMethods.cs:76:13:76:21 | exit ThrowExpr | semmle.label | exception(ArgumentException) |
|
||||
| ExitMethods.cs:78:47:78:76 | object creation of type ArgumentException | ExitMethods.cs:78:41:78:76 | throw ... | semmle.label | successor |
|
||||
| ExitMethods.cs:78:69:78:75 | "input" | ExitMethods.cs:78:47:78:76 | object creation of type ArgumentException | semmle.label | successor |
|
||||
| ExitMethods.cs:81:16:81:34 | enter ExtensionMethodCall | ExitMethods.cs:82:5:84:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:82:5:84:5 | {...} | ExitMethods.cs:83:16:83:38 | ... ? ... : ... | semmle.label | successor |
|
||||
| ExitMethods.cs:83:9:83:39 | return ...; | ExitMethods.cs:81:16:81:34 | exit ExtensionMethodCall | semmle.label | return |
|
||||
| ExitMethods.cs:83:16:83:16 | access to parameter s | ExitMethods.cs:83:27:83:29 | - | semmle.label | successor |
|
||||
| ExitMethods.cs:83:16:83:30 | call to method Contains | ExitMethods.cs:83:34:83:34 | 0 | semmle.label | true |
|
||||
| ExitMethods.cs:83:16:83:30 | call to method Contains | ExitMethods.cs:83:38:83:38 | 1 | semmle.label | false |
|
||||
| ExitMethods.cs:83:16:83:38 | ... ? ... : ... | ExitMethods.cs:83:16:83:16 | access to parameter s | semmle.label | successor |
|
||||
| ExitMethods.cs:83:27:83:29 | - | ExitMethods.cs:83:16:83:30 | call to method Contains | semmle.label | successor |
|
||||
| ExitMethods.cs:83:34:83:34 | 0 | ExitMethods.cs:83:9:83:39 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:83:38:83:38 | 1 | ExitMethods.cs:83:9:83:39 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:91:28:91:31 | enter Exit | ExitMethods.cs:91:35:91:37 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:91:35:91:37 | {...} | ExitMethods.cs:91:28:91:31 | exit Exit | semmle.label | successor |
|
||||
| ExitMethods.cs:7:10:7:11 | enter M1 | ExitMethods.cs:8:5:11:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:8:5:11:5 | {...} | ExitMethods.cs:9:9:9:25 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:9:9:9:24 | call to method ErrorMaybe | ExitMethods.cs:10:9:10:15 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:9:9:9:25 | ...; | ExitMethods.cs:9:20:9:23 | true | semmle.label | successor |
|
||||
| ExitMethods.cs:9:20:9:23 | true | ExitMethods.cs:9:9:9:24 | call to method ErrorMaybe | semmle.label | successor |
|
||||
| ExitMethods.cs:10:9:10:15 | return ...; | ExitMethods.cs:7:10:7:11 | exit M1 | semmle.label | return |
|
||||
| ExitMethods.cs:13:10:13:11 | enter M2 | ExitMethods.cs:14:5:17:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:14:5:17:5 | {...} | ExitMethods.cs:15:9:15:26 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:15:9:15:25 | call to method ErrorMaybe | ExitMethods.cs:16:9:16:15 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:15:9:15:26 | ...; | ExitMethods.cs:15:20:15:24 | false | semmle.label | successor |
|
||||
| ExitMethods.cs:15:20:15:24 | false | ExitMethods.cs:15:9:15:25 | call to method ErrorMaybe | semmle.label | successor |
|
||||
| ExitMethods.cs:16:9:16:15 | return ...; | ExitMethods.cs:13:10:13:11 | exit M2 | semmle.label | return |
|
||||
| ExitMethods.cs:19:10:19:11 | enter M3 | ExitMethods.cs:20:5:23:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:20:5:23:5 | {...} | ExitMethods.cs:21:9:21:26 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:21:9:21:25 | call to method ErrorAlways | ExitMethods.cs:19:10:19:11 | exit M3 | semmle.label | exception(ArgumentException) |
|
||||
| ExitMethods.cs:21:9:21:25 | call to method ErrorAlways | ExitMethods.cs:19:10:19:11 | exit M3 | semmle.label | exception(Exception) |
|
||||
| ExitMethods.cs:21:9:21:26 | ...; | ExitMethods.cs:21:21:21:24 | true | semmle.label | successor |
|
||||
| ExitMethods.cs:21:21:21:24 | true | ExitMethods.cs:21:9:21:25 | call to method ErrorAlways | semmle.label | successor |
|
||||
| ExitMethods.cs:25:10:25:11 | enter M4 | ExitMethods.cs:26:5:29:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:26:5:29:5 | {...} | ExitMethods.cs:27:9:27:15 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:27:9:27:14 | call to method Exit | ExitMethods.cs:25:10:25:11 | exit M4 | semmle.label | exit |
|
||||
| ExitMethods.cs:27:9:27:14 | this access | ExitMethods.cs:27:9:27:14 | call to method Exit | semmle.label | successor |
|
||||
| ExitMethods.cs:27:9:27:15 | ...; | ExitMethods.cs:27:9:27:14 | this access | semmle.label | successor |
|
||||
| ExitMethods.cs:31:10:31:11 | enter M5 | ExitMethods.cs:32:5:35:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:32:5:35:5 | {...} | ExitMethods.cs:33:9:33:26 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:33:9:33:25 | call to method ApplicationExit | ExitMethods.cs:31:10:31:11 | exit M5 | semmle.label | exit |
|
||||
| ExitMethods.cs:33:9:33:25 | this access | ExitMethods.cs:33:9:33:25 | call to method ApplicationExit | semmle.label | successor |
|
||||
| ExitMethods.cs:33:9:33:26 | ...; | ExitMethods.cs:33:9:33:25 | this access | semmle.label | successor |
|
||||
| ExitMethods.cs:37:10:37:11 | enter M6 | ExitMethods.cs:38:5:51:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:38:5:51:5 | {...} | ExitMethods.cs:39:9:50:9 | try {...} ... | semmle.label | successor |
|
||||
| ExitMethods.cs:39:9:50:9 | try {...} ... | ExitMethods.cs:40:9:42:9 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:40:9:42:9 | {...} | ExitMethods.cs:41:13:41:31 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:41:13:41:30 | call to method ErrorAlways | ExitMethods.cs:43:9:46:9 | [exception: ArgumentException] catch (...) {...} | semmle.label | exception(ArgumentException) |
|
||||
| ExitMethods.cs:41:13:41:30 | call to method ErrorAlways | ExitMethods.cs:43:9:46:9 | [exception: Exception] catch (...) {...} | semmle.label | exception(Exception) |
|
||||
| ExitMethods.cs:41:13:41:31 | ...; | ExitMethods.cs:41:25:41:29 | false | semmle.label | successor |
|
||||
| ExitMethods.cs:41:25:41:29 | false | ExitMethods.cs:41:13:41:30 | call to method ErrorAlways | semmle.label | successor |
|
||||
| ExitMethods.cs:43:9:46:9 | [exception: ArgumentException] catch (...) {...} | ExitMethods.cs:44:9:46:9 | {...} | semmle.label | match |
|
||||
| ExitMethods.cs:43:9:46:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:44:9:46:9 | {...} | semmle.label | match |
|
||||
| ExitMethods.cs:43:9:46:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:47:9:50:9 | [exception: Exception] catch (...) {...} | semmle.label | no-match |
|
||||
| ExitMethods.cs:44:9:46:9 | {...} | ExitMethods.cs:45:13:45:19 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:45:13:45:19 | return ...; | ExitMethods.cs:37:10:37:11 | exit M6 | semmle.label | return |
|
||||
| ExitMethods.cs:47:9:50:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:48:9:50:9 | {...} | semmle.label | match |
|
||||
| ExitMethods.cs:48:9:50:9 | {...} | ExitMethods.cs:49:13:49:19 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:49:13:49:19 | return ...; | ExitMethods.cs:37:10:37:11 | exit M6 | semmle.label | return |
|
||||
| ExitMethods.cs:53:17:53:26 | enter ErrorMaybe | ExitMethods.cs:54:5:57:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:54:5:57:5 | {...} | ExitMethods.cs:55:9:56:34 | if (...) ... | semmle.label | successor |
|
||||
| ExitMethods.cs:55:9:56:34 | if (...) ... | ExitMethods.cs:55:13:55:13 | access to parameter b | semmle.label | successor |
|
||||
| ExitMethods.cs:55:13:55:13 | access to parameter b | ExitMethods.cs:53:17:53:26 | exit ErrorMaybe | semmle.label | false |
|
||||
| ExitMethods.cs:55:13:55:13 | access to parameter b | ExitMethods.cs:56:19:56:33 | object creation of type Exception | semmle.label | true |
|
||||
| ExitMethods.cs:56:13:56:34 | throw ...; | ExitMethods.cs:53:17:53:26 | exit ErrorMaybe | semmle.label | exception(Exception) |
|
||||
| ExitMethods.cs:56:19:56:33 | object creation of type Exception | ExitMethods.cs:56:13:56:34 | throw ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:59:17:59:27 | enter ErrorAlways | ExitMethods.cs:60:5:65:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:60:5:65:5 | {...} | ExitMethods.cs:61:9:64:45 | if (...) ... | semmle.label | successor |
|
||||
| ExitMethods.cs:61:9:64:45 | if (...) ... | ExitMethods.cs:61:13:61:13 | access to parameter b | semmle.label | successor |
|
||||
| ExitMethods.cs:61:13:61:13 | access to parameter b | ExitMethods.cs:62:19:62:33 | object creation of type Exception | semmle.label | true |
|
||||
| ExitMethods.cs:61:13:61:13 | access to parameter b | ExitMethods.cs:64:41:64:43 | "b" | semmle.label | false |
|
||||
| ExitMethods.cs:62:13:62:34 | throw ...; | ExitMethods.cs:59:17:59:27 | exit ErrorAlways | semmle.label | exception(Exception) |
|
||||
| ExitMethods.cs:62:19:62:33 | object creation of type Exception | ExitMethods.cs:62:13:62:34 | throw ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:64:13:64:45 | throw ...; | ExitMethods.cs:59:17:59:27 | exit ErrorAlways | semmle.label | exception(ArgumentException) |
|
||||
| ExitMethods.cs:64:19:64:44 | object creation of type ArgumentException | ExitMethods.cs:64:13:64:45 | throw ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:64:41:64:43 | "b" | ExitMethods.cs:64:19:64:44 | object creation of type ArgumentException | semmle.label | successor |
|
||||
| ExitMethods.cs:67:10:67:13 | enter Exit | ExitMethods.cs:68:5:70:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:68:5:70:5 | {...} | ExitMethods.cs:69:9:69:28 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:69:9:69:27 | call to method Exit | ExitMethods.cs:67:10:67:13 | exit Exit | semmle.label | exit |
|
||||
| ExitMethods.cs:69:9:69:28 | ...; | ExitMethods.cs:69:26:69:26 | 0 | semmle.label | successor |
|
||||
| ExitMethods.cs:69:26:69:26 | 0 | ExitMethods.cs:69:9:69:27 | call to method Exit | semmle.label | successor |
|
||||
| ExitMethods.cs:72:10:72:18 | enter ExitInTry | ExitMethods.cs:73:5:83:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:73:5:83:5 | {...} | ExitMethods.cs:74:9:82:9 | try {...} ... | semmle.label | successor |
|
||||
| ExitMethods.cs:74:9:82:9 | try {...} ... | ExitMethods.cs:75:9:77:9 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:75:9:77:9 | {...} | ExitMethods.cs:76:13:76:19 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:76:13:76:18 | call to method Exit | ExitMethods.cs:72:10:72:18 | exit ExitInTry | semmle.label | exit |
|
||||
| ExitMethods.cs:76:13:76:18 | this access | ExitMethods.cs:76:13:76:18 | call to method Exit | semmle.label | successor |
|
||||
| ExitMethods.cs:76:13:76:19 | ...; | ExitMethods.cs:76:13:76:18 | this access | semmle.label | successor |
|
||||
| ExitMethods.cs:85:10:85:24 | enter ApplicationExit | ExitMethods.cs:86:5:88:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:86:5:88:5 | {...} | ExitMethods.cs:87:9:87:48 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:87:9:87:47 | call to method Exit | ExitMethods.cs:85:10:85:24 | exit ApplicationExit | semmle.label | exit |
|
||||
| ExitMethods.cs:87:9:87:48 | ...; | ExitMethods.cs:87:9:87:47 | call to method Exit | semmle.label | successor |
|
||||
| ExitMethods.cs:90:13:90:21 | enter ThrowExpr | ExitMethods.cs:91:5:93:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:91:5:93:5 | {...} | ExitMethods.cs:92:16:92:76 | ... ? ... : ... | semmle.label | successor |
|
||||
| ExitMethods.cs:92:9:92:77 | return ...; | ExitMethods.cs:90:13:90:21 | exit ThrowExpr | semmle.label | return |
|
||||
| ExitMethods.cs:92:16:92:20 | access to parameter input | ExitMethods.cs:92:25:92:25 | 0 | semmle.label | successor |
|
||||
| ExitMethods.cs:92:16:92:25 | ... != ... | ExitMethods.cs:92:29:92:29 | 1 | semmle.label | true |
|
||||
| ExitMethods.cs:92:16:92:25 | ... != ... | ExitMethods.cs:92:69:92:75 | "input" | semmle.label | false |
|
||||
| ExitMethods.cs:92:16:92:76 | ... ? ... : ... | ExitMethods.cs:92:16:92:20 | access to parameter input | semmle.label | successor |
|
||||
| ExitMethods.cs:92:25:92:25 | 0 | ExitMethods.cs:92:25:92:25 | (...) ... | semmle.label | successor |
|
||||
| ExitMethods.cs:92:25:92:25 | (...) ... | ExitMethods.cs:92:16:92:25 | ... != ... | semmle.label | successor |
|
||||
| ExitMethods.cs:92:29:92:29 | 1 | ExitMethods.cs:92:29:92:29 | (...) ... | semmle.label | successor |
|
||||
| ExitMethods.cs:92:29:92:29 | (...) ... | ExitMethods.cs:92:33:92:37 | access to parameter input | semmle.label | successor |
|
||||
| ExitMethods.cs:92:29:92:37 | ... / ... | ExitMethods.cs:92:9:92:77 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:92:33:92:37 | access to parameter input | ExitMethods.cs:92:29:92:37 | ... / ... | semmle.label | successor |
|
||||
| ExitMethods.cs:92:41:92:76 | throw ... | ExitMethods.cs:90:13:90:21 | exit ThrowExpr | semmle.label | exception(ArgumentException) |
|
||||
| ExitMethods.cs:92:47:92:76 | object creation of type ArgumentException | ExitMethods.cs:92:41:92:76 | throw ... | semmle.label | successor |
|
||||
| ExitMethods.cs:92:69:92:75 | "input" | ExitMethods.cs:92:47:92:76 | object creation of type ArgumentException | semmle.label | successor |
|
||||
| ExitMethods.cs:95:16:95:34 | enter ExtensionMethodCall | ExitMethods.cs:96:5:98:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:96:5:98:5 | {...} | ExitMethods.cs:97:16:97:38 | ... ? ... : ... | semmle.label | successor |
|
||||
| ExitMethods.cs:97:9:97:39 | return ...; | ExitMethods.cs:95:16:95:34 | exit ExtensionMethodCall | semmle.label | return |
|
||||
| ExitMethods.cs:97:16:97:16 | access to parameter s | ExitMethods.cs:97:27:97:29 | - | semmle.label | successor |
|
||||
| ExitMethods.cs:97:16:97:30 | call to method Contains | ExitMethods.cs:97:34:97:34 | 0 | semmle.label | true |
|
||||
| ExitMethods.cs:97:16:97:30 | call to method Contains | ExitMethods.cs:97:38:97:38 | 1 | semmle.label | false |
|
||||
| ExitMethods.cs:97:16:97:38 | ... ? ... : ... | ExitMethods.cs:97:16:97:16 | access to parameter s | semmle.label | successor |
|
||||
| ExitMethods.cs:97:27:97:29 | - | ExitMethods.cs:97:16:97:30 | call to method Contains | semmle.label | successor |
|
||||
| ExitMethods.cs:97:34:97:34 | 0 | ExitMethods.cs:97:9:97:39 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:97:38:97:38 | 1 | ExitMethods.cs:97:9:97:39 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:100:17:100:32 | enter FailingAssertion | ExitMethods.cs:101:5:104:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:101:5:104:5 | {...} | ExitMethods.cs:102:9:102:29 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:102:9:102:28 | call to method IsTrue | ExitMethods.cs:100:17:100:32 | exit FailingAssertion | semmle.label | exception(AssertFailedException) |
|
||||
| ExitMethods.cs:102:9:102:29 | ...; | ExitMethods.cs:102:23:102:27 | false | semmle.label | successor |
|
||||
| ExitMethods.cs:102:23:102:27 | false | ExitMethods.cs:102:9:102:28 | call to method IsTrue | semmle.label | successor |
|
||||
| ExitMethods.cs:106:17:106:33 | enter FailingAssertion2 | ExitMethods.cs:107:5:110:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:107:5:110:5 | {...} | ExitMethods.cs:108:9:108:27 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:108:9:108:26 | call to method FailingAssertion | ExitMethods.cs:106:17:106:33 | exit FailingAssertion2 | semmle.label | exception(AssertFailedException) |
|
||||
| ExitMethods.cs:108:9:108:26 | this access | ExitMethods.cs:108:9:108:26 | call to method FailingAssertion | semmle.label | successor |
|
||||
| ExitMethods.cs:108:9:108:27 | ...; | ExitMethods.cs:108:9:108:26 | this access | semmle.label | successor |
|
||||
| ExitMethods.cs:112:10:112:20 | enter AssertFalse | ExitMethods.cs:112:48:112:48 | access to parameter b | semmle.label | successor |
|
||||
| ExitMethods.cs:112:33:112:49 | call to method IsFalse | ExitMethods.cs:112:10:112:20 | exit AssertFalse | semmle.label | successor |
|
||||
| ExitMethods.cs:112:48:112:48 | access to parameter b | ExitMethods.cs:112:33:112:49 | call to method IsFalse | semmle.label | successor |
|
||||
| ExitMethods.cs:114:17:114:33 | enter FailingAssertion3 | ExitMethods.cs:115:5:118:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:115:5:118:5 | {...} | ExitMethods.cs:116:9:116:26 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:116:9:116:25 | call to method AssertFalse | ExitMethods.cs:114:17:114:33 | exit FailingAssertion3 | semmle.label | exception(AssertFailedException) |
|
||||
| ExitMethods.cs:116:9:116:25 | this access | ExitMethods.cs:116:21:116:24 | true | semmle.label | successor |
|
||||
| ExitMethods.cs:116:9:116:26 | ...; | ExitMethods.cs:116:9:116:25 | this access | semmle.label | successor |
|
||||
| ExitMethods.cs:116:21:116:24 | true | ExitMethods.cs:116:9:116:25 | call to method AssertFalse | semmle.label | successor |
|
||||
| Extensions.cs:5:23:5:29 | enter ToInt32 | Extensions.cs:6:5:8:5 | {...} | semmle.label | successor |
|
||||
| Extensions.cs:6:5:8:5 | {...} | Extensions.cs:7:28:7:28 | access to parameter s | semmle.label | successor |
|
||||
| Extensions.cs:7:9:7:30 | return ...; | Extensions.cs:5:23:5:29 | exit ToInt32 | semmle.label | return |
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import csharp
|
||||
import Common
|
||||
|
||||
query predicate edges(ControlFlow::Node node, ControlFlow::Node successor, string attr, string val) {
|
||||
query predicate edges(SourceControlFlowNode node, SourceControlFlowNode successor, string attr, string val) {
|
||||
exists(ControlFlow::SuccessorType t |
|
||||
successor = node.getASuccessorByType(t) |
|
||||
attr = "semmle.label" and
|
||||
|
|
|
@ -1,19 +1,6 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Microsoft.VisualStudio.TestTools.UnitTesting
|
||||
{
|
||||
class TestClassAttribute : Attribute
|
||||
{
|
||||
public TestClassAttribute() { }
|
||||
}
|
||||
|
||||
class TestMethodAttribute : Attribute
|
||||
{
|
||||
public TestMethodAttribute() { }
|
||||
}
|
||||
}
|
||||
|
||||
namespace VisualStudioTests
|
||||
{
|
||||
class TestMethodAttribute : Attribute { } // fake
|
||||
|
@ -37,3 +24,5 @@ namespace VisualStudioTests
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// semmle-extractor-options: ${testdir}/../../../resources/stubs/Microsoft.VisualStudio.TestTools.UnitTesting.cs
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
| VisualStudio.cs:22:11:22:21 | MyTestSuite | TestClass | VSTestClass |
|
||||
| VisualStudio.cs:25:21:25:25 | Test1 | TestMethod | InstanceCallable |
|
||||
| VisualStudio.cs:25:21:25:25 | Test1 | TestMethod | VSTestMethod |
|
||||
| VisualStudio.cs:30:21:30:25 | Test2 | TestMethod | InstanceCallable |
|
||||
| VisualStudio.cs:30:21:30:25 | Test2 | TestMethod | VSTestMethod |
|
||||
| VisualStudio.cs:9:11:9:21 | MyTestSuite | TestClass | VSTestClass |
|
||||
| VisualStudio.cs:12:21:12:25 | Test1 | TestMethod | InstanceCallable |
|
||||
| VisualStudio.cs:12:21:12:25 | Test1 | TestMethod | VSTestMethod |
|
||||
| VisualStudio.cs:17:21:17:25 | Test2 | TestMethod | InstanceCallable |
|
||||
| VisualStudio.cs:17:21:17:25 | Test2 | TestMethod | VSTestMethod |
|
||||
| XUnit.cs:22:11:22:21 | MyTestSuite | TestClass | XUnitTestClass |
|
||||
| XUnit.cs:25:21:25:25 | Test1 | TestMethod | InstanceCallable |
|
||||
| XUnit.cs:25:21:25:25 | Test1 | TestMethod | XUnitTestMethod |
|
||||
|
|
|
@ -1,19 +1,6 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Microsoft.VisualStudio.TestTools.UnitTesting
|
||||
{
|
||||
class TestClassAttribute : Attribute
|
||||
{
|
||||
public TestClassAttribute() { }
|
||||
}
|
||||
|
||||
class TestMethodAttribute : Attribute
|
||||
{
|
||||
public TestMethodAttribute() { }
|
||||
}
|
||||
}
|
||||
|
||||
namespace VisualStudioTests
|
||||
{
|
||||
class TestMethodAttribute : Attribute { } // fake
|
||||
|
@ -37,3 +24,5 @@ namespace VisualStudioTests
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// semmle-extractor-options: ${testdir}/../../../resources/stubs/Microsoft.VisualStudio.TestTools.UnitTesting.cs
|
||||
|
|
|
@ -86,19 +86,6 @@ public struct S
|
|||
class C { } // not dead
|
||||
}
|
||||
|
||||
namespace Microsoft.VisualStudio.TestTools.UnitTesting
|
||||
{
|
||||
class TestClassAttribute : Attribute
|
||||
{
|
||||
public TestClassAttribute() { }
|
||||
}
|
||||
|
||||
class TestInitializeAttribute : Attribute
|
||||
{
|
||||
public TestInitializeAttribute() { }
|
||||
}
|
||||
}
|
||||
|
||||
[Microsoft.VisualStudio.TestTools.UnitTesting.TestClass]
|
||||
public class VisualStudioTests
|
||||
{
|
||||
|
@ -106,4 +93,4 @@ public class VisualStudioTests
|
|||
public void Setup() { } // not dead
|
||||
}
|
||||
|
||||
// semmle-extractor-options: /r:System.Dynamic.Runtime.dll /r:System.Linq.Expressions.dll
|
||||
// semmle-extractor-options: /r:System.Dynamic.Runtime.dll /r:System.Linq.Expressions.dll ${testdir}/../../../resources/stubs/Microsoft.VisualStudio.TestTools.UnitTesting.cs
|
||||
|
|
|
@ -2,17 +2,6 @@ using System;
|
|||
using System.Diagnostics;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
||||
namespace Microsoft.VisualStudio.TestTools.UnitTesting
|
||||
{
|
||||
public static class Assert
|
||||
{
|
||||
public static void IsNull(object o) { }
|
||||
public static void IsNotNull(object o) { }
|
||||
public static void IsTrue(bool b) { }
|
||||
public static void IsFalse(bool b) { }
|
||||
}
|
||||
}
|
||||
|
||||
class AssertTests
|
||||
{
|
||||
void Fn()
|
||||
|
@ -40,3 +29,5 @@ class AssertTests
|
|||
Console.WriteLine(s.Length);
|
||||
}
|
||||
}
|
||||
|
||||
// semmle-extractor-options: ${testdir}/../../resources/stubs/Microsoft.VisualStudio.TestTools.UnitTesting.cs
|
||||
|
|
|
@ -12,6 +12,6 @@
|
|||
| A.cs:194:27:194:36 | access to local variable methodcall | Variable $@ is always null here. | A.cs:189:16:189:25 | methodcall | methodcall |
|
||||
| A.cs:247:31:247:44 | access to local variable eq_call_always | Variable $@ is always null here. | A.cs:241:11:241:24 | eq_call_always | eq_call_always |
|
||||
| A.cs:258:31:258:45 | access to local variable neq_call_always | Variable $@ is always null here. | A.cs:244:11:244:25 | neq_call_always | neq_call_always |
|
||||
| Assert.cs:25:27:25:27 | access to local variable s | Variable $@ is always null here. | Assert.cs:20:16:20:16 | s | s |
|
||||
| Assert.cs:31:27:31:27 | access to local variable s | Variable $@ is always null here. | Assert.cs:20:16:20:16 | s | s |
|
||||
| Assert.cs:37:27:37:27 | access to local variable s | Variable $@ is always null here. | Assert.cs:20:16:20:16 | s | s |
|
||||
| Assert.cs:14:27:14:27 | access to local variable s | Variable $@ is always null here. | Assert.cs:9:16:9:16 | s | s |
|
||||
| Assert.cs:20:27:20:27 | access to local variable s | Variable $@ is always null here. | Assert.cs:9:16:9:16 | s | s |
|
||||
| Assert.cs:26:27:26:27 | access to local variable s | Variable $@ is always null here. | Assert.cs:9:16:9:16 | s | s |
|
||||
|
|
|
@ -2,19 +2,6 @@ using System;
|
|||
using System.Security.Cryptography;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
||||
namespace Microsoft.VisualStudio.TestTools.UnitTesting
|
||||
{
|
||||
class TestClassAttribute : Attribute
|
||||
{
|
||||
public TestClassAttribute() { }
|
||||
}
|
||||
|
||||
class TestMethodAttribute : Attribute
|
||||
{
|
||||
public TestMethodAttribute() { }
|
||||
}
|
||||
}
|
||||
|
||||
[TestClass]
|
||||
public class InsecureRandomnessTest
|
||||
{
|
||||
|
@ -26,3 +13,5 @@ public class InsecureRandomnessTest
|
|||
Random r = new Random();
|
||||
}
|
||||
}
|
||||
|
||||
// semmle-extractor-options: ${testdir}/../../../resources/stubs/Microsoft.VisualStudio.TestTools.UnitTesting.cs
|
||||
|
|
|
@ -5,4 +5,4 @@
|
|||
| HardcodedCredentials.cs:53:13:53:24 | "myPa55word" | The hard-coded value "myPa55word" flows to the $@ parameter in $@. | HardcodedCredentials.cs:53:13:53:24 | "myPa55word" | password | HardcodedCredentials.cs:51:33:53:25 | object creation of type X509Certificate2 | object creation of type X509Certificate2 |
|
||||
| HardcodedCredentials.cs:76:31:76:42 | "myusername" | The hard-coded value "myusername" flows to the $@ parameter in $@. | HardcodedCredentials.cs:76:31:76:42 | "myusername" | username | HardcodedCredentials.cs:76:9:76:57 | call to method CreateUser | call to method CreateUser |
|
||||
| HardcodedCredentials.cs:76:45:76:56 | "mypassword" | The hard-coded value "mypassword" flows to the $@ parameter in $@. | HardcodedCredentials.cs:76:45:76:56 | "mypassword" | password | HardcodedCredentials.cs:76:9:76:57 | call to method CreateUser | call to method CreateUser |
|
||||
| TestHardcodedCredentials.cs:39:19:39:28 | "username" | The hard-coded value "username" flows to the $@ parameter in $@. | TestHardcodedCredentials.cs:39:19:39:28 | "username" | name | TestHardcodedCredentials.cs:37:31:51:13 | object creation of type MembershipUser | object creation of type MembershipUser |
|
||||
| TestHardcodedCredentials.cs:26:19:26:28 | "username" | The hard-coded value "username" flows to the $@ parameter in $@. | TestHardcodedCredentials.cs:26:19:26:28 | "username" | name | TestHardcodedCredentials.cs:24:31:38:13 | object creation of type MembershipUser | object creation of type MembershipUser |
|
||||
|
|
|
@ -2,19 +2,6 @@ using System;
|
|||
using System.Web.Security;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
||||
namespace Microsoft.VisualStudio.TestTools.UnitTesting
|
||||
{
|
||||
class TestClassAttribute : Attribute
|
||||
{
|
||||
public TestClassAttribute() { }
|
||||
}
|
||||
|
||||
class TestMethodAttribute : Attribute
|
||||
{
|
||||
public TestMethodAttribute() { }
|
||||
}
|
||||
}
|
||||
|
||||
namespace Moq.Language
|
||||
{
|
||||
class TestReturn
|
||||
|
@ -69,3 +56,5 @@ public class HardCodedCredentialsTest
|
|||
Moq.Language.TestReturn.Returns(() => mockUser);
|
||||
}
|
||||
}
|
||||
|
||||
// semmle-extractor-options: ${testdir}/../../../resources/stubs/Microsoft.VisualStudio.TestTools.UnitTesting.cs
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
using System;
|
||||
|
||||
namespace Microsoft.VisualStudio.TestTools.UnitTesting
|
||||
{
|
||||
public static class Assert
|
||||
{
|
||||
public static void IsNull(object o) { }
|
||||
public static void IsNotNull(object o) { }
|
||||
public static void IsTrue(bool b) { }
|
||||
public static void IsFalse(bool b) { }
|
||||
}
|
||||
|
||||
public class AssertFailedException : Exception { }
|
||||
|
||||
public class TestClassAttribute : Attribute
|
||||
{
|
||||
public TestClassAttribute() { }
|
||||
}
|
||||
|
||||
public class TestMethodAttribute : Attribute
|
||||
{
|
||||
public TestMethodAttribute() { }
|
||||
}
|
||||
|
||||
public class TestInitializeAttribute : Attribute
|
||||
{
|
||||
public TestInitializeAttribute() { }
|
||||
}
|
||||
}
|
|
@ -10,4 +10,9 @@ namespace System.Windows.Forms
|
|||
{
|
||||
public static void Show(string msg, string title) { }
|
||||
}
|
||||
|
||||
public class Application
|
||||
{
|
||||
public static void Exit() { }
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче