Update of /cvsroot/fb-contrib/fb-contrib/src/com/mebigfatguy/fbcontrib/detect
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16902/src/com/mebigfatguy/fbcontrib/detect
Modified Files:
NeedlessAutoboxing.java
Log Message:
embellish the NAB detector to find
BoxPrimitive.valueOf(BoxedPrimitive)
Index: NeedlessAutoboxing.java
===================================================================
RCS file: /cvsroot/fb-contrib/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/NeedlessAutoboxing.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- NeedlessAutoboxing.java 5 Dec 2005 05:21:15 -0000 1.3
+++ NeedlessAutoboxing.java 17 Dec 2005 04:31:01 -0000 1.4
@@ -35,14 +35,14 @@
private static final Map<String, String[]> boxClasses = new HashMap<String, String[]>();
static {
- boxClasses.put("java/lang/Boolean", new String[] { "booleanValue()Z", "(Z)V" });
- boxClasses.put("java/lang/Character", new String[] { "charValue()C", "(C)V" });
- boxClasses.put("java/lang/Byte", new String[] { "byteValue()B", "(B)V" });
- boxClasses.put("java.lang/Short", new String[] { "shortValue()S", "(S)V" });
- boxClasses.put("java/lang/Integer", new String[] { "intValue()I", "(I)V" });
- boxClasses.put("java/lang/Long", new String[] { "longValue()J", "(J)V" });
- boxClasses.put("java/lang/Float", new String[] { "floatValue()F", "(F)V" });
- boxClasses.put("java/lang/Double", new String[] { "doubleValue()D", "(D)V" });
+ boxClasses.put("java/lang/Boolean", new String[] { "booleanValue()Z", "(Z)V", "(Z)Ljava/lang/Boolean;" });
+ boxClasses.put("java/lang/Character", new String[] { "charValue()C", "(C)V", "(C)Ljava/lang/Character;" });
+ boxClasses.put("java/lang/Byte", new String[] { "byteValue()B", "(B)V", "(B)Ljava/lang/Byte;" });
+ boxClasses.put("java.lang/Short", new String[] { "shortValue()S", "(S)V", "(S)Ljava/lang/Short;" });
+ boxClasses.put("java/lang/Integer", new String[] { "intValue()I", "(I)V", "(I)Ljava/lang/Integer;" });
+ boxClasses.put("java/lang/Long", new String[] { "longValue()J", "(J)V", "(J)Ljava/lang/Long;" });
+ boxClasses.put("java/lang/Float", new String[] { "floatValue()F", "(F)V", "(F)Ljava/lang/Float;" });
+ boxClasses.put("java/lang/Double", new String[] { "doubleValue()D", "(D)V", "(D)Ljava/lang/Double;" });
}
private BugReporter bugReporter;
@@ -102,6 +102,20 @@
}
}
}
+ } else if (seen == INVOKESTATIC) {
+ if (boxClass.equals(getClassConstantOperand())) {
+ String methodName = getNameConstantOperand();
+ String boxSig = boxClasses.get(boxClass)[2];
+ if ("valueOf".equals(methodName)) {
+ String methodSig = getSigConstantOperand();
+ if (boxSig.equals(methodSig)) {
+ bugReporter.reportBug(new BugInstance(this, "NAB_NEEDLESS_AUTOBOXING", NORMAL_PRIORITY)
+ .addClass(this)
+ .addMethod(this)
+ .addSourceLine(this));
+ }
+ }
+ }
}
state = SEEN_NOTHING;
break;
|