Comments (5)
Sample code to reproduce:
package findbugs.sample;
public class TestRuntimeExceptionOnImplementingClass implements ThrowsRuntimeException {
@Override
public String someMethod() {
return "foo";
}
}
interface ThrowsRuntimeException {
public Object someMethod() throws RuntimeException;
}
The rule should fire for the interface, but not for the class.
from fb-contrib.
Output from javap -v showing generated method:
Classfile findbugs/sample/TestRuntimeExceptionOnImplementingClass.class
Last modified 31/07/2015; size 673 bytes
MD5 checksum 8f8e7aa015c835f6a217ba9266e663b9
Compiled from "TestRuntimeExceptionOnImplementingClass.java"
public class findbugs.sample.TestRuntimeExceptionOnImplementingClass implements findbugs.sample.ThrowsRuntimeException
SourceFile: "TestRuntimeExceptionOnImplementingClass.java"
minor version: 0
major version: 51
flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
#1 = Methodref #5.#21 // java/lang/Object."<init>":()V
#2 = String #22 // foo
#3 = Methodref #4.#23 // findbugs/sample/TestRuntimeExceptionOnImplementingClass.someMethod:()Ljava/lang/String;
#4 = Class #24 // findbugs/sample/TestRuntimeExceptionOnImplementingClass
#5 = Class #25 // java/lang/Object
#6 = Class #26 // findbugs/sample/ThrowsRuntimeException
#7 = Utf8 <init>
#8 = Utf8 ()V
#9 = Utf8 Code
#10 = Utf8 LineNumberTable
#11 = Utf8 LocalVariableTable
#12 = Utf8 this
#13 = Utf8 Lfindbugs/sample/TestRuntimeExceptionOnImplementingClass;
#14 = Utf8 someMethod
#15 = Utf8 ()Ljava/lang/String;
#16 = Utf8 ()Ljava/lang/Object;
#17 = Utf8 Exceptions
#18 = Class #27 // java/lang/RuntimeException
#19 = Utf8 SourceFile
#20 = Utf8 TestRuntimeExceptionOnImplementingClass.java
#21 = NameAndType #7:#8 // "<init>":()V
#22 = Utf8 foo
#23 = NameAndType #14:#15 // someMethod:()Ljava/lang/String;
#24 = Utf8 findbugs/sample/TestRuntimeExceptionOnImplementingClass
#25 = Utf8 java/lang/Object
#26 = Utf8 findbugs/sample/ThrowsRuntimeException
#27 = Utf8 java/lang/RuntimeException
{
public findbugs.sample.TestRuntimeExceptionOnImplementingClass();
flags: ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
LineNumberTable:
line 3: 0
LocalVariableTable:
Start Length Slot Name Signature
0 5 0 this Lfindbugs/sample/TestRuntimeExceptionOnImplementingClass;
public java.lang.String someMethod();
flags: ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
0: ldc #2 // String foo
2: areturn
LineNumberTable:
line 6: 0
LocalVariableTable:
Start Length Slot Name Signature
0 3 0 this Lfindbugs/sample/TestRuntimeExceptionOnImplementingClass;
public java.lang.Object someMethod() throws java.lang.RuntimeException;
flags: ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: invokevirtual #3 // Method someMethod:()Ljava/lang/String;
4: areturn
LineNumberTable:
line 3: 0
LocalVariableTable:
Start Length Slot Name Signature
0 5 0 this Lfindbugs/sample/TestRuntimeExceptionOnImplementingClass;
Exceptions:
throws java.lang.RuntimeException
}
Perhaps the solution is to check for the ACC_SYNTHETIC flag?
from fb-contrib.
ah, i just have to ignore synthetic methods, ok. thanks for the report.
from fb-contrib.
fixed in commit with hash 0159e44
thanks again for the report.
from fb-contrib.
Thanks!
By the way, if you put a # before the issue number in your commits, then Github will automatically link them.
from fb-contrib.
Related Issues (20)
- false-positive in EXS_EXCEPTION_SOFTENING_NO_CONSTRAINTS when rethrowing exception HOT 2
- 7.6.0.sb is missing from maven central HOT 2
- NullPointerException HOT 1
- Regressoin of BAS_BLOATED_ASSIGNMENT_SCOPE after update from 7.6.0 to 7.6.1 HOT 1
- WOC_WRITE_ONLY_COLLECTION_LOCAL false positive if collection is read in lambda HOT 1
- Why not just rename repo to 'sb-contrib' and stop deploying 'fb-contrib' HOT 5
- WOC_WRITE_ONLY_COLLECTION_FIELD for constant collections HOT 1
- Couldn't find "findbugs.xml" in plugin PluginLoader
- Show the GitHub repository clearly on the official website, so that more people can learn about fb.
- `IncorrectInternalClassUse` throws a `ClassFormatException` after upgrading to Spotbugs 6.0.3 HOT 5
- Thoughts on donating this project to spotbugs as its so frequently used with spotbugs HOT 4
- False positives due to ignoring field accesses from inner classes
- False positive FCBL_FIELD_COULD_BE_LOCAL for private field of nested class
- False-positive MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR for method reference HOT 2
- False positives for try-with-resources (NP_LOAD_OF_KNOWN_NULL_VALUE, RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE) HOT 2
- Code compiled with target 11 (and not 1.8) does not find all bug warnings
- False-positive in OPM_OVERLY_PERMISSIVE_METHOD for equals HOT 1
- `FII_USE_FUNCTION_IDENTITY` false-positive
- BCEL errors with fb-contrib 7.6.4 HOT 1
- FII_USE_FUNCTION_IDENTITY false positive HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fb-contrib.