FindBugs (1.2.1-dev-20070506) Analysis for eclipse-3.3M7

FindBugs Analysis generated at: Sun, 6 May 2007 22:24:38 -0400

Package Code Size Bugs Bugs p1 Bugs p2 Bugs p3 Bugs Exp. Ratio
Overall (1224 packages), (30492 classes) 1745177 3730 449 3281
com.sun.jdi 502 1 1
com.sun.jdi.connect 77 1 1
com.sun.mirror.util 474 1 1
org.apache.lucene.demo.html 2422 33 1 32
org.eclipse.ant.core 1415 7 2 5
org.eclipse.ant.internal.core.contentDescriber 117 2 1 1
org.eclipse.ant.internal.ui 988 3 1 2
org.eclipse.ant.internal.ui.console 379 1 1
org.eclipse.ant.internal.ui.datatransfer 2450 12 12
org.eclipse.ant.internal.ui.debug.model 996 1 1
org.eclipse.ant.internal.ui.dtd.schema 868 1 1
org.eclipse.ant.internal.ui.dtd.util 450 3 1 2
org.eclipse.ant.internal.ui.editor 2673 9 9
org.eclipse.ant.internal.ui.editor.formatter 769 1 1
org.eclipse.ant.internal.ui.editor.outline 530 1 1
org.eclipse.ant.internal.ui.editor.utils 409 4 3 1
org.eclipse.ant.internal.ui.launchConfigurations 3503 8 8
org.eclipse.ant.internal.ui.model 2556 5 5
org.eclipse.ant.internal.ui.preferences 4702 6 6
org.eclipse.ant.internal.ui.refactoring 181 1 1
org.eclipse.ant.internal.ui.views 518 1 1
org.eclipse.compare 2574 2 2
org.eclipse.compare.contentmergeviewer 4366 4 1 3
org.eclipse.compare.internal 5932 8 1 7
org.eclipse.compare.internal.patch 3861 2 2
org.eclipse.compare.rangedifferencer 450 1 1
org.eclipse.compare.structuremergeviewer 1644 3 3
org.eclipse.core.commands 1624 2 2
org.eclipse.core.commands.common 179 1 1
org.eclipse.core.databinding.observable 649 2 2
org.eclipse.core.databinding.observable.list 488 1 1
org.eclipse.core.databinding.observable.map 376 1 1
org.eclipse.core.databinding.observable.set 593 1 1
org.eclipse.core.databinding.observable.value 285 2 2
org.eclipse.core.expressions 402 1 1
org.eclipse.core.filesystem.provider 288 1 1
org.eclipse.core.internal.content 2025 10 5 5
org.eclipse.core.internal.databinding 272 1 1
org.eclipse.core.internal.databinding.observable.tree 231 1 1
org.eclipse.core.internal.dtree 1316 3 3
org.eclipse.core.internal.events 1966 9 9
org.eclipse.core.internal.expressions 1463 12 1 11
org.eclipse.core.internal.expressions.util 224 2 2
org.eclipse.core.internal.filebuffers 2169 1 1
org.eclipse.core.internal.filesystem 277 2 2
org.eclipse.core.internal.filesystem.local 389 1 1
org.eclipse.core.internal.indexing 2741 5 5
org.eclipse.core.internal.jobs 2558 11 1 10
org.eclipse.core.internal.localstore 3067 6 2 4
org.eclipse.core.internal.model 1622 1 1
org.eclipse.core.internal.net 907 3 1 2
org.eclipse.core.internal.plugins 586 3 3
org.eclipse.core.internal.preferences 2670 4 1 3
org.eclipse.core.internal.preferences.legacy 390 1 1
org.eclipse.core.internal.properties 1071 1 1
org.eclipse.core.internal.registry 4237 9 3 6
org.eclipse.core.internal.registry.osgi 580 2 1 1
org.eclipse.core.internal.resources 12229 30 2 28
org.eclipse.core.internal.runtime 2310 17 8 9
org.eclipse.core.internal.runtime.auth 411 2 1 1
org.eclipse.core.internal.utils 1375 6 1 5
org.eclipse.core.internal.variables 556 1 1
org.eclipse.core.internal.watson 542 1 1
org.eclipse.core.resources 722 3 1 2
org.eclipse.core.runtime 2452 3 3
org.eclipse.core.runtime.adaptor 1545 5 1 4
org.eclipse.core.runtime.content 185 1 1
org.eclipse.core.runtime.dynamichelpers 186 3 3
org.eclipse.core.runtime.internal.adaptor 2813 10 2 8
org.eclipse.core.runtime.preferences 139 1 1
org.eclipse.core.variables 63 1 1
org.eclipse.debug.core 1110 2 2
org.eclipse.debug.core.model 818 3 3
org.eclipse.debug.internal.core 4307 19 4 15
org.eclipse.debug.internal.core.commands 397 1 1
org.eclipse.debug.internal.core.sourcelookup 170 1 1
org.eclipse.debug.internal.ui 3039 7 1 6
org.eclipse.debug.internal.ui.actions 1269 1 1
org.eclipse.debug.internal.ui.actions.breakpointGroups 811 4 2 2
org.eclipse.debug.internal.ui.actions.expressions 352 1 1
org.eclipse.debug.internal.ui.actions.variables 287 2 1 1
org.eclipse.debug.internal.ui.commands.actions 843 3 3
org.eclipse.debug.internal.ui.contextlaunching 348 1 1
org.eclipse.debug.internal.ui.contexts 548 1 1
org.eclipse.debug.internal.ui.elements.adapters 736 1 1
org.eclipse.debug.internal.ui.launchConfigurations 5593 18 1 17
org.eclipse.debug.internal.ui.memory.provisional 1920 2 2
org.eclipse.debug.internal.ui.model.elements 720 1 1
org.eclipse.debug.internal.ui.preferences 2219 14 1 13
org.eclipse.debug.internal.ui.sourcelookup 1381 2 1 1
org.eclipse.debug.internal.ui.viewers 1842 8 8
org.eclipse.debug.internal.ui.viewers.model 3019 7 7
org.eclipse.debug.internal.ui.viewers.update 961 5 1 4
org.eclipse.debug.internal.ui.views 628 2 2
org.eclipse.debug.internal.ui.views.breakpoints 1860 6 3 3
org.eclipse.debug.internal.ui.views.console 1057 1 1
org.eclipse.debug.internal.ui.views.memory 3808 7 7
org.eclipse.debug.internal.ui.views.memory.renderings 4688 9 9
org.eclipse.debug.internal.ui.views.variables 924 1 1
org.eclipse.debug.internal.ui.views.variables.details 926 6 1 5
org.eclipse.debug.ui 2801 8 8
org.eclipse.debug.ui.actions 1422 2 2
org.eclipse.debug.ui.contexts 81 1 1
org.eclipse.debug.ui.memory 2225 3 3
org.eclipse.equinox.http.jetty.internal 329 1 1
org.eclipse.equinox.http.registry.internal 765 3 3
org.eclipse.equinox.http.servlet.internal 739 1 1
org.eclipse.equinox.internal.app 1636 4 1 3
org.eclipse.equinox.internal.jsp.jasper 224 6 6
org.eclipse.equinox.internal.jsp.jasper.registry 39 2 2
org.eclipse.equinox.jsp.jasper 158 5 5
org.eclipse.equinox.launcher 1687 7 1 6
org.eclipse.help.internal 450 7 2 5
org.eclipse.help.internal.appserver 275 5 3 2
org.eclipse.help.internal.base 810 8 2 6
org.eclipse.help.internal.browser 665 5 5
org.eclipse.help.internal.context 314 1 1
org.eclipse.help.internal.index 340 2 2
org.eclipse.help.internal.search 3101 11 3 8
org.eclipse.help.internal.standalone 737 2 1 1
org.eclipse.help.internal.toc 838 3 2 1
org.eclipse.help.internal.util 554 1 1
org.eclipse.help.internal.webapp 86 4 3 1
org.eclipse.help.internal.webapp.data 2030 6 1 5
org.eclipse.help.internal.webapp.servlet 1874 8 1 7
org.eclipse.help.internal.xhtml 75 2 2
org.eclipse.help.search 669 6 6
org.eclipse.help.ui.internal 1820 14 3 11
org.eclipse.help.ui.internal.browser 34 1 1
org.eclipse.help.ui.internal.browser.embedded 607 1 1
org.eclipse.help.ui.internal.views 6899 15 15
org.eclipse.jdi.internal 6066 24 1 23
org.eclipse.jdi.internal.connect 926 2 2
org.eclipse.jdi.internal.jdwp 795 1 1
org.eclipse.jdi.internal.request 899 2 2
org.eclipse.jdi.internal.spy 2529 2 1 1
org.eclipse.jdt.apt.core.internal 1564 3 2 1
org.eclipse.jdt.apt.core.internal.declaration 1782 1 1
org.eclipse.jdt.apt.core.internal.env 1814 4 4
org.eclipse.jdt.apt.core.internal.generatedfile 1103 2 2
org.eclipse.jdt.apt.core.internal.type 267 2 1 1
org.eclipse.jdt.apt.core.internal.util 1571 16 16
org.eclipse.jdt.apt.core.util 443 2 2
org.eclipse.jdt.apt.ui.internal 42 2 2
org.eclipse.jdt.apt.ui.internal.preferences 1485 3 3
org.eclipse.jdt.core 4173 2 1 1
org.eclipse.jdt.core.dom 21941 86 5 81
org.eclipse.jdt.debug.ui.launchConfigurations 1501 1 1
org.eclipse.jdt.internal.apt.pluggable.core 58 1 1
org.eclipse.jdt.internal.codeassist 8286 7 1 6
org.eclipse.jdt.internal.codeassist.complete 5570 4 4
org.eclipse.jdt.internal.codeassist.select 1364 1 1
org.eclipse.jdt.internal.compiler 5730 9 9
org.eclipse.jdt.internal.compiler.apt.model 1951 19 19
org.eclipse.jdt.internal.compiler.apt.util 1149 3 1 2
org.eclipse.jdt.internal.compiler.ast 14380 20 20
org.eclipse.jdt.internal.compiler.batch 2334 5 5
org.eclipse.jdt.internal.compiler.classfmt 1757 4 4
org.eclipse.jdt.internal.compiler.codegen 8487 5 1 4
org.eclipse.jdt.internal.compiler.env 287 1 1
org.eclipse.jdt.internal.compiler.lookup 12447 12 2 10
org.eclipse.jdt.internal.compiler.parser 11956 8 8
org.eclipse.jdt.internal.compiler.parser.diagnose 1554 5 5
org.eclipse.jdt.internal.compiler.problem 5084 3 3
org.eclipse.jdt.internal.compiler.tool 1371 6 2 4
org.eclipse.jdt.internal.core 22294 45 24 21
org.eclipse.jdt.internal.core.builder 3406 15 6 9
org.eclipse.jdt.internal.core.dom.rewrite 4460 5 5
org.eclipse.jdt.internal.core.hierarchy 2388 1 1
org.eclipse.jdt.internal.core.index 1116 8 1 7
org.eclipse.jdt.internal.core.manipulation 114 2 2
org.eclipse.jdt.internal.core.search 1795 2 1 1
org.eclipse.jdt.internal.core.search.indexing 2065 2 2
org.eclipse.jdt.internal.core.search.matching 6645 5 2 3
org.eclipse.jdt.internal.core.search.processing 293 1 1
org.eclipse.jdt.internal.core.util 12464 3 3
org.eclipse.jdt.internal.corext.buildpath 766 2 2
org.eclipse.jdt.internal.corext.callhierarchy 715 1 1
org.eclipse.jdt.internal.corext.codemanipulation 3972 2 2
org.eclipse.jdt.internal.corext.dom 4480 3 3
org.eclipse.jdt.internal.corext.fix 4843 8 8
org.eclipse.jdt.internal.corext.javadoc 380 1 1
org.eclipse.jdt.internal.corext.refactoring 4530 3 3
org.eclipse.jdt.internal.corext.refactoring.base 325 1 1
org.eclipse.jdt.internal.corext.refactoring.changes 1418 2 2
org.eclipse.jdt.internal.corext.refactoring.code 9284 4 2 2
org.eclipse.jdt.internal.corext.refactoring.nls 2147 3 3
org.eclipse.jdt.internal.corext.refactoring.rename 5777 2 2
org.eclipse.jdt.internal.corext.refactoring.reorg 5173 5 1 4
org.eclipse.jdt.internal.corext.refactoring.sef 746 2 1 1
org.eclipse.jdt.internal.corext.refactoring.structure 12752 12 12
org.eclipse.jdt.internal.corext.refactoring.structure.constraints 1652 4 4
org.eclipse.jdt.internal.corext.refactoring.surround 385 1 1
org.eclipse.jdt.internal.corext.refactoring.typeconstraints 1283 1 1
org.eclipse.jdt.internal.corext.refactoring.typeconstraints.types 1249 4 4
org.eclipse.jdt.internal.corext.refactoring.typeconstraints.typesets 1295 11 9 2
org.eclipse.jdt.internal.corext.refactoring.typeconstraints2 435 8 8
org.eclipse.jdt.internal.corext.refactoring.util 877 1 1
org.eclipse.jdt.internal.corext.template.java 2264 2 2
org.eclipse.jdt.internal.corext.util 2493 1 1
org.eclipse.jdt.internal.debug.core 571 2 1 1
org.eclipse.jdt.internal.debug.core.breakpoints 2240 1 1
org.eclipse.jdt.internal.debug.core.hcr 917 2 2
org.eclipse.jdt.internal.debug.core.logicalstructures 761 3 3
org.eclipse.jdt.internal.debug.core.model 4548 2 2
org.eclipse.jdt.internal.debug.core.refactoring 1040 1 1
org.eclipse.jdt.internal.debug.eval.ast.engine 3851 3 1 2
org.eclipse.jdt.internal.debug.eval.ast.instructions 1957 2 1 1
org.eclipse.jdt.internal.debug.ui 7158 9 2 7
org.eclipse.jdt.internal.debug.ui.actions 5434 11 4 7
org.eclipse.jdt.internal.debug.ui.breakpoints 609 1 1
org.eclipse.jdt.internal.debug.ui.console 604 1 1
org.eclipse.jdt.internal.debug.ui.display 489 1 1
org.eclipse.jdt.internal.debug.ui.jres 2589 7 7
org.eclipse.jdt.internal.debug.ui.launcher 2145 2 2
org.eclipse.jdt.internal.debug.ui.monitors 842 6 6
org.eclipse.jdt.internal.debug.ui.propertypages 1561 4 4
org.eclipse.jdt.internal.debug.ui.snippeteditor 1991 2 2
org.eclipse.jdt.internal.debug.ui.sourcelookup 258 1 1
org.eclipse.jdt.internal.debug.ui.variables 316 1 1
org.eclipse.jdt.internal.eval 3421 5 1 4
org.eclipse.jdt.internal.formatter 6897 1 1
org.eclipse.jdt.internal.junit.buildpath 363 2 2
org.eclipse.jdt.internal.junit.launcher 693 2 2
org.eclipse.jdt.internal.junit.model 1826 1 1
org.eclipse.jdt.internal.junit.runner 934 4 1 3
org.eclipse.jdt.internal.junit.runner.junit3 239 2 2
org.eclipse.jdt.internal.junit.ui 4341 6 2 4
org.eclipse.jdt.internal.junit.util 742 1 1
org.eclipse.jdt.internal.launching 3908 17 3 14
org.eclipse.jdt.internal.ui 2282 3 1 2
org.eclipse.jdt.internal.ui.actions 3950 4 4
org.eclipse.jdt.internal.ui.browsing 3181 3 3
org.eclipse.jdt.internal.ui.callhierarchy 2439 6 6
org.eclipse.jdt.internal.ui.compare 2497 2 2
org.eclipse.jdt.internal.ui.dialogs 5021 14 14
org.eclipse.jdt.internal.ui.filters 709 2 2
org.eclipse.jdt.internal.ui.infoviews 960 1 1
org.eclipse.jdt.internal.ui.jarpackager 3612 3 3
org.eclipse.jdt.internal.ui.javadocexport 2887 23 1 22
org.eclipse.jdt.internal.ui.javaeditor 10674 14 3 11
org.eclipse.jdt.internal.ui.navigator 906 1 1
org.eclipse.jdt.internal.ui.packageview 3197 4 1 3
org.eclipse.jdt.internal.ui.preferences 13838 15 1 14
org.eclipse.jdt.internal.ui.preferences.cleanup 786 1 1
org.eclipse.jdt.internal.ui.preferences.formatter 5584 13 13
org.eclipse.jdt.internal.ui.propertiesfileeditor 779 1 1
org.eclipse.jdt.internal.ui.refactoring 7992 10 10
org.eclipse.jdt.internal.ui.refactoring.nls 1852 2 2
org.eclipse.jdt.internal.ui.refactoring.reorg 5027 3 3
org.eclipse.jdt.internal.ui.search 4222 26 26
org.eclipse.jdt.internal.ui.text 4740 7 7
org.eclipse.jdt.internal.ui.text.correction 12336 9 9
org.eclipse.jdt.internal.ui.text.java 6519 12 1 11
org.eclipse.jdt.internal.ui.text.java.hover 1643 3 3
org.eclipse.jdt.internal.ui.text.javadoc 828 1 1
org.eclipse.jdt.internal.ui.text.spelling 1075 1 1
org.eclipse.jdt.internal.ui.text.spelling.engine 1161 2 2
org.eclipse.jdt.internal.ui.text.template.contentassist 811 1 1
org.eclipse.jdt.internal.ui.text.template.preferences 137 1 1
org.eclipse.jdt.internal.ui.typehierarchy 2801 3 3
org.eclipse.jdt.internal.ui.viewsupport 3101 2 2
org.eclipse.jdt.internal.ui.wizards 2787 1 1
org.eclipse.jdt.internal.ui.wizards.buildpaths 7641 23 3 20
org.eclipse.jdt.internal.ui.wizards.buildpaths.newsourcepage 3306 4 1 3
org.eclipse.jdt.internal.ui.workingsets 3167 2 2
org.eclipse.jdt.junit.launcher 1017 1 1
org.eclipse.jdt.launching 2370 9 1 8
org.eclipse.jdt.launching.sourcelookup 701 1 1
org.eclipse.jdt.ui 2733 1 1
org.eclipse.jdt.ui.actions 9248 15 15
org.eclipse.jdt.ui.text 533 1 1
org.eclipse.jdt.ui.text.folding 726 1 1
org.eclipse.jdt.ui.text.java 830 3 3
org.eclipse.jdt.ui.wizards 2378 10 2 8
org.eclipse.jface.action 3872 5 5
org.eclipse.jface.bindings.keys 919 1 1
org.eclipse.jface.databinding.viewers 281 2 2
org.eclipse.jface.dialogs 3340 4 2 2
org.eclipse.jface.fieldassist 2178 2 2
org.eclipse.jface.internal 20 2 2
org.eclipse.jface.internal.databinding.provisional.swt 533 1 1
org.eclipse.jface.internal.text.html 882 2 1 1
org.eclipse.jface.internal.text.link.contentassist 1870 4 1 3
org.eclipse.jface.internal.text.revisions 1149 1 1
org.eclipse.jface.preference 3639 2 1 1
org.eclipse.jface.resource 1674 3 2 1
org.eclipse.jface.text 9264 14 14
org.eclipse.jface.text.formatter 495 3 3
org.eclipse.jface.text.hyperlink 530 1 1
org.eclipse.jface.text.link 1552 3 3
org.eclipse.jface.text.projection 1082 1 1
org.eclipse.jface.text.reconciler 502 1 1
org.eclipse.jface.text.rules 1531 5 5
org.eclipse.jface.text.source 5868 8 2 6
org.eclipse.jface.text.source.projection 1756 2 2
org.eclipse.jface.text.templates 984 1 1
org.eclipse.jface.viewers 8631 14 2 12
org.eclipse.jface.viewers.deferred 1367 1 1
org.eclipse.jface.wizard 1081 1 1
org.eclipse.jsch.internal.core 481 2 1 1
org.eclipse.jsch.internal.ui 466 2 2
org.eclipse.jsch.internal.ui.preference 1108 1 1
org.eclipse.ltk.core.refactoring 2389 2 2
org.eclipse.ltk.internal.core.refactoring 1843 3 1 2
org.eclipse.ltk.internal.core.refactoring.history 1631 2 1 1
org.eclipse.ltk.internal.ui.refactoring 3288 2 1 1
org.eclipse.ltk.internal.ui.refactoring.history 1836 4 1 3
org.eclipse.ltk.ui.refactoring 780 2 2
org.eclipse.ltk.ui.refactoring.history 1178 2 2
org.eclipse.osgi.baseadaptor 588 5 5
org.eclipse.osgi.baseadaptor.loader 326 1 1
org.eclipse.osgi.framework.internal.core 9731 36 6 30
org.eclipse.osgi.framework.internal.protocol 631 2 2
org.eclipse.osgi.framework.internal.protocol.reference 48 1 1
org.eclipse.osgi.framework.internal.reliablefile 555 3 3
org.eclipse.osgi.framework.util 695 3 1 2
org.eclipse.osgi.internal.baseadaptor 1909 3 3
org.eclipse.osgi.internal.module 2105 10 10
org.eclipse.osgi.internal.profile 391 1 1
org.eclipse.osgi.internal.resolver 3597 11 11
org.eclipse.osgi.internal.verifier 1631 8 2 6
org.eclipse.osgi.service.resolver 294 1 1
org.eclipse.osgi.storagemanager 509 3 1 2
org.eclipse.osgi.util 475 1 1
org.eclipse.pde.internal.build 4045 10 4 6
org.eclipse.pde.internal.build.builder 2803 7 7
org.eclipse.pde.internal.build.packager 468 2 2
org.eclipse.pde.internal.build.site 1195 1 1
org.eclipse.pde.internal.build.tasks 1443 2 2
org.eclipse.pde.internal.core 5974 23 6 17
org.eclipse.pde.internal.core.build 290 1 1
org.eclipse.pde.internal.core.builders 4266 9 9
org.eclipse.pde.internal.core.bundle 1019 4 4
org.eclipse.pde.internal.core.cheatsheet.comp 803 3 3
org.eclipse.pde.internal.core.cheatsheet.simple 1352 4 1 3
org.eclipse.pde.internal.core.content 56 3 2 1
org.eclipse.pde.internal.core.converter 981 6 2 4
org.eclipse.pde.internal.core.exports 983 1 1
org.eclipse.pde.internal.core.feature 1742 1 1
org.eclipse.pde.internal.core.plugin 2277 15 8 7
org.eclipse.pde.internal.core.product 1336 4 4
org.eclipse.pde.internal.core.schema 2272 9 5 4
org.eclipse.pde.internal.core.site 963 1 1
org.eclipse.pde.internal.core.target 889 4 4
org.eclipse.pde.internal.core.text 512 3 1 2
org.eclipse.pde.internal.core.text.build 225 1 1
org.eclipse.pde.internal.core.text.bundle 1230 3 3
org.eclipse.pde.internal.core.text.plugin 1585 9 6 3
org.eclipse.pde.internal.core.util 1410 8 8
org.eclipse.pde.internal.junit.runtime 160 2 2
org.eclipse.pde.internal.runtime 335 2 2
org.eclipse.pde.internal.runtime.logview 2358 4 2 2
org.eclipse.pde.internal.runtime.registry 805 6 6
org.eclipse.pde.internal.swt.tools 1972 102 102
org.eclipse.pde.internal.ui 3304 9 1 8
org.eclipse.pde.internal.ui.build 478 1 1
org.eclipse.pde.internal.ui.commands 1296 2 2
org.eclipse.pde.internal.ui.compare 1262 4 4
org.eclipse.pde.internal.ui.editor 3770 6 2 4
org.eclipse.pde.internal.ui.editor.build 2476 13 13
org.eclipse.pde.internal.ui.editor.cheatsheet.simple.details 800 1 1
org.eclipse.pde.internal.ui.editor.contentassist 2178 6 6
org.eclipse.pde.internal.ui.editor.contentassist.display 792 4 1 3
org.eclipse.pde.internal.ui.editor.feature 5646 11 11
org.eclipse.pde.internal.ui.editor.plugin 9222 29 1 28
org.eclipse.pde.internal.ui.editor.product 3185 2 2
org.eclipse.pde.internal.ui.editor.schema 3194 6 6
org.eclipse.pde.internal.ui.editor.site 2591 6 2 4
org.eclipse.pde.internal.ui.editor.target 2482 2 1 1
org.eclipse.pde.internal.ui.editor.text 1808 6 1 5
org.eclipse.pde.internal.ui.launcher 4324 5 1 4
org.eclipse.pde.internal.ui.parts 1102 2 1 1
org.eclipse.pde.internal.ui.preferences 3058 3 3
org.eclipse.pde.internal.ui.samples 1071 4 4
org.eclipse.pde.internal.ui.search 1121 6 6
org.eclipse.pde.internal.ui.search.dependencies 1498 8 8
org.eclipse.pde.internal.ui.templates 368 4 3 1
org.eclipse.pde.internal.ui.templates.ide 2020 8 8
org.eclipse.pde.internal.ui.util 1936 4 4
org.eclipse.pde.internal.ui.views.dependencies 1940 6 6
org.eclipse.pde.internal.ui.views.plugins 1222 3 3
org.eclipse.pde.internal.ui.wizards 984 1 1
org.eclipse.pde.internal.ui.wizards.exports 1885 1 1
org.eclipse.pde.internal.ui.wizards.extension 1468 2 1 1
org.eclipse.pde.internal.ui.wizards.feature 849 1 1
org.eclipse.pde.internal.ui.wizards.imports 2609 3 3
org.eclipse.pde.internal.ui.wizards.plugin 2597 2 2
org.eclipse.pde.internal.ui.wizards.product 1863 1 1
org.eclipse.pde.internal.ui.wizards.provisioner 320 3 3
org.eclipse.pde.internal.ui.wizards.provisioner.update 373 2 2
org.eclipse.pde.internal.ui.wizards.templates 649 6 1 5
org.eclipse.pde.internal.ui.wizards.tools 1293 1 1
org.eclipse.pde.ui.templates 1109 1 1
org.eclipse.search.core.text 51 1 1
org.eclipse.search.internal.core.text 787 3 3
org.eclipse.search.internal.ui 3727 4 4
org.eclipse.search.internal.ui.text 2366 4 4
org.eclipse.search.internal.ui.util 496 1 1
org.eclipse.search.ui.text 1194 5 5
org.eclipse.search2.internal.ui 1638 8 1 7
org.eclipse.search2.internal.ui.text 878 4 4
org.eclipse.swt.accessibility 1703 1 1
org.eclipse.swt.browser 5306 22 7 15
org.eclipse.swt.custom 13504 20 20
org.eclipse.swt.dnd 1971 6 6
org.eclipse.swt.events 362 4 4
org.eclipse.swt.graphics 7193 39 3 36
org.eclipse.swt.internal.cde 152 17 17
org.eclipse.swt.internal.gtk 9444 3 3
org.eclipse.swt.internal.image 9526 74 74
org.eclipse.swt.internal.mozilla 2999 592 592
org.eclipse.swt.internal.theme 938 2 2
org.eclipse.swt.widgets 23373 11 11
org.eclipse.team.core 778 1 1
org.eclipse.team.core.diff.provider 353 1 1
org.eclipse.team.core.mapping 247 2 1 1
org.eclipse.team.core.mapping.provider 701 2 2
org.eclipse.team.core.synchronize 697 1 1
org.eclipse.team.core.variants 844 1 1
org.eclipse.team.internal.ccvs.core 2958 11 4 7
org.eclipse.team.internal.ccvs.core.client 2665 8 8
org.eclipse.team.internal.ccvs.core.client.listeners 784 7 1 6
org.eclipse.team.internal.ccvs.core.connection 1028 4 2 2
org.eclipse.team.internal.ccvs.core.filehistory 319 1 1
org.eclipse.team.internal.ccvs.core.filesystem 589 2 1 1
org.eclipse.team.internal.ccvs.core.resources 4199 13 2 11
org.eclipse.team.internal.ccvs.core.syncinfo 1075 3 3
org.eclipse.team.internal.ccvs.core.util 1798 1 1
org.eclipse.team.internal.ccvs.ssh 2335 4 1 3
org.eclipse.team.internal.ccvs.ssh2 614 5 1 4
org.eclipse.team.internal.ccvs.ui 10608 16 2 14
org.eclipse.team.internal.ccvs.ui.actions 2599 3 1 2
org.eclipse.team.internal.ccvs.ui.mappings 2954 6 2 4
org.eclipse.team.internal.ccvs.ui.operations 3723 11 1 10
org.eclipse.team.internal.ccvs.ui.repo 2955 8 1 7
org.eclipse.team.internal.ccvs.ui.subscriber 2814 11 3 8
org.eclipse.team.internal.ccvs.ui.tags 2459 6 6
org.eclipse.team.internal.ccvs.ui.wizards 5857 7 7
org.eclipse.team.internal.core 1693 5 2 3
org.eclipse.team.internal.core.streams 711 2 2
org.eclipse.team.internal.ui 2202 5 1 4
org.eclipse.team.internal.ui.dialogs 1373 1 1
org.eclipse.team.internal.ui.history 2566 3 3
org.eclipse.team.internal.ui.mapping 4501 3 3
org.eclipse.team.internal.ui.preferences 688 1 1
org.eclipse.team.internal.ui.registry 497 1 1
org.eclipse.team.internal.ui.synchronize 7531 14 2 12
org.eclipse.team.internal.ui.synchronize.actions 1944 1 1
org.eclipse.team.internal.ui.wizards 1990 4 4
org.eclipse.team.ui.history 503 1 1
org.eclipse.team.ui.mapping 753 1 1
org.eclipse.team.ui.synchronize 3331 8 5 3
org.eclipse.text.edits 1483 4 4
org.eclipse.tomcat.internal 660 7 2 5
org.eclipse.ui 2254 5 5
org.eclipse.ui.actions 6734 5 2 3
org.eclipse.ui.activities 905 1 1
org.eclipse.ui.commands 639 2 2
org.eclipse.ui.console 1371 9 1 8
org.eclipse.ui.contexts 195 1 1
org.eclipse.ui.dialogs 8666 15 15
org.eclipse.ui.externaltools.internal.launchConfigurations 916 3 3
org.eclipse.ui.externaltools.internal.model 566 2 1 1
org.eclipse.ui.externaltools.internal.program.launchConfigurations 211 2 2
org.eclipse.ui.externaltools.internal.ui 1264 4 1 3
org.eclipse.ui.forms 1056 1 1
org.eclipse.ui.forms.widgets 4477 3 3
org.eclipse.ui.ide.undo 1460 6 6
org.eclipse.ui.internal 36194 63 6 57
org.eclipse.ui.internal.actions 976 2 2
org.eclipse.ui.internal.activities 2002 3 3
org.eclipse.ui.internal.activities.ws 1222 3 3
org.eclipse.ui.internal.browser 3405 9 4 5
org.eclipse.ui.internal.browser.browsers 246 1 1
org.eclipse.ui.internal.cheatsheets 754 1 1
org.eclipse.ui.internal.cheatsheets.actions 237 1 1
org.eclipse.ui.internal.cheatsheets.composite.explorer 433 3 3
org.eclipse.ui.internal.cheatsheets.composite.model 705 2 2
org.eclipse.ui.internal.cheatsheets.composite.parser 369 4 1 3
org.eclipse.ui.internal.cheatsheets.data 1324 10 10
org.eclipse.ui.internal.cheatsheets.dialogs 473 2 1 1
org.eclipse.ui.internal.cheatsheets.registry 838 5 5
org.eclipse.ui.internal.cheatsheets.views 2369 4 4
org.eclipse.ui.internal.commands 1350 2 2
org.eclipse.ui.internal.console 2262 8 1 7
org.eclipse.ui.internal.contexts 1001 2 1 1
org.eclipse.ui.internal.decorators 1691 5 5
org.eclipse.ui.internal.dialogs 10082 37 6 31
org.eclipse.ui.internal.editors.text 5082 13 13
org.eclipse.ui.internal.expressions 498 9 9
org.eclipse.ui.internal.forms 369 1 1
org.eclipse.ui.internal.forms.widgets 3632 4 4
org.eclipse.ui.internal.handlers 2037 1 1
org.eclipse.ui.internal.help 441 1 1
org.eclipse.ui.internal.ide 3722 24 1 23
org.eclipse.ui.internal.ide.actions 567 2 2
org.eclipse.ui.internal.ide.dialogs 5158 4 1 3
org.eclipse.ui.internal.ide.model 611 2 2
org.eclipse.ui.internal.ide.registry 506 5 5
org.eclipse.ui.internal.intro.impl 114 1 1
org.eclipse.ui.internal.intro.impl.html 712 1 1
org.eclipse.ui.internal.intro.impl.model 2542 6 2 4
org.eclipse.ui.internal.intro.impl.model.loader 431 1 1
org.eclipse.ui.internal.intro.impl.parts 269 1 1
org.eclipse.ui.internal.intro.impl.presentations 1098 1 1
org.eclipse.ui.internal.intro.impl.swt 1047 3 3
org.eclipse.ui.internal.intro.impl.util 612 1 1
org.eclipse.ui.internal.intro.universal 2279 5 1 4
org.eclipse.ui.internal.intro.universal.contentdetect 142 1 1
org.eclipse.ui.internal.keys 4753 15 1 14
org.eclipse.ui.internal.layout 1997 1 1
org.eclipse.ui.internal.menus 2023 5 5
org.eclipse.ui.internal.navigator 3008 15 2 13
org.eclipse.ui.internal.navigator.extensions 1850 10 10
org.eclipse.ui.internal.navigator.filters 810 1 1
org.eclipse.ui.internal.navigator.resources.actions 1597 1 1
org.eclipse.ui.internal.navigator.resources.plugin 84 1 1
org.eclipse.ui.internal.navigator.wizards 216 1 1
org.eclipse.ui.internal.navigator.workingsets 121 1 1
org.eclipse.ui.internal.net 716 2 2
org.eclipse.ui.internal.operations 313 1 1
org.eclipse.ui.internal.preferences 1086 16 16
org.eclipse.ui.internal.presentations 2977 6 1 5
org.eclipse.ui.internal.presentations.r21 197 1 1
org.eclipse.ui.internal.presentations.r21.widgets 2367 2 2
org.eclipse.ui.internal.presentations.util 1309 2 2
org.eclipse.ui.internal.progress 5061 12 1 11
org.eclipse.ui.internal.registry 3966 11 4 7
org.eclipse.ui.internal.services 1458 2 2
org.eclipse.ui.internal.statushandlers 617 2 2
org.eclipse.ui.internal.testing 70 1 1
org.eclipse.ui.internal.texteditor 1523 2 2
org.eclipse.ui.internal.texteditor.quickdiff 1225 8 8
org.eclipse.ui.internal.texteditor.quickdiff.compare.equivalence 135 1 1
org.eclipse.ui.internal.texteditor.quickdiff.compare.rangedifferencer 704 2 2
org.eclipse.ui.internal.themes 2580 2 2
org.eclipse.ui.internal.util 738 3 3
org.eclipse.ui.internal.views 31 1 1
org.eclipse.ui.internal.views.properties.tabbed 17 1 1
org.eclipse.ui.internal.views.properties.tabbed.view 1698 3 1 2
org.eclipse.ui.internal.wizards.datatransfer 3186 6 1 5
org.eclipse.ui.internal.wizards.preferences 738 4 4
org.eclipse.ui.intro.config 294 1 1
org.eclipse.ui.navigator 1283 3 3
org.eclipse.ui.part 3007 4 4
org.eclipse.ui.progress 317 2 2
org.eclipse.ui.texteditor 13627 6 1 5
org.eclipse.ui.texteditor.quickdiff 199 4 4
org.eclipse.ui.texteditor.spelling 335 2 1 1
org.eclipse.ui.texteditor.templates 1281 1 1
org.eclipse.ui.views.markers.internal 8350 27 2 25
org.eclipse.ui.views.navigator 2611 1 1
org.eclipse.ui.views.properties.tabbed 589 4 4
org.eclipse.ui.views.tasklist 3074 1 1
org.eclipse.update.configuration 185 1 1
org.eclipse.update.core 2265 10 4 6
org.eclipse.update.core.model 1755 5 3 2
org.eclipse.update.internal.configurator 2861 19 5 14
org.eclipse.update.internal.configurator.branding 259 1 1
org.eclipse.update.internal.core 7153 36 12 24
org.eclipse.update.internal.core.connection 381 4 4
org.eclipse.update.internal.jarprocessor 1133 2 1 1
org.eclipse.update.internal.mirror 785 2 1 1
org.eclipse.update.internal.model 708 6 6
org.eclipse.update.internal.operations 1976 2 1 1
org.eclipse.update.internal.provisional 563 2 2
org.eclipse.update.internal.scheduler 438 1 1
org.eclipse.update.internal.search 733 3 3
org.eclipse.update.internal.security 476 4 1 3
org.eclipse.update.internal.ui 979 9 2 7
org.eclipse.update.internal.ui.model 1155 9 6 3
org.eclipse.update.internal.ui.security 427 1 1
org.eclipse.update.internal.ui.views 2034 7 1 6
org.eclipse.update.internal.ui.wizards 4966 24 11 13
org.eclipse.update.internal.verifier 224 1 1
org.eclipse.update.search 378 4 2 2
org.eclipse.update.standalone 821 5 5
org.osgi.framework 1319 12 12
org.osgi.service.application 351 4 4
org.osgi.util.tracker 312 2 2
SA / SA_LOCAL_SELF_COMPARISON

This method compares a local variable with itself, and may indicate a typo or a logic error. Make sure that you are comparing the right things.

IC / IC_SUPERCLASS_USES_SUBCLASS_DURING_INITIALIZATION

During the initialization of a class, the class makes an active use of a subclass. That subclass will not yet be initialized at the time of this use. For example, in the following code, foo will be null.

public class CircularClassInitialization {
	static class InnerClassSingleton extends CircularClassInitialization {
		static InnerClassSingleton singleton = new InnerClassSingleton();
	}
	
	static CircularClassInitialization foo = InnerClassSingleton.singleton;
}
UG / UG_SYNC_SET_UNSYNC_GET

This class contains similarly-named get and set methods where the set method is synchronized and the get method is not.  This may result in incorrect behavior at runtime, as callers of the get method will not necessarily see a consistent state for the object.  The get method should be made synchronized.

Nm / NM_FIELD_NAMING_CONVENTION

Names of fields that are not final should be in mixed case with a lowercase first letter and the first letters of subsequent words capitalized.

SA / SA_LOCAL_DOUBLE_ASSIGNMENT

This method contains a double assignment of a local variable; e.g.

  public void foo() {
    int x,y;
    x = x = 17;
  }

Assigning the same value to a variable twice is useless, and may indicate a logic error or typo.

UPM / UPM_UNCALLED_PRIVATE_METHOD

This private method is never called. Although it is possible that the method will be invoked through reflection, it is more likely that the method is never used, and should be removed.

Eq / EQ_COMPARETO_USE_OBJECT_EQUALS

This class defines a compareTo(...) method but inherits its equals() method from java.lang.Object. Generally, the value of compareTo should return zero if and only if equals returns true. If this is violated, weird and unpredictable failures will occur in classes such as PriorityQueue. In Java 5 the PriorityQueue.remove method uses the compareTo method, while in Java 6 it uses the equals method.

From the JavaDoc for the compareTo method in the Comparable interface:

It is strongly recommended, but not strictly required that (x.compareTo(y)==0) == (x.equals(y)). Generally speaking, any class that implements the Comparable interface and violates this condition should clearly indicate this fact. The recommended language is "Note: this class has a natural ordering that is inconsistent with equals."
Nm / NM_VERY_CONFUSING

The referenced methods have names that differ only by capitalization or the packages of their parameters. This is very confusing because if the capitalization and parameter package names were identical then one of the methods would override the other.

Dm / DMI_THREAD_PASSED_WHERE_RUNNABLE_EXPECTED

A Thread object is passed as a parameter to a method where a Runnable is expected. This is rather unusual, and may indicate a logic error or cause unexpected behavior.

Bx / DM_NUMBER_CTOR

Using new Integer(int) is guaranteed to always result in a new object whereas Integer.valueOf(int) allows caching of values to be done by the compiler, class library, or JVM. Using of cached values avoids object allocation and the code will be faster.

Values between -128 and 127 are guaranteed to have corresponding cached instances and using valueOf is approximately 3.5 times faster than using constructor. For values outside the constant range the performance of both styles is the same.

Unless the class must be compatible with JVMs predating Java 1.5, use either autoboxing or the valueOf() method when creating instances of Long, Integer, Short, Character, and Byte.

SIC / SIC_INNER_SHOULD_BE_STATIC

This class is an inner class, but does not use its embedded reference to the object which created it.  This reference makes the instances of the class larger, and may keep the reference to the creator object alive longer than necessary.  If possible, the class should be made static.

RCN / RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE

This method contains a redundant check of a known null value against the constant null.

TLW / TLW_TWO_LOCK_WAIT

Waiting on a monitor while two locks are held may cause deadlock.   Performing a wait only releases the lock on the object being waited on, not any other locks.   This not necessarily a bug, but is worth examining closely.

IA / IA_AMBIGUOUS_INVOCATION_OF_INHERITED_OR_OUTER_METHOD

An inner class is invoking a method that could be resolved to either a inherited method or a method defined in an outer class. By the Java semantics, it will be resolved to invoke the inherited method, but this may not be want you intend. If you really intend to invoke the inherited method, invoke it by invoking the method on super (e.g., invoke super.foo(17)), and thus it will be clear to other readers of your code and to FindBugs that you want to invoke the inherited method, not the method in the outer class.

ES / ES_COMPARING_PARAMETER_STRING_WITH_EQ

This code compares a java.lang.String parameter for reference equality using the == or != operators. Requiring callers to pass only String constants or interned strings to a method is unnecessarily fragile, and rarely leads to measurable performance gains. Consider using the equals(Object) method instead.

Dm / DMI_COLLECTION_OF_URLS

This method or field is or uses a Map or Set of URLs. Since both the equals and hashCode method of URL perform domain name resolution, this can result in a big performance hit. See http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-hashcode-make.html for more information. Consider using java.net.URI instead.

Dm / DM_STRING_VOID_CTOR

Creating a new java.lang.String object using the no-argument constructor wastes memory because the object so created will be functionally indistinguishable from the empty string constant "".  Java guarantees that identical string constants will be represented by the same String object.  Therefore, you should just use the empty string constant directly.

RR / SR_NOT_CHECKED

This method ignores the return value of java.io.InputStream.skip() which can skip multiple bytes.  If the return value is not checked, the caller will not be able to correctly handle the case where fewer bytes were skipped than the caller requested.  This is a particularly insidious kind of bug, because in many programs, skips from input streams usually do skip the full amount of data requested, causing the program to fail only sporadically. With Buffered streams, however, skip() will only skip data in the buffer, and will routinely fail to skip the requested number of bytes.

Nm / NM_METHOD_NAMING_CONVENTION

Methods should be verbs, in mixed case with the first letter lowercase, with the first letter of each internal word capitalized.

NP / NP_NULL_PARAM_DEREF_NONVIRTUAL

A possibly-null value is passed to a method which unconditionally dereferences it. This will almost certainly result in a null pointer exception.

RV / RV_RETURN_VALUE_IGNORED

The return value of this method should be checked. One common cause of this warning is to invoke a method on an immutable object, thinking that it updates the object. For example, in the following code fragment,

String dateString = getHeaderField(name);
dateString.trim();

the programmer seems to be thinking that the trim() method will update the String referenced by dateString. But since Strings are immutable, the trim() function returns a new String value, which is being ignored here. The code should be corrected to:

String dateString = getHeaderField(name);
dateString = dateString.trim();
IP / IP_PARAMETER_IS_DEAD_BUT_OVERWRITTEN

The initial value of this parameter is ignored, and the parameter is overwritten here. This often indicates a mistaken belief that the write to the parameter will be conveyed back to the caller.

DP / DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED

This code creates a classloader, which requires a security manager. If this code will be granted security permissions, but might be invoked by code that does not have security permissions, then the classloader creation needs to occur inside a doPrivileged block.

ES / ES_COMPARING_STRINGS_WITH_EQ

This code compares java.lang.String objects for reference equality using the == or != operators. Unless both strings are either constants in a source file, or have been interned using the String.intern() method, the same string value may be represented by two different String objects. Consider using the equals(Object) method instead.

SA / SA_FIELD_SELF_COMPARISON

This method compares a field with itself, and may indicate a typo or a logic error. Make sure that you are comparing the right things.

UW / UW_UNCOND_WAIT

This method contains a call to java.lang.Object.wait() which is not guarded by conditional control flow.  The code should verify that condition it intends to wait for is not already satisfied before calling wait; any previous notifications will be ignored.

INT / INT_VACUOUS_COMPARISON

There is an integer comparison that always returns the same value (e.g., x <= Integer.MAX_VALUE).

UwF / UWF_UNWRITTEN_FIELD

This field is never written.  All reads of it will return the default value. Check for errors (should it have been initialized?), or remove it if it is useless.

BC / BC_EQUALS_METHOD_SHOULD_WORK_FOR_ALL_OBJECTS

The equals(Object o) method shouldn't make any assumptions about the type of o. It should simply return false if o is not the same type as this.

CN / CN_IDIOM_NO_SUPER_CALL

This non-final class defines a clone() method that does not call super.clone(). If this class ("A") is extended by a subclass ("B"), and the subclass B calls super.clone(), then it is likely that B's clone() method will return an object of type A, which violates the standard contract for clone().

If all clone() methods call super.clone(), then they are guaranteed to use Object.clone(), which always returns an object of the correct type.

ML / ML_SYNC_ON_UPDATED_FIELD

This method synchronizes on an object references from a mutable field. This is unlikely to have useful semantics, since different threads may be synchronizing on different objects.

Dm / DM_NEXTINT_VIA_NEXTDOUBLE

If r is a java.util.Random, you can generate a random number from 0 to n-1 using r.nextInt(n) Rather than using (int)(r.nextDouble() * n).

Dm / DM_GC

Code explicitly invokes garbage collection. Except for specific use in benchmarking, this is very dubious.

In the past, situations where people have explicitly invoked the garbage collector in routines such as close or finalize methods has led to huge performance black holes. Garbage collection can be expensive. Any situation that forces hundreds or thousands of garbage collections will bring the machine to a crawl.

RV / RV_DONT_JUST_NULL_CHECK_READLINE

The value returned by readLine is discarded after checking to see if the return value is non-null. In almost all situations, if the result is non-null, you will want to use that non-null value. Calling readLine again will give you a different line.

UrF / URF_UNREAD_FIELD

This field is never read.  Consider removing it from the class.

NP / NP_NULL_INSTANCEOF

This instanceof test will always return false, since the value being checked is guaranteed to be null. Although this is safe, make sure it isn't an indication of some misunderstanding or some other logic error.

NP / NP_LOAD_OF_KNOWN_NULL_VALUE

The variable referenced at this point is known to be null due to an earlier check against null. Although this is valid, it might be a mistake (perhaps you intended to refer to a different variable, or perhaps the earlier check to see if the variable is null should have been a check to see if it was nonnull.

Dm / DMI_BLOCKING_METHODS_ON_URL

The equals and hashCode method of URL perform domain name resolution, this can result in a big performance hit. See http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-hashcode-make.html for more information. Consider using java.net.URI instead.

IM / IM_BAD_CHECK_FOR_ODD

The code uses x % 2 == 1 to check to see if a value is odd, but this won't work for negative numbers (e.g., (-5) % 2 == -1). If this code is intending to check for oddness, consider using x & 1 == 1, or x % 2 != 0.

EC / EC_UNRELATED_INTERFACES

This method calls equals(Object) on two references of unrelated interface types, where neither is a subtype of the other, and there are no known non-abstract classes which implement both interfaces. Therefore, the objects being compared are unlikely to be members of the same class at runtime (unless some application classes were not analyzed, or dynamic class loading can occur at runtime). According to the contract of equals(), objects of different classes should always compare as unequal; therefore, according to the contract defined by java.lang.Object.equals(Object), the result of this comparison will always be false at runtime.

SWL / SWL_SLEEP_WITH_LOCK_HELD

This method calls Thread.sleep() with a lock held. This may result in very poor performance and scalability, or a deadlock, since other threads may be waiting to acquire the lock. It is a much better idea to call wait() on the lock, which releases the lock and allows other threads to run.

IS / IS2_INCONSISTENT_SYNC

The fields of this class appear to be accessed inconsistently with respect to synchronization.  This bug report indicates that the bug pattern detector judged that

  1. The class contains a mix of locked and unlocked accesses,
  2. At least one locked access was performed by one of the class's own methods, and
  3. The number of unsynchronized field accesses (reads and writes) was no more than one third of all accesses, with writes being weighed twice as high as reads

A typical bug matching this bug pattern is forgetting to synchronize one of the methods in a class that is intended to be thread-safe.

You can select the nodes labeled "Unsynchronized access" to show the code locations where the detector believed that a field was accessed without synchronization.

Note that there are various sources of inaccuracy in this detector; for example, the detector cannot statically detect all situations in which a lock is held.  Also, even when the detector is accurate in distinguishing locked vs. unlocked accesses, the code in question may still be correct.

This description refers to the "IS2" version of the pattern detector, which has more accurate ways of detecting locked vs. unlocked accesses than the older "IS" detector.

CN / CN_IDIOM

Class implements Cloneable but does not define or use the clone method.

Se / SE_COMPARATOR_SHOULD_BE_SERIALIZABLE

This class implements the Comparator interface. You should consider whether or not it should also implement the Serializable interface. If a comparator is used to construct an ordered collection such as a TreeMap, then the TreeMap will be serializable only if the comparator is also serializable. As most comparators have little or no state, making them serializable is generally easy and good defensive programming.

DMI / DMI_INVOKING_TOSTRING_ON_ARRAY

The code invokes toString on an array, which will generate a fairly useless result such as [C@16f0472. Consider using Arrays.toString to convert the array into a readable String that gives the contents of the array. See Programming Puzzlers, chapter 3, puzzle 12.

NP / NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE

A reference value which is null on some exception control path is dereferenced here.  This may lead to a NullPointerException when the code is executed.  The value may be null because it was return from a method which is known to return possibly-null values.

Dm / DM_EXIT

Invoking System.exit shuts down the entire Java virtual machine. This should only been done when it is appropriate. Such calls make it hard or impossible for your code to be invoked by other code. Consider throwing a RuntimeException instead.

DC / DC_DOUBLECHECK

This method may contain an instance of double-checked locking.  This idiom is not correct according to the semantics of the Java memory model.  For more information, see the web page http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html.

NN / NN_NAKED_NOTIFY

A call to notify() or notifyAll() was made without any (apparent) accompanying modification to mutable object state.  In general, calling a notify method on a monitor is done because some condition another thread is waiting for has become true.  However, for the condition to be meaningful, it must involve a heap object that is visible to both threads.

This bug does not necessarily indicate an error, since the change to mutable object state may have taken place in a method which then called the method containing the notification.

UwF / UWF_NULL_FIELD

All writes to this field are of the constant value null, and thus all reads of the field will return null. Check for errors, or remove it if it is useless.

OS / OS_OPEN_STREAM

The method creates an IO stream object, does not assign it to any fields, pass it to other methods that might close it, or return it, and does not appear to close the stream on all paths out of the method.  This may result in a file descriptor leak.  It is generally a good idea to use a finally block to ensure that streams are closed.

HE / HE_USE_OF_UNHASHABLE_CLASS

A class defines an equals(Object) method but not a hashCode() method, and thus doesn't fulfill the requirement that equal Objects have equal hashCodes. An instance of this class is used in a hash data structure, making the need to fix this problem of highest importance.

EC / EC_BAD_ARRAY_COMPARE

This method invokes the .equals(Object o) method on an array. Since arrays do not override the equals method of Object, calling equals on an array is the same as comparing their addresses. To compare the contents of the arrays, use java.util.Arrays.equals(Object[], Object[]).

Se / SE_BAD_FIELD

This Serializable class defines a non-primitive instance field which is neither transient, Serializable, or java.lang.Object, and does not appear to implement the Externalizable interface or the readObject() and writeObject() methods.  Objects of this class will not be deserialized correctly if a non-Serializable object is stored in this field.

REC / REC_CATCH_EXCEPTION

This method uses a try-catch block that catches Exception objects, but Exception is not thrown within the try block, and RuntimeException is not explicitly caught. It is a common bug pattern to say try { ... } catch (Exception e) { something } as a shorthand for catching a number of types of exception each of whose catch blocks is identical, but this construct also accidentally catches RuntimeException as well, masking potential bugs.

UR / UR_UNINIT_READ

This constructor reads a field which has not yet been assigned a value.  This is often caused when the programmer mistakenly uses the field instead of one of the constructor's parameters.

RR / RR_NOT_CHECKED

This method ignores the return value of one of the variants of java.io.InputStream.read() which can return multiple bytes.  If the return value is not checked, the caller will not be able to correctly handle the case where fewer bytes were read than the caller requested.  This is a particularly insidious kind of bug, because in many programs, reads from input streams usually do read the full amount of data requested, causing the program to fail only sporadically.

RCN / RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE

This method contains a redundant check of a known non-null value against the constant null.

EC / EC_ARRAY_AND_NONARRAY

This method invokes the .equals(Object o) to compare an array and a reference that doesn't seem to be an array. If things being compared are of different types, they are guaranteed to be unequal and the comparison is almost certainly an error. Even if they are both arrays, the equals method on arrays only determines of the two arrays are the same object. To compare the contents of the arrays, use java.util.Arrays.equals(Object[], Object[]).

BC / BC_IMPOSSIBLE_INSTANCEOF

This instanceof test will always return false. Although this is safe, make sure it isn't an indication of some misunderstanding or some other logic error.

SS / SS_SHOULD_BE_STATIC

This class contains an instance final field that is initialized to a compile-time static value. Consider making the field static.

ST / ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD

This instance method writes to a static field. This is tricky to get correct if multiple instances are being manipulated, and generally bad practice.

BIT / BIT_IOR

This method compares an expression of the form (a | C) to D. which will always compare unequal due to the specific values of constants C and D. This may indicate a logic error or typo.

Typically, this bug occurs because the code wants to perform a membership test in a bit set, but uses the bitwise OR operator ("|") instead of bitwise AND ("&").

NP / NP_TOSTRING_COULD_RETURN_NULL

This toString method seems to return null in some circumstances. A liberal reading of the spec could be interpreted as allowing this, but it is probably a bad idea and could cause other code to break. Return the empty string or some other appropriate string rather than null.

Se / SE_TRANSIENT_FIELD_NOT_RESTORED

This class contains a field that is updated at multiple places in the class, thus it seems to be part of the state of the class. However, since the field is marked as transient and not set in readObject or readResolve, it will contain the default value in any deserialized instance of the class.

IL / IL_INFINITE_RECURSIVE_LOOP

This method unconditionally invokes itself. This would seem to indicate an infinite recursive loop that will result in a stack overflow.

Dm / DM_STRING_TOSTRING

Calling String.toString() is just a redundant operation. Just use the String.

VA / VA_PRIMITIVE_ARRAY_PASSED_TO_OBJECT_VARARG

This code passes a primitive array to a function that takes a variable number of object arguments. This creates an array of length one to hold the primitive array and passes it to the function.

NS / NS_NON_SHORT_CIRCUIT

This code seems to be using non-short-circuit logic (e.g., & or |) rather than short-circuit logic (&& or ||). Non-short-circuit logic causes both sides of the expression to be evaluated even when the result can be inferred from knowing the left-hand side. This can be less efficient and can result in errors if the left-hand side guards cases when evaluating the right-hand side can generate an error.

See the Java Language Specification for details

NP / NP_NULL_PARAM_DEREF

This method call passes a null value to a method which might dereference it unconditionally.

DLS / DLS_DEAD_LOCAL_STORE

This instruction assigns a value to a local variable, but the value is not read by any subsequent instruction. Often, this indicates an error, because the value computed is never used.

Note that Sun's javac compiler often generates dead stores for final local variables. Because FindBugs is a bytecode-based tool, there is no easy way to eliminate these false positives.

Dm / DM_BOOLEAN_CTOR

Creating new instances of java.lang.Boolean wastes memory, since Boolean objects are immutable and there are only two useful values of this type.  Use the Boolean.valueOf() method (or Java 1.5 autoboxing) to create Boolean objects instead.

NP / NP_ALWAYS_NULL_EXCEPTION

A pointer which is null on an exception path is dereferenced here.  This will lead to a NullPointerException when the code is executed.  Note that because FindBugs currently does not prune infeasible exception paths, this may be a false warning.

Also note that FindBugs considers the default case of a switch statement to be an exception path, since the default case is often infeasible.

LI / LI_LAZY_INIT_STATIC

This method contains an unsynchronized lazy initialization of a non-volatile static field. Because the compiler or processor may reorder instructions, threads are not guaranteed to see a completely initialized object, if the method can be called by multiple threads. You can make the field volatile to correct the problem. For more information, see the Java Memory Model web site.

HE / HE_EQUALS_USE_HASHCODE

This class overrides equals(Object), but does not override hashCode(), and inherits the implementation of hashCode() from java.lang.Object (which returns the identity hash code, an arbitrary value assigned to the object by the VM).  Therefore, the class is very likely to violate the invariant that equal objects must have equal hashcodes.

If you don't think instances of this class will ever be inserted into a HashMap/HashTable, the recommended hashCode implementation to use is:

public int hashCode() {
  assert false : "hashCode not designed";
  return 42; // any arbitrary constant will do 
  }
DB / DB_DUPLICATE_BRANCHES

This method uses the same code to implement two branches of a conditional branch. Check to ensure that this isn't a coding mistake.

Dm / DM_STRING_CTOR

Using the java.lang.String(String) constructor wastes memory because the object so constructed will be functionally indistinguishable from the String passed as a parameter.  Just use the argument String directly.

FE / FE_FLOATING_POINT_EQUALITY

This operation compares two floating point values for equality. Because floating point calculations may involve rounding, calculated float and double values may not be accurate. For values that must be precise, such as monetary values, consider using a fixed-precision type such as BigDecimal. For values that need not be precise, consider comparing for equality within some range, for example: if ( Math.abs(x - y) < .0000001 ). See the Java Language Specification, section 4.2.4.

Se / SE_BAD_FIELD_STORE

A non-serializable value is stored into a non-transient field of a serializable class.

ICAST / ICAST_INTEGER_MULTIPLY_CAST_TO_LONG

This code performs integer multiply and then converts the result to a long, as in:

 
	long convertDaysToMilliseconds(int days) { return 1000*3600*24*days; } 
If the multiplication is done using long arithmetic, you can avoid the possibility that the result will overflow. For example, you could fix the above code to:
 
	long convertDaysToMilliseconds(int days) { return 1000L*3600*24*days; } 
or
 
	static final long MILLISECONDS_PER_DAY = 24L*3600*1000;
	long convertDaysToMilliseconds(int days) { return days * MILLISECONDS_PER_DAY; } 

UI / UI_INHERITANCE_UNSAFE_GETRESOURCE

Calling this.getClass().getResource(...) could give results other than expected if this class is extended by a class in another package.

SI / SI_INSTANCE_BEFORE_FINALS_ASSIGNED

The class's static initializer creates an instance of the class before all of the static final fields are assigned.

EC / EC_UNRELATED_CLASS_AND_INTERFACE

This method calls equals(Object) on two references, one of which is a class and the other an interface, where neither the class nor any of its non-abstract subclasses implement the interface. Therefore, the objects being compared are unlikely to be members of the same class at runtime (unless some application classes were not analyzed, or dynamic class loading can occur at runtime). According to the contract of equals(), objects of different classes should always compare as unequal; therefore, according to the contract defined by java.lang.Object.equals(Object), the result of this comparison will always be false at runtime.

HE / HE_INHERITS_EQUALS_USE_HASHCODE

This class inherits equals(Object) from an abstract superclass, and hashCode() from java.lang.Object (which returns the identity hash code, an arbitrary value assigned to the object by the VM).  Therefore, the class is very likely to violate the invariant that equal objects must have equal hashcodes.

If you don't want to define a hashCode method, and/or don't believe the object will ever be put into a HashMap/Hashtable, define the hashCode() method to throw UnsupportedOperationException.

Wa / WA_NOT_IN_LOOP

This method contains a call to java.lang.Object.wait() which is not in a loop.  If the monitor is used for multiple conditions, the condition the caller intended to wait for might not be the one that actually occurred.

BC / BC_IMPOSSIBLE_CAST

This cast will always throw a ClassCastException.

NP / NP_NULL_ON_SOME_PATH_EXCEPTION

A reference value which is null on some exception control path is dereferenced here.  This may lead to a NullPointerException when the code is executed.  Note that because FindBugs currently does not prune infeasible exception paths, this may be a false warning.

Also note that FindBugs considers the default case of a switch statement to be an exception path, since the default case is often infeasible.

ICAST / ICAST_QUESTIONABLE_UNSIGNED_RIGHT_SHIFT

The code performs an unsigned right shift, whose result is then cast to a short or byte, which discards the upper bits of the result. Since the upper bits are discarded, there may be no difference between a signed and unsigned right shift (depending upon the size of the shift).

BC / BC_BAD_CAST_TO_ABSTRACT_COLLECTION

This code casts a Collection to an abstract collection (such as List, Set, or Map). Ensure that you are guaranteed that the object is of the type you are casting to. If all you need is to be able to iterate through a collection, you don't need to cast it to a Set or List.

Nm / NM_CLASS_NAMING_CONVENTION

Class names should be nouns, in mixed case with the first letter of each internal word capitalized. Try to keep your class names simple and descriptive. Use whole words-avoid acronyms and abbreviations (unless the abbreviation is much more widely used than the long form, such as URL or HTML).

NP / NP_ALWAYS_NULL

A null pointer is dereferenced here.  This will lead to a NullPointerException when the code is executed.

It / IT_NO_SUCH_ELEMENT

This class implements the java.util.Iterator interface.  However, its next() method is not capable of throwing java.util.NoSuchElementException.  The next() method should be changed so it throws NoSuchElementException if is called when there are no more elements to return.

INT / INT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUE

This code compares a value that is guaranteed to be non-negative with a negative constant.

RCN / RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE

A value is checked here to see whether it is null, but this value can't be null because it was previously dereferenced and if it were null a null pointer exception would have occurred at the earlier dereference. Essentially, this code and the previous dereference disagree as to whether this value is allowed to be null. Either the check is redundant or the previous dereference is erroneous.

UuF / UUF_UNUSED_FIELD

This field is never used.  Consider removing it from the class.

HE / HE_EQUALS_NO_HASHCODE

This class overrides equals(Object), but does not override hashCode().  Therefore, the class may violate the invariant that equal objects must have equal hashcodes.

NP / NP_CLONE_COULD_RETURN_NULL

This clone method seems to return null in some circumstances, but clone is never allowed to return a null value. If you are convinced this path is unreachable, throw an AssertionError instead.

ICAST / ICAST_INT_CAST_TO_FLOAT_PASSED_TO_ROUND

This code converts an int value to a float precision floating point number and then passing the result to the Math.round() function, which returns the int/long closest to the argument. This operation should always be a no-op, since the converting an integer to a float should give a number with no fractional part. It is likely that the operation that generated the value to be passed to Math.round was intended to be performed using floating point arithmetic.

BC / BC_VACUOUS_INSTANCEOF

This instanceof test will always return true. Although this is safe, make sure it isn't an indication of some misunderstanding or some other logic error.

UCF / UCF_USELESS_CONTROL_FLOW

This method contains a useless control flow statement, where control flow continues onto the same place regardless of whether or not the branch is taken. For example, this is caused by having an empty statement block fot an if statement:

    if (argv.length == 0) {
	// TODO: handle this case
	}
RV / RV_ABSOLUTE_VALUE_OF_HASHCODE

This code generates a hashcode and then computes the absolute value of that hashcode. If the hashcode is Integer.MIN_VALUE, then the result will be negative as well (since Math.abs(Integer.MIN_VALUE) == Integer.MIN_VALUE).

NP / NP_EQUALS_SHOULD_HANDLE_NULL_ARGUMENT

This implementation of equals(Object) violates the contract defined by java.lang.Object.equals() because it does not check for null being passed as the argument. All equals() methods should return false if passed a null value.

ICAST / ICAST_BAD_SHIFT_AMOUNT

The code performs an integer shift by a constant amount outside the range 0..31. The effect of this is to use the lower 5 bits of the integer value to decide how much to shift by. This probably isn't want was expected, and it at least confusing.

NP / NP_NULL_ON_SOME_PATH

A reference value dereferenced here might be null at runtime.  This may lead to a NullPointerException when the code is executed.

ICAST / ICAST_IDIV_CAST_TO_DOUBLE

This code casts the result of an integer division operation to double or float. Doing division on integers truncates the result to the integer value closest to zero. The fact that the result was cast to double suggests that this precision should have been retained. What was probably meant was to cast one or both of the operands to double before performing the division. Here is an example:

int x = 2;
int y = 5;
// Wrong: yields result 0.0
double value1 =  x / y;

// Right: yields result 0.4
double value2 =  x / (double) y;
RS / RS_READOBJECT_SYNC

This serializable class defines a readObject() which is synchronized.  By definition, an object created by deserialization is only reachable by one thread, and thus there is no need for readObject() to be synchronized.  If the readObject() method itself is causing the object to become visible to another thread, that is an example of very dubious coding style.

NS / NS_DANGEROUS_NON_SHORT_CIRCUIT

This code seems to be using non-short-circuit logic (e.g., & or |) rather than short-circuit logic (&& or ||). In addition, it seem possible that, depending on the value of the left hand side, you might not want to evaluate the right hand side (because it would have side effects, could cause an exception or could be expensive.

Non-short-circuit logic causes both sides of the expression to be evaluated even when the result can be inferred from knowing the left-hand side. This can be less efficient and can result in errors if the left-hand side guards cases when evaluating the right-hand side can generate an error.

See the Java Language Specification for details

IM / IM_AVERAGE_COMPUTATION_COULD_OVERFLOW

The code computes the average of two integers using either division or signed right shift, and then uses the result as the index of an array. If the values being averaged are very large, this can overflow (resulting in the computation of a negative average). Assuming that the result is intended to be nonnegative, you can use an unsigned right shift instead. In other words, rather that using (low+high)/2, use (low+high) >>> 1

This bug exists in many earlier implementations of binary search and merge sort. Martin Buchholz found and fixed it in the JDK libraries, and Joshua Bloch widely publicized the bug pattern.

BC / BC_UNCONFIRMED_CAST

This cast is unchecked, and not all instances of the type casted from can be cast to the type it is being cast to. Ensure that your program logic ensures that this cast will not fail.

WMI / WMI_WRONG_MAP_ITERATOR

This method accesses the value of a Map entry, using a key that was retrieved from a keySet iterator. It is more efficient to use an iterator on the entrySet of the map, to avoid the Map.get(key) lookup.

NP / NP_UNWRITTEN_FIELD

The program is dereferencing a field that does not seem to ever have a non-null value written to it. Dereferencing this value will generate a null pointer exception.

Se / SE_BAD_FIELD_INNER_CLASS

This Serializable class is an inner class of a non-serializable class. Thus, attempts to serialize it will also attempt to associate instance of the outer class with which it is associated, leading to a runtime error.

If possible, making the inner class a static inner class should solve the problem. Making the outer class serializable might also work, but that would mean serializing an instance of the inner class would always also serialize the instance of the outer class, which it often not what you really want.

UCF / UCF_USELESS_CONTROL_FLOW_NEXT_LINE

This method contains a useless control flow statement in which control flow follows to the same or following line regardless of whether or not the branch is taken. Often, this is caused by inadvertently using an empty statement as the body of an if statement, e.g.:

    if (argv.length == 1);
        System.out.println("Hello, " + argv[0]);
EC / EC_UNRELATED_TYPES

This method calls equals(Object) on two references of different class types with no common subclasses. Therefore, the objects being compared are unlikely to be members of the same class at runtime (unless some application classes were not analyzed, or dynamic class loading can occur at runtime). According to the contract of equals(), objects of different classes should always compare as unequal; therefore, according to the contract defined by java.lang.Object.equals(Object), the result of this comparison will always be false at runtime.

NP / NP_GUARANTEED_DEREF

There is a statement or branch that if executed guarantees that a value is null at this point, and that value that is guaranteed to be dereferenced (except on forward paths involving runtime exceptions).

RC / RC_REF_COMPARISON

This method compares two reference values using the == or != operator, where the correct way to compare instances of this type is generally with the equals() method. Examples of classes which should generally not be compared by reference are java.lang.Integer, java.lang.Float, etc.

SC / SC_START_IN_CTOR

The constructor starts a thread. This is likely to be wrong if the class is ever extended/subclassed, since the thread will be started before the subclass constructor is started.

SF / SF_SWITCH_FALLTHROUGH

This method contains a switch statement where one case branch will fall through to the next case. Usually you need to end this case with a break or return.

MF / MF_CLASS_MASKS_FIELD

This class defines a field with the same name as a visible instance field in a superclass. This is confusing, and may indicate an error if methods update or access one of the fields when they wanted the other.

NP / NP_IMMEDIATE_DEREFERENCE_OF_READLINE

The result of invoking readLine() is immediately dereferenced. If there are no more lines of text to read, readLine() will return null and dereferencing that will generate a null pointer exception.

ESync / ESync_EMPTY_SYNC

The code contains an empty synchronized block:

synchronized() {}

Empty synchronized blocks are far more subtle and hard to use correctly than most people recognize, and empty synchronized blocks are almost never a better solution than less contrived solutions.

UMAC / UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS

This anonymous class defined a method that is not directly invoked and does not override a method in a superclass. Since methods in other classes cannot directly invoke methods declared in an anonymous class, it seems that this method is uncallable. The method might simply be dead code, but it is also possible that the method is intended to override a method declared in a superclass, and due to an typo or other error the method does not, in fact, override the method it is intended to.

HSC / HSC_HUGE_SHARED_STRING_CONSTANT

A large String constant is duplicated across multiple class files. This is likely because a final field is initialized to a String constant, and the Java language mandates that all references to a final field from other classes be inlined into that classfile. See JDK bug 6447475 for a description of an occurrence of this bug in the JDK and how resolving it reduced the size of the JDK by 1 megabyte.

SA / SA_LOCAL_SELF_COMPUTATION

This method performs a nonsensical computation of a local variable with another reference to the same variable (e.g., x&x or x-x). Because of the nature of the computation, this operation doesn't seem to make sense, and may indicate a typo or a logic error. Double check the computation.

NP / NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS

A possibly-null value is passed at a call site where all known target methods will unconditionally dereference it. This is very likely to result in a null pointer exception.