Thread: [Fb-contrib-commit] SF.net SVN: fb-contrib: [906] trunk/fb-contrib/src/com/mebigfatguy/ fbcontrib/
Brought to you by:
dbrosius
From: <dbr...@us...> - 2007-09-16 00:19:27
|
Revision: 906 http://fb-contrib.svn.sourceforge.net/fb-contrib/?rev=906&view=rev Author: dbrosius Date: 2007-09-15 17:19:29 -0700 (Sat, 15 Sep 2007) Log Message: ----------- guard against npes Modified Paths: -------------- trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/MethodReturnsConstant.java Modified: trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/MethodReturnsConstant.java =================================================================== --- trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/MethodReturnsConstant.java 2007-09-15 18:59:26 UTC (rev 905) +++ trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/MethodReturnsConstant.java 2007-09-16 00:19:29 UTC (rev 906) @@ -73,7 +73,7 @@ methodSuspect = true; returnPC = -1; super.visitCode(obj); - if (methodSuspect) { + if (methodSuspect && (returnConstant != null)) { BugInstance bi = new BugInstance(this, "MRC_METHOD_RETURNS_CONSTANT", NORMAL_PRIORITY) .addClass(this) .addMethod(this); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dbr...@us...> - 2007-09-16 00:27:48
|
Revision: 907 http://fb-contrib.svn.sourceforge.net/fb-contrib/?rev=907&view=rev Author: dbrosius Date: 2007-09-15 17:27:48 -0700 (Sat, 15 Sep 2007) Log Message: ----------- if a method has a trinary, it makes it difficult to figure out whether a constant return is used, so marked these methods as not suspect, to avoid false positives. Modified Paths: -------------- trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/MethodReturnsConstant.java Modified: trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/MethodReturnsConstant.java =================================================================== --- trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/MethodReturnsConstant.java 2007-09-16 00:19:29 UTC (rev 906) +++ trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/MethodReturnsConstant.java 2007-09-16 00:27:48 UTC (rev 907) @@ -112,6 +112,10 @@ returnConstant = constant; } + } else if ((seen == GOTO) || (seen == GOTO_W)) { + if (stack.getStackDepth() > 0) { + methodSuspect = false; //Trinaries confuse us to much, if the code has a trinary well - oh well + } } } finally { stack.sawOpcode(this, seen); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dbr...@us...> - 2007-10-12 01:51:07
|
Revision: 934 http://fb-contrib.svn.sourceforge.net/fb-contrib/?rev=934&view=rev Author: dbrosius Date: 2007-10-11 18:51:10 -0700 (Thu, 11 Oct 2007) Log Message: ----------- MRC can work on static methods as well Modified Paths: -------------- trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/MethodReturnsConstant.java Modified: trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/MethodReturnsConstant.java =================================================================== --- trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/MethodReturnsConstant.java 2007-10-11 06:38:53 UTC (rev 933) +++ trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/MethodReturnsConstant.java 2007-10-12 01:51:10 UTC (rev 934) @@ -66,7 +66,8 @@ @Override public void visitCode(Code obj) { Method m = getMethod(); - if (((m.getAccessFlags() & Constants.ACC_PRIVATE) != 0) + int aFlags = m.getAccessFlags(); + if ((((aFlags & Constants.ACC_PRIVATE) != 0) || ((aFlags & Constants.ACC_STATIC) != 0)) && (!m.getSignature().endsWith(")Z"))) { stack.resetForMethodEntry(this); returnConstant = null; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dbr...@us...> - 2008-03-15 04:15:24
|
Revision: 1001 http://fb-contrib.svn.sourceforge.net/fb-contrib/?rev=1001&view=rev Author: dbrosius Date: 2008-03-14 21:15:29 -0700 (Fri, 14 Mar 2008) Log Message: ----------- Fix for [ 1914319 ] FalsePositive MRC_Method_Returns_Constant, If the return is from stringbuffer/builder.toString and the constant is "", then that is suspect, because OpcodeStack doesn't seem to handle it correctly. Modified Paths: -------------- trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/MethodReturnsConstant.java Modified: trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/MethodReturnsConstant.java =================================================================== --- trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/MethodReturnsConstant.java 2008-03-15 03:59:59 UTC (rev 1000) +++ trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/MethodReturnsConstant.java 2008-03-15 04:15:29 UTC (rev 1001) @@ -94,6 +94,7 @@ */ @Override public void sawOpcode(int seen) { + boolean sawSBToString = false; try { if (!methodSuspect) return; @@ -101,11 +102,16 @@ if ((seen >= IRETURN) && (seen <= ARETURN)) { if (stack.getStackDepth() > 0) { OpcodeStack.Item item = stack.getStackItem(0); + Object constant = item.getConstant(); if (constant == null) { methodSuspect = false; return; } + if ((item.getUserValue() != null) && ("".equals(constant))) { + methodSuspect = false; + return; + } if ((returnConstant != null) && (!returnConstant.equals(constant))) { methodSuspect = false; return; @@ -117,9 +123,18 @@ if (stack.getStackDepth() > 0) { methodSuspect = false; //Trinaries confuse us to much, if the code has a trinary well - oh well } + } else if (seen == INVOKEVIRTUAL) { + String clsName = getClassConstantOperand(); + if (clsName.startsWith("java/lang/StringB")) { + sawSBToString = "toString".equals(getNameConstantOperand()); + } } } finally { stack.sawOpcode(this, seen); + if (sawSBToString && (stack.getStackDepth() > 0)) { + OpcodeStack.Item item = stack.getStackItem(0); + item.setUserValue(Boolean.TRUE); + } } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dbr...@us...> - 2008-06-07 22:45:01
|
Revision: 1045 http://fb-contrib.svn.sourceforge.net/fb-contrib/?rev=1045&view=rev Author: dbrosius Date: 2008-06-07 15:43:52 -0700 (Sat, 07 Jun 2008) Log Message: ----------- filter out synthetic methods Modified Paths: -------------- trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/MethodReturnsConstant.java Modified: trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/MethodReturnsConstant.java =================================================================== --- trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/MethodReturnsConstant.java 2008-06-07 20:18:55 UTC (rev 1044) +++ trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/MethodReturnsConstant.java 2008-06-07 22:43:52 UTC (rev 1045) @@ -68,6 +68,7 @@ Method m = getMethod(); int aFlags = m.getAccessFlags(); if ((((aFlags & Constants.ACC_PRIVATE) != 0) || ((aFlags & Constants.ACC_STATIC) != 0)) + && ((aFlags & Constants.ACC_SYNTHETIC) == 0) && (!m.getSignature().endsWith(")Z"))) { stack.resetForMethodEntry(this); returnConstant = null; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |