Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[eclipse-dev] Found a few hundred bugs in Eclipse

We're working on a open source static analysis tool, called FindBugs, for finding a number of different kinds of bugs or antipatterns in Java programs. We've founds lots of bugs in most large Java programs we've looked at, including Eclipse. Our tool generates 810 medium/high warnings about correctness problems in Eclipse 3.0. From past experience, we believe that corresponds to hundreds of real bugs (we generally have a less than 50% false positive rate) [Note: 810 warnings come from all code in all jar files shipped with Eclipse, which includes some
third-party libraries]

We'd love to get some people in the Eclipse project to start using our tool. We use Eclipse, have an Eclipse
plugin, and even got an Eclipse innovation award for work on our tool.

However, part of our research is to see if other people think our tool is finding bugs that they believe warrant fixing. So we'd really love for people in the Eclipse project to start using our tool, rather than
having us submit separate bug reports for each bug.

We'd love to work with anyone interested in applying our tool to Eclipse, and we are always interested in feedback on improving the accuracy of our existing bug detectors and writing new ones.

  Thanks,
	Bill Pugh

FindBugs: http://findbugs.sourceforge.net/

A handful of some of the bugs we found in Eclipse 3.0:

----
H C NP: Null pointer dereference in org.eclipse.jdt.internal.debug.ui.JDIModelPresentation.getPrimitiveValue TypeSignature(org.eclipse.jdt.debug.core.IJavaValue)
At JDIModelPresentation.java:[line 535]

	String sig= type.getSignature();
	if (sig != null || sig.length() == 1) {
       return sig;
	}

Should be && rather than ||
----
H C NP: Null pointer dereference in org.eclipse.team.internal.ccvs.core.CVSSyncInfo.getLocalContentIdentifie r() At CVSSyncInfo.java:[line 357]

   IResource local = getLocal();
   if (local != null || local.getType() == IResource.FILE) {

Should be && rather than ||

---
M C RV: org.eclipse.search.internal.ui.SearchDialog$1.getText(Object) ignores return value of java.lang.String.substring(int,int) At SearchDialog.java:[line 187]

 int i= label.indexOf('&');
 while (i >= 0) {
   if (i < label.length())
              label= label.substring(0, i) + label.substring(i+1);
   else
              label.substring(0, i);
   i= label.indexOf('&');
   }

The call to substring in the else cause has no effect since the return value is ignored, so this will be an
infinite loop if the label ends in &.


----
H C Nm: VERY confusing to have methods org.eclipse.jface.dialogs.InputDialog.getOkButton() and org.eclipse.jface.dialogs.Dialog.getOKButton()

InputDialog.getOkButton() is apparently intended to override Dialog.getOKButton(), but doesn't
because the name is capitalized differently.







Back to the top