minor refactorings & performance tweaks

git-svn-id: https://pmd.svn.sourceforge.net/svnroot/pmd/trunk@6345 51baf565-9d33-0410-a72c-fc3788e3496d
This commit is contained in:
Brian Remedios committed 2008-08-09 05:51:26 +00:00
1 parent b1b38d120f
commit 80a80939c9
2 files changed
+26 -21

No files matched your search

@@ -107,7 +107,7 @@ public class ClassLoaderUtil {
// Okay
}
}
throw new NoSuchMethodException(type.getName() + "." + getMethodSignature(name, parameterTypes));
throw new NoSuchMethodException(type.getName() + '.' + getMethodSignature(name, parameterTypes));
}
}
@@ -120,19 +120,16 @@ public class ClassLoaderUtil {
}
public static String getMethodSignature(String name, Class<?>... parameterTypes) {
StringBuilder builder = new StringBuilder();
builder.append(name);
StringBuilder builder = new StringBuilder(name);
if (!(name.equals(CLINIT) || name.equals(INIT))) {
builder.append("(");
if (parameterTypes != null) {
for (int i = 0; i < parameterTypes.length; i++) {
if (i > 0) {
builder.append(", ");
}
builder.append(parameterTypes[i].getName());
}
builder.append('(');
if (parameterTypes != null && parameterTypes.length > 0) {
builder.append(parameterTypes[0].getName());
for (int i = 1; i < parameterTypes.length; i++) {
builder.append(", ").append(parameterTypes[i].getName());
}
}
builder.append(")");
builder.append(')');
}
return builder.toString();
}
@@ -3,6 +3,7 @@
*/
package net.sourceforge.pmd.dcd;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import net.sourceforge.pmd.dcd.graph.ClassNode;
@@ -21,7 +22,7 @@ import net.sourceforge.pmd.dcd.graph.UsageGraph;
public class UsageNodeVisitor extends NodeVisitorAdapter {
/**
* Configuration options for usage analysus.
* Configuration options for usage analysis.
*/
public static final class Options {
private boolean ignoreClassAnonymous = true;
@@ -178,6 +179,20 @@ public class UsageNodeVisitor extends NodeVisitorAdapter {
return super.visit(constructorNode, data);
}
private static boolean isMainMethod(MethodNode node) {
final Method method = node.getMember();
return method.getName().equals("main")
&& Modifier.isPublic(method.getModifiers())
&& Modifier.isStatic(method.getModifiers())
&& method.getReturnType() == Void.TYPE
&& method.getParameterTypes().length == 1
&& method.getParameterTypes()[0].isArray()
&& method.getParameterTypes()[0].getComponentType().equals(java.lang.String.class);
}
public Object visit(MethodNode methodNode, Object data) {
if (methodNode.getUsers().isEmpty()) {
boolean log = true;
@@ -194,14 +209,7 @@ public class UsageNodeVisitor extends NodeVisitorAdapter {
}
}
if (options.isIgnoreMethodMain()) {
if (methodNode.getMember().getName().equals("main")
&& Modifier.isPublic(methodNode.getMember().getModifiers())
&& Modifier.isStatic(methodNode.getMember().getModifiers())
&& methodNode.getMember().getReturnType() == Void.TYPE
&& methodNode.getMember().getParameterTypes().length == 1
&& methodNode.getMember().getParameterTypes()[0].isArray()
&& methodNode.getMember().getParameterTypes()[0].getComponentType().equals(
java.lang.String.class)) {
if (isMainMethod(methodNode)) {
ignore("method public static void main(String[])", methodNode);
log = false;
}