Question: Is it possible to detect unused methods in a source tree using FindBugs? I see some posts on SO where users are claiming to do that, some others asking how to do this in FB and others where they claim FB cannot do this. 

Does anyone know for sure how this is done? I am only interested in methods that are not explicitly called from elsewhere, I don't care about reflection.

Answer: 
as a member of the FindBugs team I can tell you that unfortunately FindBugs does **not** do this. If you search through the [bug patterns](http://findbugs.sourceforge.net/bugDescriptions.html) on our website, the only mentions of "unused" detectors is for unused *fields*.
Removing unused code (including unused public methods) is one thing [obfuscators](http://en.wikipedia.org/wiki/Obfuscated_code) do. The problem is that you can't really tell if a public method is used by just looking at the class that contains it. You need to look at the whole system that is going to run, because a public method might be called from everywhere.

Running the obfuscator against the whole system (i.e. your code and all libraries used to run the system) can help find public methods that are never called (caveat: reflection can mess with that result, of course!).