Skip to content
Snippets Groups Projects
Commit 7e00492c authored by Johannes Mey's avatar Johannes Mey
Browse files

add trivial test from SEI CERT Oracle Coding Standard for Java

parent f9b26267
No related branches found
No related tags found
No related merge requests found
package org.extendj;
import org.extendj.ast.AbstractFinding;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import java.util.Set;
public class DCL51JTest extends ScopeAnalysisTest {
@Test
void test() {
// see https://wiki.sei.cmu.edu/confluence/display/java/DCL51-J.+Do+not+shadow+or+obscure+identifiers+in+subscopes
ScopeAnalysis scopeAnalysis = new ScopeAnalysis();
Set<AbstractFinding> findings = scopeAnalysis.analyze("src/test/resources/dcl51-j", true, true);
System.out.println(findings);
// final String fFieldComplient = "src/test/resources/dcl51-j/FieldComplient.java";
final String fFieldNoncomplient = "src/test/resources/dcl51-j/FieldNoncomplient.java";
// final String fVariableCompliant = "src/test/resources/dcl51-j/VariableCompliant.java";
final String fVariableNoncompliant = "src/test/resources/dcl51-j/VariableNoncompliant.java";
assertShadow(findings, "val", fFieldNoncomplient, 7, fFieldNoncomplient, 5);
assertShadow(findings, "i", fVariableNoncompliant, 8, fVariableNoncompliant, 5);
Assertions.assertEquals(2, findings.size());
}
}
/**
* Compliant Solution (Field Shadowing)
*/
public class FieldComplient {
private int val = 1;
private void doLogic() {
int newValue;
//...
}
}
/**
* Noncompliant Code Example (Field Shadowing)
*/
public class FieldNoncomplient {
private int val = 1;
private void doLogic() {
int val;
//...
}
}
/**
* Compliant Solution (Variable Shadowing)
*/
public class VariableCompliant {
private void doLogic() {
for (int i = 0; i < 10; i++) {/* ... */}
for (int i = 0; i < 20; i++) {/* ... */}
}
}
/**
* Noncompliant Code Example (Variable Shadowing)
*/
public class VariableNoncompliant {
private int i = 0;
private void doLogic() {
for (i = 0; i < 10; i++) {/* ... */}
for (int i = 0; i < 20; i++) {/* ... */}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment