[Fb-contrib-commit] SF.net SVN: fb-contrib:[1076] trunk/fb-contrib
Brought to you by:
dbrosius
|
From: <dbr...@us...> - 2008-11-03 07:14:52
|
Revision: 1076
http://fb-contrib.svn.sourceforge.net/fb-contrib/?rev=1076&view=rev
Author: dbrosius
Date: 2008-11-03 07:14:49 +0000 (Mon, 03 Nov 2008)
Log Message:
-----------
embellish JAO with tests for Assert.assertNotNull(i) or Assert.assertNotNull(d == 4.3)
Modified Paths:
--------------
trunk/fb-contrib/etc/findbugs.xml
trunk/fb-contrib/etc/messages.xml
trunk/fb-contrib/samples/JAO_Sample.java
trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/JUnitAssertionOddities.java
Modified: trunk/fb-contrib/etc/findbugs.xml
===================================================================
--- trunk/fb-contrib/etc/findbugs.xml 2008-10-30 15:55:38 UTC (rev 1075)
+++ trunk/fb-contrib/etc/findbugs.xml 2008-11-03 07:14:49 UTC (rev 1076)
@@ -306,7 +306,7 @@
<Detector class="com.mebigfatguy.fbcontrib.detect.JUnitAssertionOddities"
speed="fast"
- reports="JAO_JUNIT_ASSERTION_ODDITIES_ACTUAL_CONSTANT,JAO_JUNIT_ASSERTION_ODDITIES_INEXACT_DOUBLE,JAO_JUNIT_ASSERTION_ODDITIES_BOOLEAN_ASSERT" />
+ reports="JAO_JUNIT_ASSERTION_ODDITIES_ACTUAL_CONSTANT,JAO_JUNIT_ASSERTION_ODDITIES_INEXACT_DOUBLE,JAO_JUNIT_ASSERTION_ODDITIES_BOOLEAN_ASSERT,JAO_JUNIT_ASSERTION_ODITIES_IMPOSSIBLE_NULL" />
<Detector class="com.mebigfatguy.fbcontrib.detect.SuspiciousCloneAlgorithm"
speed="fast"
@@ -430,6 +430,7 @@
<BugPattern abbrev="JAO" type="JAO_JUNIT_ASSERTION_ODDITIES_ACTUAL_CONSTANT" category="STYLE" />
<BugPattern abbrev="JAO" type="JAO_JUNIT_ASSERTION_ODDITIES_INEXACT_DOUBLE" category="STYLE" />
<BugPattern abbrev="JAO" type="JAO_JUNIT_ASSERTION_ODDITIES_BOOLEAN_ASSERT" category="STYLE" />
+ <BugPattern abbrev="JAO" type="JAO_JUNIT_ASSERTION_ODITIES_IMPOSSIBLE_NULL" category="CORRECTNESS" />
<BugPattern abbrev="SCA" type="SCA_SUSPICIOUS_CLONE_ALGORITHM" category="CORRECTNESS" />
<BugPattern abbrev="WEM" type="WEM_WEAK_EXCEPTION_MESSAGING" category="STYLE" />
<BugPattern abbrev="SCSS" type="SCSS_SUSPICIOUS_CLUSTERED_SESSION_SUPPORT" category="CORRECTNESS" experimental="true" />
Modified: trunk/fb-contrib/etc/messages.xml
===================================================================
--- trunk/fb-contrib/etc/messages.xml 2008-10-30 15:55:38 UTC (rev 1075)
+++ trunk/fb-contrib/etc/messages.xml 2008-11-03 07:14:49 UTC (rev 1076)
@@ -2261,6 +2261,18 @@
</Details>
</BugPattern>
+ <BugPattern type="JAO_JUNIT_ASSERTION_ODITIES_IMPOSSIBLE_NULL">
+ <ShortDescription>method asserts that an auto-boxed value is not null</ShortDescription>
+ <LongDescription>method {1} asserts that an auto-boxed value is not null</LongDescription>
+ <Details>
+ <![CDATA[
+ <p>This method asserts that a primitive value that was autoboxed into a boxed primitive was not
+ null. This will never happen, as primitives are never null, and thus the autoboxed value isn't
+ either.</p>
+ ]]>
+ </Details>
+ </BugPattern>
+
<BugPattern type="SCA_SUSPICIOUS_CLONE_ALGORITHM">
<ShortDescription>clone method stores a new value to member field of source object</ShortDescription>
<LongDescription>clone method {1} stores a new value to member field of source object</LongDescription>
Modified: trunk/fb-contrib/samples/JAO_Sample.java
===================================================================
--- trunk/fb-contrib/samples/JAO_Sample.java 2008-10-30 15:55:38 UTC (rev 1075)
+++ trunk/fb-contrib/samples/JAO_Sample.java 2008-11-03 07:14:49 UTC (rev 1076)
@@ -24,4 +24,10 @@
{
Assert.assertEquals(i, 10);
}
+
+ public void testAutoBoxNotNull(int i)
+ {
+ Assert.assertNotNull(i);
+ Assert.assertNotNull(i == 3);
+ }
}
Modified: trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/JUnitAssertionOddities.java
===================================================================
--- trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/JUnitAssertionOddities.java 2008-10-30 15:55:38 UTC (rev 1075)
+++ trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/JUnitAssertionOddities.java 2008-11-03 07:14:49 UTC (rev 1076)
@@ -130,6 +130,8 @@
@Override
public void sawOpcode(int seen) {
+ String userValue = null;
+
try {
stack.mergeJumps(this);
@@ -171,11 +173,32 @@
}
}
}
+ } else if ("assertNotNull".equals(methodName)) {
+ if (stack.getStackDepth() > 0) {
+ if ("valueOf".equals(stack.getStackItem(0).getUserValue())) {
+ bugReporter.reportBug(new BugInstance(this, "JAO_JUNIT_ASSERTION_ODITIES_IMPOSSIBLE_NULL", NORMAL_PRIORITY)
+ .addClass(this)
+ .addMethod(this)
+ .addSourceLine(this));
+ }
+ }
}
+ } else {
+ String methodName = getNameConstantOperand();
+ String sig = getSigConstantOperand();
+ if (clsName.startsWith("java/lang/")
+ && "valueOf".equals(methodName)
+ && (sig.indexOf(")Ljava/lang/") >= 0)) {
+ userValue = "valueOf";
+ }
}
}
} finally {
stack.sawOpcode(this, seen);
+ if ((userValue != null) && (stack.getStackDepth() > 0)) {
+ OpcodeStack.Item item = stack.getStackItem(0);
+ item.setUserValue(userValue);
+ }
}
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|