Commit 5d435450 authored by Paff's avatar Paff

bug fixing caused by running example

tests 
parent 166f2d4e
......@@ -24,7 +24,7 @@ import secarc.prettyprint.MontiSecArcPrettyPrintWorkflow;
* @version $Revision$, $Date$
*
*/
public final class MontiSecArcAnalysis extends MontiSecArc {
public final class MontiSecArcAnalysis extends MontiSecArcLanguage {
/**
* Factory method for {@link MontiSecArcAnalysis}.
......
......@@ -23,7 +23,7 @@ import secarc.ets.transform.trustlevel.PreAnalysisTrustlevelTransformationWorkfl
* @version $Revision$, $Date$
*
*/
public final class MontiSecArcPreAnalysis extends MontiSecArc {
public final class MontiSecArcPreAnalysis extends MontiSecArcLanguage {
/**
* Factory method for {@link MontiSecArcPreAnalysis}.
......
......@@ -34,7 +34,7 @@ public final class AnalysisHelper {
STEntry element = null;
if(iterator.hasNext()) {
while(iterator.hasNext()) {
element = iterator.next().getArchitectureElement();
if(element instanceof ConnectorEntry) {
return (ConnectorEntry) element;
......
......@@ -2,6 +2,7 @@ package secarc.ets.analysis.checker;
import secarc.ets.entries.SecComponentEntry;
import mc.umlp.arcd._ast.ASTArcComponent;
import interfaces2.helper.EntryLoadingErrorException;
import interfaces2.resolvers.AmbigousException;
/**
......@@ -27,7 +28,8 @@ public interface ISecAnalysisComponentChecker {
* @param advanced detailness of output
* @return factor of analysis
* @throws AmbigousException
* @throws EntryLoadingErrorException
*/
int check(ASTArcComponent node, SecComponentEntry entry, boolean advanced) throws AmbigousException;
int check(ASTArcComponent node, SecComponentEntry entry, boolean advanced) throws AmbigousException, EntryLoadingErrorException;
}
......@@ -87,7 +87,8 @@ public class EncryptedPathEndInLowTrustlevel extends DerivedTrustlevel implement
boolean encrypted = false;
//Boolean for unencrypted element
boolean unencryted = false;
//only new component, if a new connector is found
boolean newComponent = false;
//Trustlevel of the found componet
String trustlevel = "-2";
int trustlevelCompare = -1;
......@@ -104,6 +105,8 @@ public class EncryptedPathEndInLowTrustlevel extends DerivedTrustlevel implement
if(element instanceof SecConnectorEntry) {
newComponent = true;
if(((SecConnectorEntry) element).isEncrypted()) {
encrypted = true;
}
......@@ -118,11 +121,12 @@ public class EncryptedPathEndInLowTrustlevel extends DerivedTrustlevel implement
}
//Save subcomponent for trustlevel
if(element instanceof SecComponentEntry) {
if(element instanceof SecComponentEntry && newComponent) {
lastComponent = ((SecComponentEntry) element);
newComponent = false;
}
//New path starts
//New path starts or next iteration for breath first search starting with other elements
if(element.equals(entry) || !iterator.hasNext()) {
//Check if info is needed
if(!path.isEmpty()) {
......@@ -131,7 +135,7 @@ public class EncryptedPathEndInLowTrustlevel extends DerivedTrustlevel implement
trustlevel = "-2";
trustlevelCompare = -1;
//component has a trustlevel
if(lastComponent.getTrustlevel().isPresent()) {
if(lastComponent != null && lastComponent.getTrustlevel().isPresent()) {
trustlevel = CoCoHelper.getTrustlevelAsString(lastComponent);
trustlevelCompare = CoCoHelper.getTrustlevelAsInteger(lastComponent);
......@@ -139,10 +143,10 @@ public class EncryptedPathEndInLowTrustlevel extends DerivedTrustlevel implement
//Trustlevel of supercomponent
superComponentEntry = getDerivedTrustlevel((ASTArcComponent) lastComponent.getBestKnownVersion().getNode());
//If no trustlevel in supercomponent exists, take the default trustlevel of the environment
if(superComponentEntry.getTrustlevel().get() == null) {
trustlevelSuperComponentCompare = -1;
} else {
if(superComponentEntry != null && superComponentEntry.getTrustlevel().isPresent()) {
trustlevelSuperComponentCompare = CoCoHelper.getTrustlevelAsInteger(superComponentEntry);
} else {
trustlevelSuperComponentCompare = -1;
}
} else {
......@@ -194,7 +198,7 @@ public class EncryptedPathEndInLowTrustlevel extends DerivedTrustlevel implement
* @param node
*/
private void printWarningMessage(List<SecConnectorEntry> path, String trustlevel, ASTNode node) {
StringBuilder builder = new StringBuilder("The following path ends in the low trustlevel " + trustlevel + ": " + path.get(0));
StringBuilder builder = new StringBuilder("The following encrypted path ends in the low trustlevel " + trustlevel + ": " + path.get(0));
path.remove(0);
for(SecConnectorEntry pathElement : path) {
builder.append(" -> ");
......
......@@ -73,7 +73,7 @@ public class TaintTracking extends Analysis implements ISecAnalysisConnectorChec
protected int innerCheck(ASTNode node, ASTArcComponent nodeParent, SecConnectorEntry entry, ArchitectureGraph graph) throws AmbigousException {
if(checkForTrustlevelRelation(nodeParent, entry)) {
if(!checkForTrustlevelRelation(nodeParent, entry)) {
return 0;
}
......@@ -85,7 +85,7 @@ public class TaintTracking extends Analysis implements ISecAnalysisConnectorChec
STEntry element = null;
StringBuilder sBuilder = new StringBuilder("Taint tracking: The trustlevel becomes higher with this transition " + entry + ". Before the input is used, it must be filtered. The following pass is used: " + entry);
StringBuilder sBuilder = new StringBuilder("Taint tracking: The trustlevel becomes higher with the transition " + entry + ". Before the input is used, it must be filtered. The following pass is used: '" + entry);
//Already used
iterator.next();
......@@ -102,12 +102,12 @@ public class TaintTracking extends Analysis implements ISecAnalysisConnectorChec
}
if(element instanceof FilterEntry) {
sBuilder.append(element.getName() + "*");
sBuilder.append(" " + element.getName() + "*");
}
}
sBuilder.append(" The filter is marked with a *. If the filter is missing, the input cannot be used.");
sBuilder.append("'. The filter is marked with a *. If the filter is missing, the input cannot be used.");
addReport(sBuilder.toString(), node.get_SourcePositionStart());
return factor;
......@@ -140,6 +140,10 @@ public class TaintTracking extends Analysis implements ISecAnalysisConnectorChec
} else {
sourceComp = parentComp;
}
if(sourceComp == null) {
return false;
}
// Component target
String targetRef = entry.getTarget();
......@@ -170,6 +174,10 @@ public class TaintTracking extends Analysis implements ISecAnalysisConnectorChec
}
}
if(targetComp == null) {
return false;
}
if(targetComp.getTrustlevel().isPresent()) {
targetTrustlevel = CoCoHelper.getTrustlevelAsInteger(targetComp);
} else {
......@@ -180,11 +188,11 @@ public class TaintTracking extends Analysis implements ISecAnalysisConnectorChec
}
//If the trustlevel is the lower, the input do not need to be checked again
//if the trustlevel ist the same, then check it for the transition before
if(sourceTrustlevel > targetTrustlevel) {
return false;
} else {
//if the trustlevel is the same, then check it for the transition before
if(sourceTrustlevel < targetTrustlevel) {
return true;
} else {
return false;
}
}
......
......@@ -174,13 +174,13 @@ public class TrustlevelConnectorHigherThanEnvironment extends DerivedTrustlevel
//Compare Trustlevel
if(trustlevelSource < trustlevelParent && trustlevelTarget < trustlevelParent) {
addReport("The trustlevel of the source and target component is lower than the trustlevel of the environment.", node.get_SourcePositionStart());
addReport("The trustlevel of the source and target component of connector " + entry + " is lower than the trustlevel of the environment.", node.get_SourcePositionStart());
return factor;
} else if(trustlevelSource >= trustlevelParent && trustlevelTarget < trustlevelParent) {
addReport("The trustlevel of the target component is lower than the trustlevel of the environment.", node.get_SourcePositionStart());
addReport("The trustlevel of the target component of connector " + entry + " is lower than the trustlevel of the environment.", node.get_SourcePositionStart());
return factor;
} else if(trustlevelSource < trustlevelParent && trustlevelTarget >= trustlevelParent) {
addReport("The trustlevel of the source component is lower than the trustlevel of the environment.", node.get_SourcePositionStart());
addReport("The trustlevel of the source component of connector " + entry + " is lower than the trustlevel of the environment.", node.get_SourcePositionStart());
return factor;
}
return 0;
......
......@@ -130,7 +130,7 @@ public class IdentityWithEncryption extends ComponentExistence implements ISecA
}
if(!pathfound) {
addReport("There is an identity link between the component " + entry.getSource() + " and " + entry.getTarget() + ", but an encrypted connection is missing.", node.get_SourcePositionStart());
addReport("There is an identity link between the components " + entry.getSource() + " and " + entry.getTarget() + ", but an encrypted connection is missing.", node.get_SourcePositionStart());
return factor;
}
return 0;
......
......@@ -7,6 +7,7 @@ import com.google.common.base.Optional;
import mc.IErrorCode;
import mc.umlp.arcd._ast.ASTArcComponent;
import mc.umlp.arcd.ets.entries.ComponentEntry;
import mc.umlp.arcd.ets.entries.SubComponentEntry;
import secarc.error.MontiSecArcAnalysisErrorCodes;
import secarc.ets.analysis.checker.Analysis;
import secarc.ets.analysis.checker.ISecAnalysisComponentChecker;
......@@ -47,11 +48,12 @@ ISecAnalysisComponentChecker{
@Override
public int check(ASTArcComponent node, SecComponentEntry entry, boolean advanced) {
//Check trustlevel for all innercomponents
List<SubComponentEntry> subComponents = entry.getSubComponents();
List<ComponentEntry> innerComponents = entry.getInnerComponents();
Optional<TrustlevelEntry> trustlevelEntry = entry.getTrustlevel();
//if no trustlevel and no innercomponents, nothing to check
if(innerComponents != null && trustlevelEntry.isPresent()) {
if((subComponents != null || innerComponents != null) && trustlevelEntry.isPresent()) {
int valueTrustlevel = trustlevelEntry.get().getValue();
int innerTrustlevel = -2;
......@@ -60,6 +62,10 @@ ISecAnalysisComponentChecker{
valueTrustlevel *= -1;
}
for(SubComponentEntry innerComponent : subComponents) {
innerComponents.add(innerComponent.getComponentType());
}
//Check difference for every innercomponent
for(ComponentEntry innerComponent : innerComponents) {
......@@ -80,14 +86,22 @@ ISecAnalysisComponentChecker{
if((valueTrustlevel>=0 && innerTrustlevel>=0) || (valueTrustlevel<0 && innerTrustlevel<0)) {
if(Math.abs(valueTrustlevel - innerTrustlevel) > 2 && innerTrustlevelEntry.get().getReason() == null) {
addReport(message, innerComponent.getNode().get_SourcePositionStart());
if(innerComponent.getNode() != null) {
addReport(message, innerComponent.getNode().get_SourcePositionStart());
} else {
addReport(message, node.get_SourcePositionStart());
}
return factor;
}
} else {
if((Math.abs(valueTrustlevel) + Math.abs(innerTrustlevel)) > 2 && innerTrustlevelEntry.get().getReason() == null) {
addReport(message, innerComponent.getNode().get_SourcePositionStart());
if(innerComponent.getNode() != null) {
addReport(message, innerComponent.getNode().get_SourcePositionStart());
} else {
addReport(message, innerComponent.getNode().get_SourcePositionStart());
}
return factor;
}
......
......@@ -61,7 +61,7 @@ public class TrustlevelForTrustlevelRelation extends ComponentExistence implemen
}
if(!((SecComponentEntry) lowerTrustlevelComoponent.getComponentType()).getTrustlevel().isPresent() || !((SecComponentEntry) higherTrustlevelComoponent.getComponentType()).getTrustlevel().isPresent()) {
addReport("A trustlevel relation is defined between the components " + lowerTrustlevelComoponent.getName() + " and " + higherTrustlevelComoponent.getName() + ". Therefore a trustlevel should be defined for both.", node.get_SourcePositionStart());
addReport("A trustlevelrelation is defined between the components " + lowerTrustlevelComoponent.getName() + " and " + higherTrustlevelComoponent.getName() + ". Therefore a trustlevel should be defined for both.", node.get_SourcePositionStart());
return factor;
}
return 0;
......
......@@ -139,7 +139,7 @@ public final class MontiSecArcAnalysisConstants {
public static final String T01 = "T01-Reason-Trustlevel";
public static final String T02 = "T02-High-Trustlevel";
public static final String T02 = "T02-Relation-Trustlevel";
public static final String WI01 = "WI01-Access-Roles";
......
package secarc.ets.check;
import interfaces2.coco.ContextCondition;
import interfaces2.helper.EntryLoadingErrorException;
import interfaces2.resolvers.AmbigousException;
import interfaces2.workflows.CheckWorkflowClient;
......@@ -324,7 +325,7 @@ public class MontiSecArcAnalysisVisitor extends CheckWorkflowClient {
metricSum += cc.check(node, entry, advanced);
}
}
} catch (AmbigousException e) {
} catch (AmbigousException | EntryLoadingErrorException e) {
// not checked here
MCG.getLogger().info(e.getMessage());
}
......
......@@ -16,10 +16,8 @@ import mc.DSLWorkflow;
import mc.ProblemReport;
import mc.ast.ASTNode;
import mc.ast.IVisitor;
import mc.ast.InheritanceVisitor;
import mc.ast.MultiInheritanceVisitor;
import secarc._tool.MontiSecArcRoot;
import secarc.ets.check.MontiSecArcAnalysisVisitor;
public class PreAnalysisTrustlevelTransformationWorkflow<T extends MontiSecArcRoot> extends DSLWorkflow<T> {
......
......@@ -20,11 +20,38 @@ public class MontiSecArcAnalysisRunningExampleTest extends TestWithSymtabAnalysi
*/
@Test
public void testSecRunningExample() throws CircluarDependencyException, AmbigousException {
MontiSecArcAnalysisTestTool tool = createTestToolWithAdditionalParameters(new String[] {"src/test/resources/secarc/seccds"}, new String[] {"src/test/resources"});
MontiSecArcAnalysisTestTool tool = createTestToolWithAdditionalParameters(new String[] {"src/test/resources/secarc/seccds/"}, new String[] {"src/test/resources"});
tool.init();
assertTrue(tool.run());
}
/**
* Test only path for Running Example in MontiSecArc with Analysis
* @throws AmbigousException
* @throws CircluarDependencyException
*/
@Test
public void testSecRunningExamplePath() throws CircluarDependencyException, AmbigousException {
MontiSecArcAnalysisTestTool tool = createTestToolWithAdditionalParameters(new String[] {"src/test/resources/secarc/seccdsE/CashDeskSystem.secarc"}, new String[] {"src/test/resources"});
tool.init();
assertTrue(tool.run());
}
/**
* Test only filter for Running Example in MontiSecArc with Analysis
* @throws AmbigousException
* @throws CircluarDependencyException
*/
@Test
public void testSecRunningExampleFilter() throws CircluarDependencyException, AmbigousException {
MontiSecArcAnalysisTestTool tool = createTestToolWithAdditionalParameters(new String[] {"src/test/resources/secarc/seccdsF/CashDeskSystem.secarc"}, new String[] {"src/test/resources"});
tool.init();
assertTrue(tool.run());
}
}
......@@ -48,7 +48,7 @@ public class MontiSecArcAnalysisTest extends TestWithSymtabAnalysis<MontiSecArcA
errorCodes.add(MontiSecArcAnalysisErrorCodes.EncryptedPathEndInLowTrustlevel);
errorCodes.add(MontiSecArcAnalysisErrorCodes.ListThirdPartyComponents);
assertEquals(5, handler.getWarnings().size());
assertEquals(4, handler.getWarnings().size());
for(ProblemReport error : handler.getErrors()) {
assertTrue(errorCodes.contains(error.getErrorcode()));
}
......@@ -74,7 +74,7 @@ public class MontiSecArcAnalysisTest extends TestWithSymtabAnalysis<MontiSecArcA
tool.init();
assertTrue(tool.run());
assertEquals(6, handler.getWarnings().size());
assertEquals(8, handler.getWarnings().size());
for(ProblemReport error : handler.getErrors()) {
assertTrue(errorCodes.contains(error.getErrorcode()));
}
......@@ -110,7 +110,7 @@ public class MontiSecArcAnalysisTest extends TestWithSymtabAnalysis<MontiSecArcA
errorCodes.add(MontiSecArcAnalysisErrorCodes.UnencryptedConnectorThroughLowTrustlevel);
errorCodes.add(MontiSecArcAnalysisErrorCodes.FilterWithHigherTrust);
assertEquals(4, handler.getWarnings().size());
assertEquals(3, handler.getWarnings().size());
for(ProblemReport error : handler.getErrors()) {
assertTrue(errorCodes.contains(error.getErrorcode()));
}
......@@ -123,7 +123,7 @@ public class MontiSecArcAnalysisTest extends TestWithSymtabAnalysis<MontiSecArcA
tool.init();
assertTrue(tool.run());
assertEquals(2, handler.getWarnings().size());
assertEquals(3, handler.getWarnings().size());
for(ProblemReport error : handler.getErrors()) {
assertTrue(errorCodes.contains(error.getErrorcode()));
}
......@@ -136,7 +136,7 @@ public class MontiSecArcAnalysisTest extends TestWithSymtabAnalysis<MontiSecArcA
tool.init();
assertTrue(tool.run());
assertEquals(5, handler.getWarnings().size());
assertEquals(4, handler.getWarnings().size());
for(ProblemReport error : handler.getErrors()) {
assertTrue(errorCodes.contains(error.getErrorcode()));
}
......@@ -211,7 +211,7 @@ public class MontiSecArcAnalysisTest extends TestWithSymtabAnalysis<MontiSecArcA
errorCodes.add(MontiSecArcAnalysisErrorCodes.RoleAccess);
errorCodes.add(MontiSecArcAnalysisErrorCodes.ListThirdPartyComponents);
assertEquals(11, handler.getWarnings().size());
assertEquals(12, handler.getWarnings().size());
for(ProblemReport error : handler.getErrors()) {
assertTrue(errorCodes.contains(error.getErrorcode()));
}
......@@ -224,7 +224,7 @@ public class MontiSecArcAnalysisTest extends TestWithSymtabAnalysis<MontiSecArcA
tool.init();
assertTrue(tool.run());
assertEquals(8, handler.getWarnings().size());
assertEquals(10, handler.getWarnings().size());
for(ProblemReport error : handler.getErrors()) {
assertTrue(errorCodes.contains(error.getErrorcode()));
}
......@@ -295,7 +295,7 @@ public class MontiSecArcAnalysisTest extends TestWithSymtabAnalysis<MontiSecArcA
errorCodes.add(MontiSecArcAnalysisErrorCodes.DerivedRolesPort);
errorCodes.add(MontiSecArcAnalysisErrorCodes.RoleAccess);
assertEquals(5, handler.getWarnings().size());
assertEquals(6, handler.getWarnings().size());
for(ProblemReport error : handler.getErrors()) {
assertTrue(errorCodes.contains(error.getErrorcode()));
}
......@@ -321,7 +321,7 @@ public class MontiSecArcAnalysisTest extends TestWithSymtabAnalysis<MontiSecArcA
tool.init();
assertTrue(tool.run());
assertEquals(2, handler.getWarnings().size());
assertEquals(3, handler.getWarnings().size());
for(ProblemReport error : handler.getErrors()) {
assertTrue(errorCodes.contains(error.getErrorcode()));
}
......@@ -334,7 +334,7 @@ public class MontiSecArcAnalysisTest extends TestWithSymtabAnalysis<MontiSecArcA
tool.init();
assertTrue(tool.run());
assertEquals(7, handler.getWarnings().size());
assertEquals(8, handler.getWarnings().size());
for(ProblemReport error : handler.getErrors()) {
assertTrue(errorCodes.contains(error.getErrorcode()));
}
......
......@@ -61,7 +61,7 @@ public class MontiSecArcAnalysisTransformationTrustlevelTest extends TestWithSym
assertEquals(false, ((SecComponentEntry) entry).getTrustlevel().get().isPositive());
}
assertEquals(6, handler.getWarnings().size());
assertEquals(5, handler.getWarnings().size());
}
/**
......@@ -77,27 +77,6 @@ public class MontiSecArcAnalysisTransformationTrustlevelTest extends TestWithSym
MontiSecArcAnalysisTestTool tool = createTestToolWithoutJavaPreTrustlevel("src/test/resources/secarc/analysis/connector/EncryptedPathEndInLowTrustlevel.secarc", parameters);
tool.init();
assertTrue(tool.run());
// MontiSecArcRoot root = (MontiSecArcRoot) initSymtabForRoot(tool, "secarc.analysis.connector.EncryptedPathEndInLowTrustlevel");
//
// ComponentEntry entry = null;
// for(ASTNode child : root.getAst().get_Children()) {
// if(child instanceof ASTArcComponent) {
// try {
// entry = existComponent(parameter, getNameSpaceFor(child));
// break;
// } catch (AmbigousException e) {
// // not checked here
// MCG.getLogger().info(e.getMessage());
// }
// }
// }
// if(entry != null) {
// assertEquals(true, ((SecComponentEntry) entry).getTrustlevel().isPresent());
// assertEquals(1, ((SecComponentEntry) entry).getTrustlevel().get().getValue());
// assertEquals(false, ((SecComponentEntry) entry).getTrustlevel().get().isPositive());
// }
//
// assertEquals(6, handler.getWarnings().size());
}
/**
......@@ -174,7 +153,7 @@ public class MontiSecArcAnalysisTransformationTrustlevelTest extends TestWithSym
assertEquals(false, ((SecComponentEntry) entry).getTrustlevel().get().isPositive());
}
assertEquals(5, handler.getWarnings().size());
assertEquals(4, handler.getWarnings().size());
}
/**
......@@ -249,7 +228,7 @@ public class MontiSecArcAnalysisTransformationTrustlevelTest extends TestWithSym
}
assertEquals(null, entry);
assertEquals(5, handler.getWarnings().size());
assertEquals(4, handler.getWarnings().size());
}
protected ComponentEntry existComponent(String parameter, NameSpace np) throws AmbigousException {
......
......@@ -38,7 +38,7 @@ public class MontiSecArcAnalysisWhatIfTrustlevelTest extends TestWithSymtabAnaly
errorCodes.add(MontiSecArcAnalysisErrorCodes.ReasonDifferingTrustlevel);
errorCodes.add(MontiSecArcAnalysisErrorCodes.TaintTracking);
assertEquals(6, handler.getWarnings().size());
assertEquals(5, handler.getWarnings().size());
for(ProblemReport error : handler.getErrors()) {
assertTrue(errorCodes.contains(error.getErrorcode()));
}
......@@ -51,7 +51,7 @@ public class MontiSecArcAnalysisWhatIfTrustlevelTest extends TestWithSymtabAnaly
tool.init();
assertTrue(tool.run());
assertEquals(4, handler.getWarnings().size());
assertEquals(3, handler.getWarnings().size());
for(ProblemReport error : handler.getErrors()) {
assertTrue(errorCodes.contains(error.getErrorcode()));
}
......@@ -64,7 +64,7 @@ public class MontiSecArcAnalysisWhatIfTrustlevelTest extends TestWithSymtabAnaly
tool.init();
assertTrue(tool.run());
assertEquals(8, handler.getWarnings().size());
assertEquals(9, handler.getWarnings().size());
for(ProblemReport error : handler.getErrors()) {
assertTrue(errorCodes.contains(error.getErrorcode()));
}
......@@ -77,7 +77,7 @@ public class MontiSecArcAnalysisWhatIfTrustlevelTest extends TestWithSymtabAnaly
tool.init();
assertTrue(tool.run());
assertEquals(5, handler.getWarnings().size());
assertEquals(4, handler.getWarnings().size());
for(ProblemReport error : handler.getErrors()) {
assertTrue(errorCodes.contains(error.getErrorcode()));
}
......@@ -100,7 +100,7 @@ public class MontiSecArcAnalysisWhatIfTrustlevelTest extends TestWithSymtabAnaly
errorCodes.add(MontiSecArcAnalysisErrorCodes.UnencryptedConnectorThroughLowTrustlevel);
errorCodes.add(MontiSecArcAnalysisErrorCodes.FilterWithHigherTrust);
assertEquals(4, handler.getWarnings().size());
assertEquals(5, handler.getWarnings().size());
for(ProblemReport error : handler.getErrors()) {
assertTrue(errorCodes.contains(error.getErrorcode()));
}
......@@ -113,7 +113,7 @@ public class MontiSecArcAnalysisWhatIfTrustlevelTest extends TestWithSymtabAnaly
tool.init();
assertTrue(tool.run());
assertEquals(6, handler.getWarnings().size());
assertEquals(5, handler.getWarnings().size());