FindBugsHowto
(Difference between revisions)
(→Suppressing warnings) |
(→Suppressing warnings) |
||
(17 intermediate revisions not shown) | |||
Line 3: | Line 3: | ||
This document describes how FindBugs is used during the development of NetBeans. | This document describes how FindBugs is used during the development of NetBeans. | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
====Running FindBugs locally==== | ====Running FindBugs locally==== | ||
Line 21: | Line 13: | ||
</pre> | </pre> | ||
- | This will produce the findbugs report file in <pre> | + | This will produce the findbugs report file in <pre>nbbuild/build/findbugs/org-netbeans-modules-your-module.xml</pre> and fails if at least one warning was discovered. No file is created if there is no problem in the tested module. |
- | There is also a target in < | + | |
+ | There is also a target in <code>nbbuild</code> to execute the test for all modules in a cluster at once: | ||
<pre> | <pre> | ||
Line 33: | Line 26: | ||
====Evaluating FindBugs warnings==== | ====Evaluating FindBugs warnings==== | ||
- | The report containing FindBugs warnings can be viewed using the FindBugs UI. This tool can be downloaded from the FindBugs website: http://findbugs.sourceforge.net/. After installing FindBugs, you can run the tool using the <pre>findbugs[.bat]</pre> script in the < | + | The report containing FindBugs warnings can be viewed using the FindBugs UI. This tool can be downloaded from the FindBugs website: http://findbugs.sourceforge.net/. After installing FindBugs, you can run the tool using the <pre>findbugs[.bat]</pre> script in the <code>bin</code> directory. In the FindBugs UI, you may want to sort the issues by priority, by dragging the labels at the top left. |
====Suppressing warnings==== | ====Suppressing warnings==== | ||
- | In some cases, you may want to suppress a particular warning, rather than fix it. | + | In some cases, you may want to suppress a particular warning, rather than fix it. Always think twice about suppressing as FindBugs is usually right. If you really know it is a false warning you can do the following: |
# Make sure your module uses the Common Annotations module (api.annotations.common). | # Make sure your module uses the Common Annotations module (api.annotations.common). | ||
- | # Find the id of the warning you want to suppress. Open the FindBugs report in a text editor, and find the <BugInstance> element for your warning. The value of the < | + | # Find the id of the warning you want to suppress. Open the FindBugs report in a text editor, and find the <BugInstance> element for your warning. The value of the <code>type</code> attribute of this element is your warning id. The warning id is also displayed in FindBugs UI:<br>[[File:FindbugsBugId.png|800px]] |
- | # Add the following annotation to the code (method, class, instance variable, local variable etc.) in which you want to suppress the warning: <pre>@org.netbeans.api.annotations.common.SuppressWarnings( | + | # Add the following annotation to the code (method, class, instance variable, local variable etc.) in which you want to suppress the warning: <pre>@org.netbeans.api.annotations.common.SuppressWarnings(value="your_warning_id", justification="Explanation why this is false warning")</pre> |
- | + | # It is good to be consistent when justifying the same type of things. | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
====Additional information==== | ====Additional information==== | ||
* The [[SignatureTest | SignatureTest]] also helps to maintain high quality of NetBeans code. | * The [[SignatureTest | SignatureTest]] also helps to maintain high quality of NetBeans code. | ||
- |
Current revision as of 15:14, 30 January 2013
How to use FindBugs with NetBeans sources
This document describes how FindBugs is used during the development of NetBeans.
Running FindBugs locally
For every NetBeans module, you can run the findbugs check by typing:
cd your.module ant findbugsThis will produce the findbugs report file in
nbbuild/build/findbugs/org-netbeans-modules-your-module.xmland fails if at least one warning was discovered. No file is created if there is no problem in the tested module.
There is also a target in nbbuild
to execute the test for all modules in a cluster at once:
ant -f nbbuild/build.xml findbugs-clusterThis produces the output files for each module with a problem in
nbbuild/build/findbugs/directory.
Evaluating FindBugs warnings
The report containing FindBugs warnings can be viewed using the FindBugs UI. This tool can be downloaded from the FindBugs website: http://findbugs.sourceforge.net/. After installing FindBugs, you can run the tool using thefindbugs[.bat]script in the
bin
directory. In the FindBugs UI, you may want to sort the issues by priority, by dragging the labels at the top left.
Suppressing warnings
In some cases, you may want to suppress a particular warning, rather than fix it. Always think twice about suppressing as FindBugs is usually right. If you really know it is a false warning you can do the following:
- Make sure your module uses the Common Annotations module (api.annotations.common).
- Find the id of the warning you want to suppress. Open the FindBugs report in a text editor, and find the <BugInstance> element for your warning. The value of the
type
attribute of this element is your warning id. The warning id is also displayed in FindBugs UI: - Add the following annotation to the code (method, class, instance variable, local variable etc.) in which you want to suppress the warning:
@org.netbeans.api.annotations.common.SuppressWarnings(value="your_warning_id", justification="Explanation why this is false warning")
- It is good to be consistent when justifying the same type of things.
Additional information
- The SignatureTest also helps to maintain high quality of NetBeans code.