Removed some redundancy in ClassTypeResolver and MetricsVisitorTest
This commit is contained in:
@ -120,75 +120,92 @@ public class ParserTstUtil {
|
||||
return cu;
|
||||
}
|
||||
|
||||
/** @see #parseJava(String, String) */
|
||||
/** @see #parseJava(LanguageVersionHandler, String) */
|
||||
public static ASTCompilationUnit parseJava13(String code) {
|
||||
return parseJava("1.3", code);
|
||||
return parseJava(getLanguageVersionHandler("1.3"), code);
|
||||
}
|
||||
|
||||
/** @see #parseJava(String, String) */
|
||||
/** @see #parseJava(LanguageVersionHandler, String) */
|
||||
public static ASTCompilationUnit parseJava14(String code) {
|
||||
return parseJava("1.4", code);
|
||||
return parseJava(getLanguageVersionHandler("1.4"), code);
|
||||
}
|
||||
|
||||
/** @see #parseJava(String, String) */
|
||||
/** @see #parseJava(LanguageVersionHandler, String) */
|
||||
public static ASTCompilationUnit parseJava15(String code) {
|
||||
return parseJava("1.5", code);
|
||||
return parseJava(getLanguageVersionHandler("1.5"), code);
|
||||
}
|
||||
|
||||
/** @see #parseJava(String, String) */
|
||||
/** @see #parseJava(LanguageVersionHandler, String) */
|
||||
public static ASTCompilationUnit parseJava17(String code) {
|
||||
return parseJava("1.7", code);
|
||||
return parseJava(getLanguageVersionHandler("1.7"), code);
|
||||
}
|
||||
|
||||
/** @see #parseJava(String, String) */
|
||||
/** @see #parseJava(LanguageVersionHandler, String) */
|
||||
public static ASTCompilationUnit parseJava18(String code) {
|
||||
return parseJava("1.8", code);
|
||||
return parseJava(getLanguageVersionHandler("1.8"), code);
|
||||
}
|
||||
|
||||
/** @see #parseJava(String, String) */
|
||||
/** @see #parseJava(LanguageVersionHandler, String) */
|
||||
public static ASTCompilationUnit parseJava13(Class<?> source) {
|
||||
return parseJava13(getSourceFromClass(source));
|
||||
}
|
||||
|
||||
/** @see #parseJava(String, String) */
|
||||
/** @see #parseJava(LanguageVersionHandler, String) */
|
||||
public static ASTCompilationUnit parseJava14(Class<?> source) {
|
||||
return parseJava14(getSourceFromClass(source));
|
||||
}
|
||||
|
||||
/** @see #parseJava(String, String) */
|
||||
/** @see #parseJava(LanguageVersionHandler, String) */
|
||||
public static ASTCompilationUnit parseJava15(Class<?> source) {
|
||||
return parseJava15(getSourceFromClass(source));
|
||||
}
|
||||
|
||||
/** @see #parseJava(String, String) */
|
||||
/** @see #parseJava(LanguageVersionHandler, String) */
|
||||
public static ASTCompilationUnit parseJava17(Class<?> source) {
|
||||
return parseJava17(getSourceFromClass(source));
|
||||
}
|
||||
|
||||
/** @see #parseJava(String, String) */
|
||||
/** @see #parseJava(LanguageVersionHandler, String) */
|
||||
public static ASTCompilationUnit parseJava18(Class<?> source) {
|
||||
return parseJava18(getSourceFromClass(source));
|
||||
}
|
||||
|
||||
/** @see #parseJava(LanguageVersionHandler, String) */
|
||||
public static ASTCompilationUnit parseJavaDefaultVersion(String source) {
|
||||
return parseJava(getDefaultLanguageVersionHandler(), source);
|
||||
}
|
||||
|
||||
/** @see #parseJava(LanguageVersionHandler, String) */
|
||||
public static ASTCompilationUnit parseJavaDefaultVersion(Class<?> source) {
|
||||
return parseJavaDefaultVersion(getSourceFromClass(source));
|
||||
}
|
||||
|
||||
|
||||
public static LanguageVersionHandler getLanguageVersionHandler(String version) {
|
||||
return LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion(version).getLanguageVersionHandler();
|
||||
}
|
||||
|
||||
public static LanguageVersionHandler getDefaultLanguageVersionHandler() {
|
||||
return LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getDefaultVersion().getLanguageVersionHandler();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Parses Java code and executes the symbol table visitor.
|
||||
*
|
||||
* @param version The Java version to use
|
||||
* @param code The source code
|
||||
* @param languageVersionHandler The version handler for the wanted version
|
||||
* @param code The source code
|
||||
*
|
||||
* @return The compilation unit
|
||||
*/
|
||||
public static ASTCompilationUnit parseJava(String version, String code) {
|
||||
LanguageVersion languageVersion = LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion(version);
|
||||
LanguageVersionHandler languageVersionHandler = languageVersion.getLanguageVersionHandler();
|
||||
public static ASTCompilationUnit parseJava(LanguageVersionHandler languageVersionHandler, String code) {
|
||||
ASTCompilationUnit rootNode = (ASTCompilationUnit) languageVersionHandler
|
||||
.getParser(languageVersionHandler.getDefaultParserOptions()).parse(null, new StringReader(code));
|
||||
languageVersionHandler.getSymbolFacade().start(rootNode);
|
||||
return rootNode;
|
||||
}
|
||||
|
||||
private static String getSourceFromClass(Class<?> clazz) {
|
||||
public static String getSourceFromClass(Class<?> clazz) {
|
||||
String sourceFile = clazz.getName().replace('.', '/') + ".java";
|
||||
InputStream is = ParserTstUtil.class.getClassLoader().getResourceAsStream(sourceFile);
|
||||
if (is == null) {
|
||||
|
@ -8,16 +8,10 @@ import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.StringReader;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.junit.Test;
|
||||
|
||||
import net.sourceforge.pmd.lang.LanguageRegistry;
|
||||
import net.sourceforge.pmd.lang.LanguageVersionHandler;
|
||||
import net.sourceforge.pmd.lang.java.JavaLanguageModule;
|
||||
import net.sourceforge.pmd.lang.java.ParserTstUtil;
|
||||
import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit;
|
||||
import net.sourceforge.pmd.lang.java.ast.ASTMethodDeclaration;
|
||||
import net.sourceforge.pmd.lang.java.ast.JavaParserVisitorAdapter;
|
||||
@ -27,7 +21,6 @@ import net.sourceforge.pmd.lang.java.metrics.signature.JavaOperationSigMask;
|
||||
import net.sourceforge.pmd.lang.java.metrics.signature.JavaOperationSignature.Role;
|
||||
import net.sourceforge.pmd.lang.java.metrics.signature.JavaSignature.Visibility;
|
||||
import net.sourceforge.pmd.lang.java.metrics.testdata.MetricsVisitorTestData;
|
||||
import net.sourceforge.pmd.typeresolution.ClassTypeResolverTest;
|
||||
|
||||
/**
|
||||
* Tests of the metrics visitor.
|
||||
@ -45,7 +38,7 @@ public class JavaMetricsVisitorTest {
|
||||
|
||||
@Test
|
||||
public void testOperationsAreThere() {
|
||||
ASTCompilationUnit acu = parseAndVisitForClass15(MetricsVisitorTestData.class);
|
||||
ASTCompilationUnit acu = parseAndVisitForClass(MetricsVisitorTestData.class);
|
||||
|
||||
final JavaSignatureMatcher toplevel = JavaMetrics.getFacade().getTopLevelPackageStats();
|
||||
|
||||
@ -64,7 +57,7 @@ public class JavaMetricsVisitorTest {
|
||||
|
||||
@Test
|
||||
public void testFieldsAreThere() {
|
||||
parseAndVisitForClass15(MetricsVisitorTestData.class);
|
||||
parseAndVisitForClass(MetricsVisitorTestData.class);
|
||||
|
||||
|
||||
final JavaSignatureMatcher toplevel = JavaMetrics.getFacade().getTopLevelPackageStats();
|
||||
@ -88,7 +81,7 @@ public class JavaMetricsVisitorTest {
|
||||
// problem
|
||||
@Test
|
||||
public void testStaticOperationsSig() {
|
||||
parseAndVisitForClass15(MetricsVisitorTestData.class);
|
||||
parseAndVisitForClass(MetricsVisitorTestData.class);
|
||||
|
||||
final JavaSignatureMatcher toplevel = JavaMetrics.getFacade().getTopLevelPackageStats();
|
||||
|
||||
@ -108,42 +101,11 @@ public class JavaMetricsVisitorTest {
|
||||
}
|
||||
|
||||
|
||||
/* default */
|
||||
static ASTCompilationUnit parseAndVisitForClass15(Class<?> clazz) {
|
||||
return parseAndVisitForClass(clazz, "1.5");
|
||||
}
|
||||
|
||||
|
||||
// Note: If you're using Eclipse or some other IDE to run this test, you
|
||||
// _must_ have the src/test/java folder in
|
||||
// the classpath. Normally the IDE doesn't put source directories themselves
|
||||
// directly in the classpath, only
|
||||
// the output directories are in the classpath.
|
||||
private static ASTCompilationUnit parseAndVisitForClass(Class<?> clazz, String version) {
|
||||
String sourceFile = clazz.getName().replace('.', '/') + ".java";
|
||||
InputStream is = ClassTypeResolverTest.class.getClassLoader().getResourceAsStream(sourceFile);
|
||||
if (is == null) {
|
||||
throw new IllegalArgumentException(
|
||||
"Unable to find source file " + sourceFile + " for " + clazz);
|
||||
}
|
||||
String source;
|
||||
try {
|
||||
source = IOUtils.toString(is);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return parseAndVisitForString(source, version);
|
||||
}
|
||||
|
||||
|
||||
private static ASTCompilationUnit parseAndVisitForString(String source, String version) {
|
||||
LanguageVersionHandler languageVersionHandler = LanguageRegistry.getLanguage(JavaLanguageModule.NAME)
|
||||
.getVersion(version).getLanguageVersionHandler();
|
||||
ASTCompilationUnit acu = (ASTCompilationUnit) languageVersionHandler
|
||||
.getParser(languageVersionHandler.getDefaultParserOptions()).parse(null, new StringReader(source));
|
||||
languageVersionHandler.getSymbolFacade().start(acu);
|
||||
languageVersionHandler.getTypeResolutionFacade(JavaMetricsVisitorTest.class.getClassLoader()).start(acu);
|
||||
languageVersionHandler.getMetricsVisitorFacade().start(acu);
|
||||
static ASTCompilationUnit parseAndVisitForClass(Class<?> clazz) {
|
||||
ASTCompilationUnit acu = ParserTstUtil.parseJavaDefaultVersion(clazz);
|
||||
LanguageVersionHandler handler = ParserTstUtil.getDefaultLanguageVersionHandler();
|
||||
handler.getTypeResolutionFacade(JavaMetricsVisitorTest.class.getClassLoader()).start(acu);
|
||||
handler.getMetricsVisitorFacade().start(acu);
|
||||
return acu;
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
package net.sourceforge.pmd.lang.java.metrics;
|
||||
|
||||
import static net.sourceforge.pmd.lang.java.metrics.JavaMetricsVisitorTest.parseAndVisitForClass15;
|
||||
import static net.sourceforge.pmd.lang.java.metrics.JavaMetricsVisitorTest.parseAndVisitForClass;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotEquals;
|
||||
|
||||
@ -38,7 +38,7 @@ public class ProjectMemoizerTest {
|
||||
|
||||
@Test
|
||||
public void memoizationTest() {
|
||||
ASTCompilationUnit acu = parseAndVisitForClass15(MetricsVisitorTestData.class);
|
||||
ASTCompilationUnit acu = parseAndVisitForClass(MetricsVisitorTestData.class);
|
||||
|
||||
List<Integer> expected = visitWith(acu, true);
|
||||
List<Integer> real = visitWith(acu, false);
|
||||
@ -49,7 +49,7 @@ public class ProjectMemoizerTest {
|
||||
|
||||
@Test
|
||||
public void forceMemoizationTest() {
|
||||
ASTCompilationUnit acu = parseAndVisitForClass15(MetricsVisitorTestData.class);
|
||||
ASTCompilationUnit acu = parseAndVisitForClass(MetricsVisitorTestData.class);
|
||||
|
||||
List<Integer> reference = visitWith(acu, true);
|
||||
List<Integer> real = visitWith(acu, true);
|
||||
|
@ -8,17 +8,13 @@ import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertSame;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.StringReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.jaxen.JaxenException;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
@ -26,6 +22,7 @@ import net.sourceforge.pmd.lang.LanguageRegistry;
|
||||
import net.sourceforge.pmd.lang.LanguageVersionHandler;
|
||||
import net.sourceforge.pmd.lang.ast.Node;
|
||||
import net.sourceforge.pmd.lang.java.JavaLanguageModule;
|
||||
import net.sourceforge.pmd.lang.java.ParserTstUtil;
|
||||
import net.sourceforge.pmd.lang.java.ast.ASTAllocationExpression;
|
||||
import net.sourceforge.pmd.lang.java.ast.ASTBooleanLiteral;
|
||||
import net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceDeclaration;
|
||||
@ -1495,18 +1492,7 @@ public class ClassTypeResolverTest {
|
||||
// directly in the classpath, only
|
||||
// the output directories are in the classpath.
|
||||
private ASTCompilationUnit parseAndTypeResolveForClass(Class<?> clazz, String version) {
|
||||
String sourceFile = clazz.getName().replace('.', '/') + ".java";
|
||||
InputStream is = ClassTypeResolverTest.class.getClassLoader().getResourceAsStream(sourceFile);
|
||||
if (is == null) {
|
||||
throw new IllegalArgumentException("Unable to find source file " + sourceFile + " for " + clazz);
|
||||
}
|
||||
String source;
|
||||
try {
|
||||
source = IOUtils.toString(is);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return parseAndTypeResolveForString(source, version);
|
||||
return parseAndTypeResolveForString(ParserTstUtil.getSourceFromClass(clazz), version);
|
||||
}
|
||||
|
||||
private ASTCompilationUnit parseAndTypeResolveForString(String source, String version) {
|
||||
|
Reference in New Issue
Block a user