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:
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;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user