[Fb-contrib-commit] fb-contrib/src/com/mebigfatguy/fbcontrib/detect NeedlessAutoboxing.java,1.3,1.4
Brought to you by:
dbrosius
|
From: Dave B. <dbr...@us...> - 2005-12-17 04:31:09
|
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; |