FindBugs Report

Project Information

Project: <<unnamed project>>

FindBugs version: 1.3.1

Code analyzed:



Metrics

82289 lines of code analyzed, in 2411 classes, in 29 packages.

Metric Total Density*
High Priority Warnings 34 0.41
Medium Priority Warnings 416 5.06
Total Warnings 450 5.47

(* Defects per Thousand lines of non-commenting source statements)



Contents

Summary

Warning Type Number
Bad practice Warnings 117
Correctness Warnings 16
Malicious code vulnerability Warnings 65
Multithreaded correctness Warnings 32
Performance Warnings 13
Dodgy Warnings 207
Total 450

Warnings

Click on a warning row to see full context information.

Bad practice Warnings

Code&nbsp; Warning
DE edu.rice.cs.drjava.config.DrJavaPropertySetup$3.getCurrent(PropertyMaps) might ignore java.io.IOException
DE edu.rice.cs.drjava.config.FileProperty.update(PropertyMaps) might ignore java.io.IOException
DE edu.rice.cs.drjava.model.AbstractGlobalModel.openNewFilesInProject() might ignore java.lang.Exception
DE edu.rice.cs.drjava.model.compiler.CompilerErrorModel._calculatePositions() might ignore java.io.IOException
DE edu.rice.cs.drjava.model.compiler.LanguageLevelStackTraceMapper.createOneToOneMap(BufferedReader) might ignore java.io.IOException
DE edu.rice.cs.drjava.model.definitions.indent.QuestionHasCharPrecedingOpenBrace.applyRule(AbstractDJDocument, Indenter$IndentReason) might ignore javax.swing.text.BadLocationException
DE edu.rice.cs.drjava.model.GlobalModelIOTest$21.run() might ignore java.lang.Exception
DE edu.rice.cs.drjava.model.GlobalModelIOTest$26.run() might ignore java.lang.Exception
DE edu.rice.cs.drjava.model.junit.ConcJUnitUtils.isValidJarFile(File, String[]) might ignore java.io.IOException
DE edu.rice.cs.drjava.model.repl.InteractionsModel.loadHistory(FileOpenSelector) might ignore edu.rice.cs.util.OperationCanceledException
DE edu.rice.cs.drjava.ui.AboutDialog$1.mouseClicked(MouseEvent) might ignore java.lang.Exception
DE edu.rice.cs.drjava.ui.AboutDialog$3.mouseClicked(MouseEvent) might ignore java.lang.Exception
DE edu.rice.cs.drjava.ui.config.FileOptionComponentTest.tearDown() might ignore java.lang.Exception
DE edu.rice.cs.drjava.ui.ExternalProcessPanel$6.run() might ignore java.io.IOException
DE edu.rice.cs.drjava.ui.GenerateCustomDrJavaJarFrame$6$1$1$1.run() might ignore java.io.IOException
DE edu.rice.cs.drjava.ui.LessPanel.abortActionPerformed(ActionEvent) might ignore java.io.IOException
DE edu.rice.cs.drjava.ui.MainFrame._completeWordUnderCursor() might ignore javax.swing.text.BadLocationException
DE edu.rice.cs.drjava.ui.MainFrame._showConfigException() might ignore java.io.IOException
DE edu.rice.cs.drjava.ui.MainFrame._warnFileOpen(File) might ignore java.io.IOException
DE edu.rice.cs.drjava.ui.NewVersionPopup._openFileDownloadPage(String) might ignore java.lang.Exception
DE edu.rice.cs.drjava.ui.PreviewFrame._updateActions() might ignore java.lang.Exception
DE edu.rice.cs.drjava.ui.PreviewFrame.showPage() might ignore java.awt.print.PrinterException
DE edu.rice.cs.drjava.ui.RegionsListPanel$RegionListUserObj.toString() might ignore javax.swing.text.BadLocationException
DE edu.rice.cs.util.BalancingStreamTokenizerTest.testAddKeywordQuotes() might ignore java.lang.Exception
DE edu.rice.cs.util.BalancingStreamTokenizerTest.testAddKeywordWhitespace() might ignore java.lang.Exception
DE edu.rice.cs.util.BalancingStreamTokenizerTest.testAddQuotesRepeat() might ignore java.lang.Exception
DE edu.rice.cs.util.BalancingStreamTokenizerTest.testAddQuotesWhitespace() might ignore java.lang.Exception
DE edu.rice.cs.util.FileOps.makeWritable(File) might ignore java.io.IOException
DE edu.rice.cs.util.FileOpsTest.testSaveFile() might ignore java.io.IOException
DE edu.rice.cs.util.ReaderThread.run() might ignore java.io.IOException
Dm edu.rice.cs.drjava.model.AbstractGlobalModel.shutdown(boolean) invokes System.exit(...), which shuts down the entire virtual machine
Dm edu.rice.cs.drjava.ui.DrJavaErrorPopup$2.actionPerformed(ActionEvent) invokes System.exit(...), which shuts down the entire virtual machine
Dm edu.rice.cs.drjava.ui.DrJavaErrorWindow$2.run(WindowEvent) invokes System.exit(...), which shuts down the entire virtual machine
Dm edu.rice.cs.drjava.ui.DrJavaErrorWindow$5.actionPerformed(ActionEvent) invokes System.exit(...), which shuts down the entire virtual machine
Dm edu.rice.cs.drjava.ui.SimpleInteractionsWindow.close() invokes System.exit(...), which shuts down the entire virtual machine
Dm edu.rice.cs.util.newjvm.AbstractSlaveJVM$1.run() invokes System.exit(...), which shuts down the entire virtual machine
Dm edu.rice.cs.util.newjvm.IntegratedMasterSlaveTest$CounterSlave$1.run() invokes System.exit(...), which shuts down the entire virtual machine
DP edu.rice.cs.drjava.model.JarJDKToolsLibrary.makeFromFile(File, GlobalModel, JDKDescriptor, List) creates a edu.rice.cs.plt.reflect.PathClassLoader classloader, which should be performed within a doPrivileged block
DP edu.rice.cs.drjava.model.JarJDKToolsLibrary.makeFromFile(File, GlobalModel, JDKDescriptor, List) creates a edu.rice.cs.plt.reflect.PathClassLoader classloader, which should be performed within a doPrivileged block
DP edu.rice.cs.drjava.model.JarJDKToolsLibrary.makeFromFile(File, GlobalModel, JDKDescriptor, List) creates a edu.rice.cs.plt.reflect.PreemptingClassLoader classloader, which should be performed within a doPrivileged block
DP edu.rice.cs.drjava.model.JarJDKToolsLibrary.makeFromFile(File, GlobalModel, JDKDescriptor, List) creates a edu.rice.cs.plt.reflect.ShadowingClassLoader classloader, which should be performed within a doPrivileged block
DP edu.rice.cs.drjava.model.repl.newjvm.ClassPathManager.makeClassLoader(ClassLoader) creates a edu.rice.cs.plt.reflect.PathClassLoader classloader, which should be performed within a doPrivileged block
Eq edu.rice.cs.drjava.model.AbstractGlobalModel$ConcreteOpenDefDoc defines compareTo(Object) and uses Object.equals()
Eq edu.rice.cs.drjava.model.BrowserDocumentRegion defines compareTo(BrowserDocumentRegion) and uses Object.equals()
Eq edu.rice.cs.drjava.model.DJError defines compareTo(DJError) and uses Object.equals()
Eq edu.rice.cs.drjava.model.DummyOpenDefDoc defines compareTo(Object) and uses Object.equals()
Eq edu.rice.cs.drjava.ui.config.KeyStrokeOptionComponent defines compareTo(KeyStrokeOptionComponent) and uses Object.equals()
Eq edu.rice.cs.drjava.ui.config.VectorKeyStrokeOptionComponent defines compareTo(VectorKeyStrokeOptionComponent) and uses Object.equals()
ES Comparison of String parameter using == or != in edu.rice.cs.drjava.model.definitions.reducedmodel.Brace.findBrace(String)
ES Comparison of String objects using == or != in edu.rice.cs.util.sexp.Tokens$SExpToken.equals(Object)
HE edu.rice.cs.drjava.model.debug.jpda.JPDABreakpoint defines equals and uses Object.hashCode()
HE edu.rice.cs.drjava.model.DocumentRegion defines equals and uses Object.hashCode()
OS edu.rice.cs.drjava.DrJava.warnIfLinuxWithCompiz() may fail to close stream
OS edu.rice.cs.drjava.model.junit.ConcJUnitUtils.generateRTConcJUnitJarFile(File, File, File) may fail to close stream
OS edu.rice.cs.drjava.ui.DefinitionsPaneMemoryLeakTest.dumpHeap() may fail to close stream
OS edu.rice.cs.drjava.ui.DefinitionsPaneMemoryLeakTest.dumpHeap() may fail to close stream
OS edu.rice.cs.util.FileOps.getShortFile(File) may fail to close stream
OS edu.rice.cs.util.jar.JarCreationTest.testCreateJar() may fail to close stream
OS edu.rice.cs.util.StreamRedirectorTest.testDynamicInput() may fail to close stream
OS edu.rice.cs.util.StreamRedirectorTest.testEmptyInput() may fail to close stream
OS edu.rice.cs.util.StreamRedirectorTest.testStaticInput() may fail to close stream
RV edu.rice.cs.drjava.CommandLineTest$1.run() ignores exceptional return value of java.io.File.delete()
RV edu.rice.cs.drjava.DrJava.handleCommandLineArgs(String[]) ignores exceptional return value of java.io.File.delete()
RV edu.rice.cs.drjava.model.AbstractGlobalModel$ConcreteOpenDefDoc.saveFileAs(FileSaveSelector) ignores exceptional return value of java.io.File.renameTo(File)
RV edu.rice.cs.drjava.model.AbstractGlobalModel$ProjectFileGroupingState.getClassFiles() ignores exceptional return value of java.io.File.mkdirs()
RV edu.rice.cs.drjava.model.compiler.DefaultCompilerModel._compileLanguageLevelsFiles(List, List, Iterable, Iterable) ignores exceptional return value of java.io.File.delete()
RV edu.rice.cs.drjava.model.compiler.DefaultCompilerModel$7.accept(File, String) ignores exceptional return value of java.io.File.delete()
RV edu.rice.cs.drjava.model.compiler.DefaultCompilerModel$8.accept(File, String) ignores exceptional return value of java.io.File.delete()
RV new edu.rice.cs.drjava.model.compiler.Javac160FilteringCompiler(JavaVersion$FullVersion, String, List) ignores exceptional return value of java.io.File.delete()
RV edu.rice.cs.drjava.model.compiler.Javac160FilteringCompiler$1.run() ignores exceptional return value of java.io.File.delete()
RV edu.rice.cs.drjava.model.debug.jpda.DebugTest.XXXtestStepOverWithPackage() ignores exceptional return value of java.io.File.mkdir()
RV edu.rice.cs.drjava.model.GlobalModelCompileErrorsTest.testCompileAllFailsDifferentSourceRoots() ignores exceptional return value of java.io.File.mkdir()
RV edu.rice.cs.drjava.model.GlobalModelCompileErrorsTest.testCompileEndWhileParsing() ignores exceptional return value of java.io.File.delete()
RV edu.rice.cs.drjava.model.GlobalModelCompileErrorsTest.testCompileFailsCorrectLineNumbers() ignores exceptional return value of java.io.File.mkdir()
RV edu.rice.cs.drjava.model.GlobalModelCompileErrorsTest.testCompileWithPackageStatementInsideClass() ignores exceptional return value of java.io.File.mkdir()
RV edu.rice.cs.drjava.model.GlobalModelCompileIOTest.testCompileAfterFileMoved() ignores exceptional return value of java.io.File.delete()
RV edu.rice.cs.drjava.model.GlobalModelCompileSuccessTest.testCompileAllDifferentSourceRoots() ignores exceptional return value of java.io.File.mkdir()
RV edu.rice.cs.drjava.model.GlobalModelCompileSuccessTest.testCompileClassPathOKDifferentPackages() ignores exceptional return value of java.io.File.mkdir()
RV edu.rice.cs.drjava.model.GlobalModelIOTest.testFileMovedWhenTriedToSave() ignores exceptional return value of java.io.File.delete()
RV edu.rice.cs.drjava.model.GlobalModelIOTest.testModifiedByOther() ignores exceptional return value of java.io.File.setLastModified(long)
RV edu.rice.cs.drjava.model.GlobalModelIOTest.testRevertFile() ignores exceptional return value of java.io.File.delete()
RV edu.rice.cs.drjava.model.GlobalModelIOTest.testSaveAlreadySaved() ignores exceptional return value of java.io.File.delete()
RV edu.rice.cs.drjava.model.GlobalModelOtherTest.testBookmark() ignores exceptional return value of java.io.File.mkdir()
RV edu.rice.cs.drjava.model.GlobalModelOtherTest.testGetMultipleSourceRootsDefaultPackage() ignores exceptional return value of java.io.File.mkdir()
RV edu.rice.cs.drjava.model.GlobalModelOtherTest.testGetSourceRootDefaultPackage() ignores exceptional return value of java.io.File.mkdirs()
RV edu.rice.cs.drjava.model.GlobalModelOtherTest.testGetSourceRootPackageOneDeepValid() ignores exceptional return value of java.io.File.mkdir()
RV edu.rice.cs.drjava.model.GlobalModelOtherTest.testGetSourceRootPackageThreeDeepInvalid() ignores exceptional return value of java.io.File.mkdirs()
RV edu.rice.cs.drjava.model.GlobalModelOtherTest.testGetSourceRootPackageThreeDeepValid() ignores exceptional return value of java.io.File.mkdirs()
RV edu.rice.cs.drjava.model.GlobalModelOtherTest.testGetSourceRootPackageThreeDeepValidRelative() ignores exceptional return value of java.io.File.mkdirs()
RV edu.rice.cs.drjava.model.GlobalModelOtherTest.testInteractionsCanSeeCompiledClasses() ignores exceptional return value of java.io.File.mkdir()
RV edu.rice.cs.drjava.model.GlobalModelOtherTest.testInteractionsLiveUpdateClassPath() ignores exceptional return value of java.io.File.renameTo(File)
RV edu.rice.cs.drjava.model.GlobalModelOtherTest.testRunMainMethod() ignores exceptional return value of java.io.File.mkdir()
RV edu.rice.cs.drjava.model.repl.InteractionsModelErrorTest.testInterpretGetPackageClass() ignores exceptional return value of java.io.File.mkdir()
RV edu.rice.cs.drjava.model.SingleDisplayModelTest.testDeleteFileBeforeCloseAll() ignores exceptional return value of java.io.File.delete()
RV edu.rice.cs.drjava.model.SingleDisplayModelTest.testDeleteFileWhileOpen() ignores exceptional return value of java.io.File.delete()
RV edu.rice.cs.drjava.project.ProjectTest.setUp() ignores exceptional return value of java.io.File.mkdir()
RV edu.rice.cs.drjava.project.ProjectTest.testWriteFile() ignores exceptional return value of java.io.File.delete()
RV edu.rice.cs.drjava.project.ProjectTest.testWriteFilePJT() ignores exceptional return value of java.io.File.delete()
RV edu.rice.cs.drjava.project.ProjectTest.testWriteFileXML() ignores exceptional return value of java.io.File.delete()
RV edu.rice.cs.drjava.ui.DefinitionsPaneMemoryLeakTest.dumpHeap() ignores exceptional return value of java.io.File.renameTo(File)
RV edu.rice.cs.drjava.ui.JarOptionsDialog$17.construct() ignores exceptional return value of java.io.File.createNewFile()
RV edu.rice.cs.drjava.ui.JarOptionsDialog$17.construct() ignores exceptional return value of java.io.File.delete()
RV edu.rice.cs.drjava.ui.MainFrame._rename() ignores exceptional return value of java.io.File.delete()
RV edu.rice.cs.drjava.ui.NewVersionPopup$6.run() ignores exceptional return value of java.io.File.delete()
RV edu.rice.cs.drjava.ui.NewVersionPopup$6.run() ignores exceptional return value of java.io.File.mkdirs()
RV edu.rice.cs.drjava.ui.NewVersionPopup$6$2.run() ignores exceptional return value of java.io.File.delete()
RV edu.rice.cs.drjava.ui.ProjectMenuTest$1.run() ignores exceptional return value of java.io.File.mkdir()
RV edu.rice.cs.drjava.ui.ProjectMenuTest$2.run() ignores exceptional return value of java.io.File.delete()
RV edu.rice.cs.util.FileOps.makeWritable(File) ignores exceptional return value of java.io.File.createNewFile()
RV edu.rice.cs.util.FileOps.renameFile(File, File) ignores exceptional return value of java.io.File.delete()
RV edu.rice.cs.util.FileOps.saveFile(FileOps$FileSaver) ignores exceptional return value of java.io.File.delete()
RV edu.rice.cs.util.FileOpsTest.testDeleteDirectoryOnExit() ignores exceptional return value of java.io.File.createNewFile()
RV edu.rice.cs.util.FileOpsTest.testDeleteDirectoryOnExit() ignores exceptional return value of java.io.File.mkdir()
RV edu.rice.cs.util.FileOpsTest.testPackageExplore() ignores exceptional return value of java.io.File.mkdir()
RV edu.rice.cs.util.FileOpsTest.testSaveFile() ignores exceptional return value of java.io.File.setReadOnly()
RV edu.rice.cs.util.jar.JarCreationTest.testCreateJarFromDirectoryRecursive() ignores exceptional return value of java.io.File.mkdir()
RV edu.rice.cs.util.XMLConfigTest.testSaveAndLoadConstructors() ignores exceptional return value of java.io.File.delete()

Correctness Warnings

Code&nbsp; Warning
DMI Invocation of toString on files in edu.rice.cs.drjava.ui.JarOptionsDialog$17.jarBuildDirectory(File, JarBuilder)
IJU TestCase edu.rice.cs.drjava.ui.ProjectMenuTest implements setUp but doesn't call super.setUp()
IL There is an apparent infinite loop in edu.rice.cs.drjava.ui.AutoCompletePopup$1$1.run()
MF Field JPDADebugTestCase._debugger masks field in superclass edu.rice.cs.drjava.model.debug.DebugTestCase
MF Field BackSlashTest.model0 masks field in superclass edu.rice.cs.drjava.model.definitions.reducedmodel.BraceReductionTestCase
MF Field BackSlashTest.model1 masks field in superclass edu.rice.cs.drjava.model.definitions.reducedmodel.BraceReductionTestCase
MF Field BackSlashTest.model2 masks field in superclass edu.rice.cs.drjava.model.definitions.reducedmodel.BraceReductionTestCase
NP Possible null pointer dereference of o in edu.rice.cs.drjava.config.ResourceBundleConfiguration$1.setString(OptionParser, String)
NP bufReader is null guaranteed to be dereferenced in edu.rice.cs.drjava.model.compiler.LanguageLevelStackTraceMapper.readLLBlock(File) on exception path
NP bufReader is null guaranteed to be dereferenced in edu.rice.cs.drjava.model.compiler.LanguageLevelStackTraceMapper.readLLLineBlock(File) on exception path
NP A known null value is checked to see if it is an instance of java.lang.Object in edu.rice.cs.drjava.model.repl.JavaInterpreterTest.testNullInstanceOf()
NP A known null value is checked to see if it is an instance of java.lang.String in edu.rice.cs.drjava.model.repl.JavaInterpreterTest.testNullInstanceOf()
NP Possible null pointer dereference of found in edu.rice.cs.util.FileOps.getDrJavaFile()
UMAC Uncallable method edu.rice.cs.drjava.ui.JarOptionsDialog$11.WindowClosed(WindowEvent) defined in anonymous class
UR Uninitialized read of _textArea in new edu.rice.cs.drjava.ui.ExternalProcessPanel(MainFrame, String, ProcessCreator)
UR Uninitialized read of _findAgainButton in new edu.rice.cs.drjava.ui.FindResultsPanel(MainFrame, RegionManager, MovingDocumentRegion, String, String, boolean, boolean, boolean, boolean, boolean, boolean, WeakReference, FindReplacePanel)

Malicious code vulnerability Warnings

Code&nbsp; Warning
EI edu.rice.cs.drjava.model.AlreadyOpenException.getOpenDocuments() may expose internal representation by returning AlreadyOpenException._openDocs
EI edu.rice.cs.drjava.model.definitions.DefinitionsEditorKit.getActions() may expose internal representation by returning DefinitionsEditorKit._actions
EI edu.rice.cs.drjava.model.junit.JUnitError.stackTrace() may expose internal representation by returning JUnitError._stackTrace
EI edu.rice.cs.util.swing.FileSelectionEvent.getFiles() may expose internal representation by returning FileSelectionEvent._changed
EI edu.rice.cs.util.swing.LayeredIcon.getLayers() may expose internal representation by returning LayeredIcon._layers
EI edu.rice.cs.util.swing.LayeredIcon.getXOffsets() may expose internal representation by returning LayeredIcon._xoffs
EI edu.rice.cs.util.swing.LayeredIcon.getYOffsets() may expose internal representation by returning LayeredIcon._xoffs
EI2 new edu.rice.cs.drjava.config.OptionParseException(OptionParseException[]) may expose internal representation by storing an externally mutable object into OptionParseException.causes
EI2 new edu.rice.cs.drjava.model.AlreadyOpenException(OpenDefinitionsDocument[]) may expose internal representation by storing an externally mutable object into AlreadyOpenException._openDocs
EI2 new edu.rice.cs.drjava.model.compiler.CompilerErrorModel(DJError[], GlobalModel) may expose internal representation by storing an externally mutable object into CompilerErrorModel._errors
EI2 new edu.rice.cs.drjava.model.definitions.indent.QuestionHasCharPrecedingOpenBrace(char[], IndentRule, IndentRule) may expose internal representation by storing an externally mutable object into QuestionHasCharPrecedingOpenBrace._prefix
EI2 new edu.rice.cs.drjava.model.junit.JUnitError(File, int, int, String, boolean, String, String, String, StackTraceElement[]) may expose internal representation by storing an externally mutable object into JUnitError._stackTrace
EI2 edu.rice.cs.drjava.model.junit.JUnitError.setStackTrace(StackTraceElement[]) may expose internal representation by storing an externally mutable object into JUnitError._stackTrace
EI2 new edu.rice.cs.drjava.model.Query$CharArrayAndFlag(int, char[], boolean) may expose internal representation by storing an externally mutable object into Query$CharArrayAndFlag._chars
EI2 new edu.rice.cs.drjava.model.Query$IndentOfCurrStmt(int, char[], char[]) may expose internal representation by storing an externally mutable object into Query$IndentOfCurrStmt._delims
EI2 new edu.rice.cs.drjava.model.Query$IndentOfCurrStmt(int, char[], char[]) may expose internal representation by storing an externally mutable object into Query$IndentOfCurrStmt._whitespace
EI2 new edu.rice.cs.drjava.model.Query$PrevCharPos(int, char[]) may expose internal representation by storing an externally mutable object into Query$PrevCharPos._whitespace
EI2 edu.rice.cs.drjava.ui.CompilerErrorPanel.reset(File[]) may expose internal representation by storing an externally mutable object into CompilerErrorPanel._excludedFiles
EI2 new edu.rice.cs.drjava.ui.config.VectorOptionComponent(VectorOption, String, SwingFrame, String[], String, boolean) may expose internal representation by storing an externally mutable object into VectorOptionComponent._columnNames
EI2 new edu.rice.cs.util.ProcessChain(ProcessCreator[]) may expose internal representation by storing an externally mutable object into ProcessChain._creators
EI2 new edu.rice.cs.util.ProcessCreator(String[], String) may expose internal representation by storing an externally mutable object into ProcessCreator._cmdarray
EI2 new edu.rice.cs.util.ProcessSequence(ProcessCreator[]) may expose internal representation by storing an externally mutable object into ProcessSequence._creators
EI2 new edu.rice.cs.util.swing.FileSelectionEvent(Object, File[], boolean[], File, File) may expose internal representation by storing an externally mutable object into FileSelectionEvent._areNew
EI2 new edu.rice.cs.util.swing.FileSelectionEvent(Object, File[], boolean[], File, File) may expose internal representation by storing an externally mutable object into FileSelectionEvent._changed
EI2 new edu.rice.cs.util.swing.LayeredIcon(Icon[], int[], int[]) may expose internal representation by storing an externally mutable object into LayeredIcon._layers
EI2 new edu.rice.cs.util.swing.LayeredIcon(Icon[], int[], int[]) may expose internal representation by storing an externally mutable object into LayeredIcon._xoffs
EI2 new edu.rice.cs.util.swing.LayeredIcon(Icon[], int[], int[]) may expose internal representation by storing an externally mutable object into LayeredIcon._yoffs
MS edu.rice.cs.drjava.config.OptionConstants.FIND_RESULTS_COLORS is a mutable array
MS edu.rice.cs.drjava.config.OptionConstants.LANGUAGE_LEVEL_EXTENSIONS is a mutable array
MS edu.rice.cs.drjava.config.OptionConstants.apiJavadocChoices should be moved out of an interface and made package protected
MS edu.rice.cs.drjava.config.OptionConstants.apiJavadocDeprecated should be moved out of an interface and made package protected
MS edu.rice.cs.drjava.config.OptionConstants.linkChoices should be moved out of an interface and made package protected
MS edu.rice.cs.drjava.config.OptionConstants.linkDeprecated should be moved out of an interface and made package protected
MS edu.rice.cs.drjava.config.OptionConstants$COMPILER_PREFERENCE_CONTROL._list should be package protected
MS edu.rice.cs.drjava.DrJavaRestart.LOG isn't final but should be
MS edu.rice.cs.drjava.model.AbstractDJDocument.CLOSING_BRACES should be package protected
MS edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.COMMENTED_COLOR should be package protected
MS edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.DOUBLE_QUOTED_COLOR should be package protected
MS edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.KEYWORD_COLOR should be package protected
MS edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.MAIN_FONT should be package protected
MS edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.NORMAL_COLOR should be package protected
MS edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.NUMBER_COLOR should be package protected
MS edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.SINGLE_QUOTED_COLOR should be package protected
MS edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.TYPE_COLOR should be package protected
MS edu.rice.cs.drjava.model.definitions.ColoringView.DEBUGGER_COLOR isn't final and can't be protected from malicious code
MS edu.rice.cs.drjava.model.definitions.ColoringView.DOUBLE_QUOTED_COLOR isn't final and can't be protected from malicious code
MS edu.rice.cs.drjava.model.definitions.ColoringView.ERROR_COLOR isn't final and can't be protected from malicious code
MS edu.rice.cs.drjava.model.definitions.ColoringView.INTERACTIONS_SYSTEM_ERR_COLOR isn't final and can't be protected from malicious code
MS edu.rice.cs.drjava.model.definitions.ColoringView.INTERACTIONS_SYSTEM_IN_COLOR isn't final and can't be protected from malicious code
MS edu.rice.cs.drjava.model.definitions.ColoringView.INTERACTIONS_SYSTEM_OUT_COLOR isn't final and can't be protected from malicious code
MS edu.rice.cs.drjava.model.definitions.ColoringView.MAIN_FONT isn't final and can't be protected from malicious code
MS edu.rice.cs.drjava.model.definitions.ColoringView.NORMAL_COLOR isn't final and can't be protected from malicious code
MS edu.rice.cs.drjava.model.definitions.ColoringView.NUMBER_COLOR isn't final and can't be protected from malicious code
MS edu.rice.cs.drjava.model.definitions.ColoringView.SINGLE_QUOTED_COLOR isn't final and can't be protected from malicious code
MS edu.rice.cs.drjava.model.definitions.ColoringView.COMMENTED_COLOR should be package protected
MS edu.rice.cs.drjava.model.definitions.ColoringView.KEYWORD_COLOR should be package protected
MS edu.rice.cs.drjava.model.definitions.ColoringView.TYPE_COLOR should be package protected
MS edu.rice.cs.drjava.RemoteControlClient._serverRunning should be package protected
MS edu.rice.cs.drjava.RemoteControlClient._serverUser should be package protected
MS edu.rice.cs.drjava.ui.DrJavaSurveyPopup.DRJAVA_SURVEY_KEYS should be package protected
MS edu.rice.cs.drjava.ui.InteractionsPane.LOG isn't final but should be
MS edu.rice.cs.drjava.ui.MainFrame.UPDATER_PRIORITY isn't final but should be
MS edu.rice.cs.drjava.ui.MainFrame.UPDATE_DELAY isn't final but should be
MS public static edu.rice.cs.drjava.Version.getBuildTime() may expose internal representation by returning Version.BUILD_TIME
MS edu.rice.cs.util.JoinInputStream.defaultBufferSize isn't final but should be

Multithreaded correctness Warnings

Code&nbsp; Warning
SC new edu.rice.cs.drjava.model.DefaultGlobalModel() invokes Thread.start()
SC new edu.rice.cs.util.JoinInputStream(InputStream[], int) invokes edu.rice.cs.util.ReaderThread.start()
SC new edu.rice.cs.util.ProcessChain(ProcessCreator[]) invokes edu.rice.cs.util.StreamRedirectThread.start()
SC new edu.rice.cs.util.ProcessChain(ProcessCreator[]) invokes edu.rice.cs.util.StreamRedirectThread.start()
SC new edu.rice.cs.util.ProcessChain(ProcessCreator[]) invokes edu.rice.cs.util.StreamRedirectThread.start()
SC new edu.rice.cs.util.ProcessChain(ProcessCreator[]) invokes edu.rice.cs.util.StreamRedirectThread.start()
SC new edu.rice.cs.util.ProcessSequence(ProcessCreator[]) invokes Thread.start()
STCAL Call to method of static java.text.DateFormat in edu.rice.cs.drjava.project.ProjectFileParser$DocFilePropertyVisitor.forCons(Cons)
STCAL Call to method of static java.text.DateFormat in edu.rice.cs.drjava.project.ProjectProfile.encodeDocFile(DocFile, String, boolean)
STCAL Call to method of static java.text.DateFormat in edu.rice.cs.drjava.project.ProjectProfile.write(OutputStream)
STCAL Call to method of static java.text.DateFormat in edu.rice.cs.drjava.project.ProjectTest.testLegacyParseProject()
STCAL Call to method of static java.text.DateFormat in edu.rice.cs.drjava.project.ProjectTest.testLegacyParseProjectPJT()
STCAL Call to method of static java.text.DateFormat in edu.rice.cs.drjava.project.ProjectTest.testParseProject()
STCAL Call to method of static java.text.DateFormat in edu.rice.cs.drjava.project.ProjectTest.testParseProjectPJT()
STCAL Call to method of static java.text.DateFormat in edu.rice.cs.drjava.project.XMLProjectFileParser.readSourceFiles(String, String)
STCAL Call to method of static java.text.DateFormat in edu.rice.cs.drjava.project.XMLProjectFileParserTest.testXMLParse()
SWL edu.rice.cs.drjava.DrJava.openWithRemoteControl(ArrayList, int) calls Thread.sleep() with a lock held
UG edu.rice.cs.drjava.model.AbstractGlobalModel$ConcreteOpenDefDoc.getFile() is unsynchronized, edu.rice.cs.drjava.model.AbstractGlobalModel$ConcreteOpenDefDoc.setFile(File) is synchronized
UG edu.rice.cs.drjava.model.AbstractGlobalModel$ConcreteOpenDefDoc.getParentDirectory() is unsynchronized, edu.rice.cs.drjava.model.AbstractGlobalModel$ConcreteOpenDefDoc.setParentDirectory(File) is synchronized
UW Unconditional wait in edu.rice.cs.util.ReaderWriterLockTest.testMultipleReaders()
UW Unconditional wait in edu.rice.cs.util.ReaderWriterLockTest.testMultipleReadersAndWriters()
UW Unconditional wait in edu.rice.cs.util.ReaderWriterLockTest.testMultipleWriters()
UW Unconditional wait in edu.rice.cs.util.ReaderWriterLockTest.testReaderMultipleReads()
VO edu.rice.cs.drjava.config.OptionMapLoader.fields is a volatile reference to an array; the array elements are non-volatile
VO edu.rice.cs.drjava.ui.DefinitionsPane.FIND_RESULTS_PAINTERS is a volatile reference to an array; the array elements are non-volatile
VO edu.rice.cs.drjava.ui.DefinitionsPane.FIND_RESULTS_PAINTERS_USAGE is a volatile reference to an array; the array elements are non-volatile
VO edu.rice.cs.util.ReaderThread.buffer is a volatile reference to an array; the array elements are non-volatile
Wa Wait not in loop in edu.rice.cs.drjava.model.MultiThreadedTestCase.wait(Object)
Wa Wait not in loop in edu.rice.cs.util.ReaderWriterLockTest.testMultipleReaders()
Wa Wait not in loop in edu.rice.cs.util.ReaderWriterLockTest.testMultipleReadersAndWriters()
Wa Wait not in loop in edu.rice.cs.util.ReaderWriterLockTest.testMultipleWriters()
Wa Wait not in loop in edu.rice.cs.util.ReaderWriterLockTest.testReaderMultipleReads()

Performance Warnings

Code&nbsp; Warning
Dm edu.rice.cs.drjava.config.DrJavaPropertySetup$11.update(PropertyMaps) invokes inefficient Boolean constructor; use Boolean.valueOf(...) instead
Dm edu.rice.cs.drjava.config.UnaryOpProperty$2.value(String) invokes inefficient Boolean constructor; use Boolean.valueOf(...) instead
Dm Method edu.rice.cs.drjava.model.compiler.JavacCompiler.transformRunCommand(String) invokes toString() method on a String
Dm edu.rice.cs.drjava.model.repl.newjvm.MainJVM._doStartup() invokes inefficient Boolean constructor; use Boolean.valueOf(...) instead
Dm edu.rice.cs.drjava.ui.config.BooleanOptionComponentTest.testApplyDoesChangeConfig() invokes inefficient Boolean constructor; use Boolean.valueOf(...) instead
Dm edu.rice.cs.drjava.ui.config.BooleanOptionComponentTest.testApplyThenResetDefault() invokes inefficient Boolean constructor; use Boolean.valueOf(...) instead
Dm edu.rice.cs.drjava.ui.config.BooleanOptionComponentTest.testCancelDoesNotChangeConfig() invokes inefficient Boolean constructor; use Boolean.valueOf(...) instead
Dm edu.rice.cs.drjava.ui.config.ForcedChoiceOptionComponentTest.testApplyDoesChangeConfig() invokes inefficient new String(String) constructor
Dm edu.rice.cs.drjava.ui.config.ForcedChoiceOptionComponentTest.testApplyThenResetDefault() invokes inefficient new String(String) constructor
Dm edu.rice.cs.drjava.ui.config.ForcedChoiceOptionComponentTest.testCancelDoesNotChangeConfig() invokes inefficient new String(String) constructor
Dm edu.rice.cs.drjava.ui.DrJavaErrorHandler$1.run() forces garbage collection; extremely dubious except in benchmarking code
HSC edu.rice.cs.drjava.model.definitions.DefinitionsDocumentTest.NESTED_CLASSES_TEXT is initialized to a string constant 6096 characters long that is duplicated in 3 other class files
SIC Should edu.rice.cs.util.StringOpsTest$TestGetSimpleNameInner$Inner be a _static_ inner class?

Dodgy Warnings

Code&nbsp; Warning
BC Unchecked/unconfirmed cast from edu.rice.cs.drjava.model.DJError to edu.rice.cs.drjava.model.junit.JUnitError in edu.rice.cs.drjava.ui.JUnitPanel$JUnitErrorListPane.selectItem(DJError)
DMI Hard coded reference to an absolute pathname in edu.rice.cs.drjava.DrJava.warnIfLinuxWithCompiz()
DMI Hard coded reference to an absolute pathname in edu.rice.cs.drjava.DrJavaRestart.main(String[])
DMI Hard coded reference to an absolute pathname in edu.rice.cs.drjava.model.JarJDKToolsLibrary.getDefaultSearchRoots()
DMI Hard coded reference to an absolute pathname in edu.rice.cs.drjava.model.JarJDKToolsLibrary.getDefaultSearchRoots()
DMI Hard coded reference to an absolute pathname in edu.rice.cs.drjava.model.JarJDKToolsLibrary.getDefaultSearchRoots()
DMI Hard coded reference to an absolute pathname in edu.rice.cs.drjava.model.JarJDKToolsLibrary.getDefaultSearchRoots()
DMI Hard coded reference to an absolute pathname in edu.rice.cs.drjava.model.JarJDKToolsLibrary.getDefaultSearchRoots()
DMI Hard coded reference to an absolute pathname in edu.rice.cs.drjava.model.JarJDKToolsLibrary.getDefaultSearchRoots()
DMI Hard coded reference to an absolute pathname in edu.rice.cs.drjava.model.JarJDKToolsLibrary.getDefaultSearchRoots()
DMI Hard coded reference to an absolute pathname in edu.rice.cs.drjava.model.JarJDKToolsLibrary.getDefaultSearchRoots()
DMI Hard coded reference to an absolute pathname in edu.rice.cs.drjava.model.JarJDKToolsLibrary.getDefaultSearchRoots()
DMI Hard coded reference to an absolute pathname in edu.rice.cs.drjava.model.JarJDKToolsLibrary.getDefaultSearchRoots()
DMI Hard coded reference to an absolute pathname in edu.rice.cs.drjava.model.JarJDKToolsLibrary.getDefaultSearchRoots()
DMI Hard coded reference to an absolute pathname in edu.rice.cs.drjava.model.JarJDKToolsLibrary.getDefaultSearchRoots()
DMI Hard coded reference to an absolute pathname in edu.rice.cs.drjava.model.JarJDKToolsLibrary.getDefaultSearchRoots()
DMI Hard coded reference to an absolute pathname in edu.rice.cs.drjava.model.JarJDKToolsLibrary.getDefaultSearchRoots()
DMI Hard coded reference to an absolute pathname in edu.rice.cs.drjava.model.JarJDKToolsLibrary.getDefaultSearchRoots()
DMI Hard coded reference to an absolute pathname in edu.rice.cs.drjava.model.JarJDKToolsLibrary.getDefaultSearchRoots()
DMI Hard coded reference to an absolute pathname in edu.rice.cs.drjava.ui.NewVersionPopup$6.run()
Eq edu.rice.cs.drjava.project.DocFile doesn't override java.io.File.equals(Object)
Eq edu.rice.cs.util.AbsRelFile doesn't override java.io.File.equals(Object)
Eq edu.rice.cs.util.sexp.Tokens$BooleanToken doesn't override Tokens$SExpToken.equals(Object)
Eq edu.rice.cs.util.sexp.Tokens$NumberToken doesn't override Tokens$SExpToken.equals(Object)
FE Test for floating point equality in edu.rice.cs.util.StringOps.memSizeToString(long)
NP Possible null pointer dereference in edu.rice.cs.drjava.config.ConfigProperty.update(PropertyMaps) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.config.ConfigProperty.update(PropertyMaps) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.config.ConfigProperty.update(PropertyMaps) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.config.ConfigProperty.update(PropertyMaps) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.config.DrJavaPropertySetup$13.update(PropertyMaps) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.config.DrJavaPropertySetup$15.update(PropertyMaps) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.config.DrJavaPropertySetup$15.update(PropertyMaps) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.config.DrJavaPropertySetup$3.getCurrent(PropertyMaps) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.config.DrJavaPropertySetup$3.getCurrent(PropertyMaps) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.config.DrJavaPropertySetup$3.update(PropertyMaps) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.config.DrJavaPropertySetup$3.update(PropertyMaps) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.config.DrJavaPropertySetup$35.update(PropertyMaps) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.config.FileListProperty.update(PropertyMaps) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.config.FileListProperty.update(PropertyMaps) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.config.FileListProperty.update(PropertyMaps) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.config.FileListProperty.update(PropertyMaps) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.config.FileListProperty.update(PropertyMaps) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.config.FileProperty.update(PropertyMaps) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.config.FileProperty.update(PropertyMaps) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.config.PropertyMaps.clone() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.config.RecursiveFileListProperty.getList(PropertyMaps) due to return value of called method
NP Load of known null value in edu.rice.cs.drjava.config.ResourceBundleConfiguration.getSetting(Option)
NP Load of known null value in edu.rice.cs.drjava.config.ResourceBundleConfiguration.isEditable(Option)
NP Load of known null value in edu.rice.cs.drjava.config.ResourceBundleConfiguration.setSetting(Option, Object)
NP Load of known null value in edu.rice.cs.drjava.config.ResourceBundleConfiguration$1.getOption(OptionParser)
NP Load of known null value in edu.rice.cs.drjava.config.ResourceBundleConfiguration$1.getString(OptionParser)
NP Load of known null value in edu.rice.cs.drjava.config.ResourceBundleConfiguration$1.removeOption(OptionParser)
NP Load of known null value in edu.rice.cs.drjava.config.ResourceBundleConfiguration$1.setOption(Option, Object)
NP Load of known null value in edu.rice.cs.drjava.config.ResourceBundleConfiguration$1.setString(OptionParser, String)
NP Possible null pointer dereference in edu.rice.cs.drjava.model.AbstractGlobalModel._makeProjectProfile(File, HashMap) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.AbstractGlobalModel._makeProjectProfile(File, HashMap) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testGetDDocFromCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testGetDDocFromCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testGetDDocFromCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testGetDDocFromCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testGetDDocFromCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testGetDDocFromCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testGetDDocFromCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testGetDDocFromCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testMemoryLeak() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testNewDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testNewDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testNewDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testNewDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testNewDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testNewDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testNewDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testNewDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testNewDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testNewDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testNewDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testNewDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testNoDDocInCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.cache.DocumentCacheTest.testOldDocumentsInAndOutOfTheCache() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.compiler.LanguageLevelStackTraceMapper.readLLBlock(File) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.compiler.LanguageLevelStackTraceMapper.readLLBlock(File) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.compiler.LanguageLevelStackTraceMapper.readLLLineBlock(File) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.compiler.LanguageLevelStackTraceMapper.readLLLineBlock(File) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.compiler.LanguageLevelStackTraceMapper.readNextLLBlockLine(BufferedReader) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.compiler.LanguageLevelStackTraceMapper.replaceStackTraceElement(StackTraceElement, File) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.compiler.LanguageLevelStackTraceMapper.replaceStackTraceElement(StackTraceElement, File, TreeMap) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.ConcreteRegionManager.contains(OrderedDocumentRegion) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.ConcreteRegionManager.getFileRegions() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.ConcreteRegionManager.getRegionCount() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.ConcreteRegionManager.getRegions() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.ConcreteRegionManager.removeRegions(OpenDefinitionsDocument) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.debug.jpda.JPDADebugger.LLBreakpointLineNum(Breakpoint) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.model.debug.jpda.PendingRequestManager.LLDDALineNum(DocumentDebugAction) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.ui.avail.GUIAvailabilityNotifier.availabilityChanged(GUIAvailabilityListener$ComponentType, boolean) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.ui.avail.GUIAvailabilityNotifier.getCount(GUIAvailabilityListener$ComponentType) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.ui.avail.GUIAvailabilityNotifier.isAvailable(GUIAvailabilityListener$ComponentType) due to return value of called method
NP Load of known null value in edu.rice.cs.drjava.ui.GenerateCustomDrJavaJarFrame.addDirectory(File, MD5ChecksumProperties, StringBuilder, ZipOutputStream, Predicate)
NP Load of known null value in edu.rice.cs.drjava.ui.GenerateCustomDrJavaJarFrame.addZipFile(File, MD5ChecksumProperties, StringBuilder, ZipOutputStream, Predicate)
NP Possible null pointer dereference in edu.rice.cs.drjava.ui.KeyBindingManager.removeExistingKeyStroke(KeyStroke) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.ui.KeyBindingManager.shouldUpdate(KeyStroke, Action) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.ui.KeyBindingManager.shouldUpdate(KeyStroke, Action) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.ui.KeyBindingManager.shouldUpdate(KeyStroke, Action) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.ui.MainFrame.getDefViewport() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.ui.MainFrame$174.update(PropertyMaps) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.ui.MainFrame$175.update(PropertyMaps) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.ui.MainFrame$185.update(PropertyMaps) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.ui.MainFrame$191.update(PropertyMaps) due to return value of called method
NP Load of known null value in edu.rice.cs.drjava.ui.MainFrame$ModelListener.interactionEnded()
NP Possible null pointer dereference in edu.rice.cs.drjava.ui.NewVersionPopup.getBuildTime(URL, Box) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.ui.NewVersionPopup.getMessage(Box) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.ui.NewVersionPopup.getMessage(Box) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.ui.ProjectAdvancedPropertiesFrame.<static initializer>() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.drjava.ui.ProjectAdvancedPropertiesFrame.setPreferencesStoredInProject(Map) due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.util.BalancingStreamTokenizer.getNextToken() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.util.LogTest.testConcurrentWrites() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.util.LogTest.testConcurrentWrites() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.util.LogTest.testExceptionPrinting() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.util.LogTest.testExceptionPrinting() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.util.LogTest.testExceptionPrinting() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.util.LogTest.testLog() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.util.LogTest.testLog() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.util.LogTest.testLog() due to return value of called method
NP Possible null pointer dereference in edu.rice.cs.util.LogTest.testLog() due to return value of called method
NS Potentially dangerous use of non-short-circuit logic in new edu.rice.cs.drjava.ui.avail.AndGUIAvailabilityListener(GUIAvailabilityNotifier, GUIAvailabilityListener$ComponentType[])
RCN Redundant nullcheck of tempJUnit which is known to be null in new edu.rice.cs.drjava.model.compiler.Javac160FilteringCompiler(JavaVersion$FullVersion, String, List)
SF Switch statement found in edu.rice.cs.drjava.config.ConfigOptionListeners.sanitizeMasterJVMArgs(JFrame, String, OptionListener) where one case falls through to the next case
SF Switch statement found in edu.rice.cs.drjava.config.ConfigOptionListeners.sanitizeSlaveJVMArgs(JFrame, String, OptionListener) where one case falls through to the next case
SF Switch statement found in edu.rice.cs.drjava.ui.NewVersionPopup.getMessage(Box) where one case falls through to the next case
ST Write to static field edu.rice.cs.util.swing.Utilities.TEST_MODE from instance method edu.rice.cs.drjava.DrJavaTestCase.setUp()
ST Write to static field edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.COMMENTED_COLOR from instance method edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.updateColors()
ST Write to static field edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.DEBUGGER_COLOR from instance method edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.updateColors()
ST Write to static field edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.DOUBLE_QUOTED_COLOR from instance method edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.updateColors()
ST Write to static field edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.ERROR_COLOR from instance method edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.updateColors()
ST Write to static field edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.INTERACTIONS_SYSTEM_ERR_COLOR from instance method edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.updateColors()
ST Write to static field edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.INTERACTIONS_SYSTEM_IN_COLOR from instance method edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.updateColors()
ST Write to static field edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.INTERACTIONS_SYSTEM_OUT_COLOR from instance method edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.updateColors()
ST Write to static field edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.KEYWORD_COLOR from instance method edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.updateColors()
ST Write to static field edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.NORMAL_COLOR from instance method edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.updateColors()
ST Write to static field edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.NUMBER_COLOR from instance method edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.updateColors()
ST Write to static field edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.SINGLE_QUOTED_COLOR from instance method edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.updateColors()
ST Write to static field edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.TYPE_COLOR from instance method edu.rice.cs.drjava.model.definitions.ColoringGlyphPainter.updateColors()
ST Write to static field edu.rice.cs.drjava.model.definitions.ColoringView.COMMENTED_COLOR from instance method edu.rice.cs.drjava.model.definitions.ColoringView.updateColors()
ST Write to static field edu.rice.cs.drjava.model.definitions.ColoringView.DEBUGGER_COLOR from instance method edu.rice.cs.drjava.model.definitions.ColoringView.updateColors()
ST Write to static field edu.rice.cs.drjava.model.definitions.ColoringView.DOUBLE_QUOTED_COLOR from instance method edu.rice.cs.drjava.model.definitions.ColoringView.updateColors()
ST Write to static field edu.rice.cs.drjava.model.definitions.ColoringView.ERROR_COLOR from instance method edu.rice.cs.drjava.model.definitions.ColoringView.updateColors()
ST Write to static field edu.rice.cs.drjava.model.definitions.ColoringView.INTERACTIONS_SYSTEM_ERR_COLOR from instance method edu.rice.cs.drjava.model.definitions.ColoringView.updateColors()
ST Write to static field edu.rice.cs.drjava.model.definitions.ColoringView.INTERACTIONS_SYSTEM_IN_COLOR from instance method edu.rice.cs.drjava.model.definitions.ColoringView.updateColors()
ST Write to static field edu.rice.cs.drjava.model.definitions.ColoringView.INTERACTIONS_SYSTEM_OUT_COLOR from instance method edu.rice.cs.drjava.model.definitions.ColoringView.updateColors()
ST Write to static field edu.rice.cs.drjava.model.definitions.ColoringView.KEYWORD_COLOR from instance method edu.rice.cs.drjava.model.definitions.ColoringView.updateColors()
ST Write to static field edu.rice.cs.drjava.model.definitions.ColoringView.NORMAL_COLOR from instance method edu.rice.cs.drjava.model.definitions.ColoringView.updateColors()
ST Write to static field edu.rice.cs.drjava.model.definitions.ColoringView.NUMBER_COLOR from instance method edu.rice.cs.drjava.model.definitions.ColoringView.updateColors()
ST Write to static field edu.rice.cs.drjava.model.definitions.ColoringView.SINGLE_QUOTED_COLOR from instance method edu.rice.cs.drjava.model.definitions.ColoringView.updateColors()
ST Write to static field edu.rice.cs.drjava.model.definitions.ColoringView.TYPE_COLOR from instance method edu.rice.cs.drjava.model.definitions.ColoringView.updateColors()
ST Write to static field edu.rice.cs.drjava.model.MultiThreadedTestCase._testFailed from instance method edu.rice.cs.drjava.model.MultiThreadedTestCase.setUp()
ST Write to static field edu.rice.cs.drjava.ui.AboutDialog.LICENSE from instance method edu.rice.cs.drjava.ui.AboutDialog.buildGUI(Container)
ST Write to static field edu.rice.cs.drjava.ui.config.FileOptionComponentTest._option from instance method edu.rice.cs.drjava.ui.config.FileOptionComponentTest.tearDown()
ST Write to static field edu.rice.cs.drjava.ui.DefinitionsPane.BREAKPOINT_PAINTER from instance method edu.rice.cs.drjava.ui.DefinitionsPane$BreakpointColorOptionListener.optionChanged(OptionEvent)
ST Write to static field edu.rice.cs.drjava.ui.DefinitionsPane.DISABLED_BREAKPOINT_PAINTER from instance method edu.rice.cs.drjava.ui.DefinitionsPane$DisabledBreakpointColorOptionListener.optionChanged(OptionEvent)
ST Write to static field edu.rice.cs.drjava.ui.AbstractDJPane.ERROR_PAINTER from instance method edu.rice.cs.drjava.ui.DefinitionsPane$ErrorColorOptionListener.optionChanged(OptionEvent)
ST Write to static field edu.rice.cs.drjava.ui.AbstractDJPane.MATCH_PAINTER from instance method edu.rice.cs.drjava.ui.DefinitionsPane$MatchColorOptionListener.optionChanged(OptionEvent)
ST Write to static field edu.rice.cs.drjava.ui.DefinitionsPane.THREAD_PAINTER from instance method edu.rice.cs.drjava.ui.DefinitionsPane$ThreadColorOptionListener.optionChanged(OptionEvent)
ST Write to static field edu.rice.cs.drjava.ui.ErrorPanel._listHighlightPainter from instance method edu.rice.cs.drjava.ui.ErrorPanel$ErrorListPane$CompilerErrorColorOptionListener.optionChanged(OptionEvent)
ST Write to static field edu.rice.cs.drjava.ui.LineEnumRule.SIZE from instance method new edu.rice.cs.drjava.ui.LineEnumRule(DefinitionsPane)
ST Write to static field edu.rice.cs.drjava.ui.LineEnumRule.SIZE from instance method edu.rice.cs.drjava.ui.LineEnumRule.paintComponent(Graphics)
ST Write to static field edu.rice.cs.drjava.ui.LineEnumRule.SIZE from instance method edu.rice.cs.drjava.ui.LineEnumRule.updateFont()

Details

BC_UNCONFIRMED_CAST: Unchecked/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.

DE_MIGHT_IGNORE: Method might ignore exception

This method might ignore an exception.  In general, exceptions should be handled or reported in some way, or they should be thrown out of the method.

DM_GC: Explicit garbage collection; extremely dubious except in benchmarking code

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.

DM_BOOLEAN_CTOR: Method invokes inefficient Boolean constructor; use Boolean.valueOf(...) instead

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.

DM_STRING_CTOR: Method invokes inefficient new String(String) constructor

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.

DM_EXIT: Method invokes System.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.

DM_STRING_TOSTRING: Method invokes toString() method on a String

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

DMI_HARDCODED_ABSOLUTE_FILENAME: Code contains a hard coded reference to an absolute pathname

This code constructs a File object using a hard coded to an absolute pathname (e.g., new File("/home/dannyc/workspace/j2ee/src/share/com/sun/enterprise/deployment");

DMI_INVOKING_TOSTRING_ON_ARRAY: Invocation of toString on an 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.

DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED: Classloaders should only be created inside doPrivileged block

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.

EI_EXPOSE_REP: May expose internal representation by returning reference to mutable object

Returning a reference to a mutable object value stored in one of the object's fields exposes the internal representation of the object.  If instances are accessed by untrusted code, and unchecked changes to the mutable object would compromise security or other important properties, you will need to do something different. Returning a new copy of the object is better approach in many situations.

EI_EXPOSE_REP2: May expose internal representation by incorporating reference to mutable object

This code stores a reference to an externally mutable object into the internal representation of the object.  If instances are accessed by untrusted code, and unchecked changes to the mutable object would compromise security or other important properties, you will need to do something different. Storing a copy of the object is better approach in many situations.

EQ_COMPARETO_USE_OBJECT_EQUALS: Class defines compareTo(...) and uses 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."

EQ_DOESNT_OVERRIDE_EQUALS: Class doesn't override equals in superclass

This class extends a class that defines an equals method and adds fields, but doesn't define an equals method itself. Thus, equality on instances of this class will ignore the identity of the subclass and the added fields. Be sure this is what is intended, and that you don't need to override the equals method. Even if you don't need to override the equals method, consider overriding it anyone to document the fact that the equals method for the subclass just return the result of invoking super.equals(o).

ES_COMPARING_STRINGS_WITH_EQ: Comparison of String objects using == or !=

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.

ES_COMPARING_PARAMETER_STRING_WITH_EQ: Comparison of String parameter using == or !=

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.

FE_FLOATING_POINT_EQUALITY: Test for 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.

HE_EQUALS_USE_HASHCODE: Class defines equals() and uses Object.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 
  }

HSC_HUGE_SHARED_STRING_CONSTANT: Huge string constants is duplicated across multiple class files

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.

IJU_SETUP_NO_SUPER: TestCase implements setUp but doesn't call super.setUp()

Class is a JUnit TestCase and implements the setUp method. The setUp method should call super.setUp(), but doesn't.

IL_INFINITE_LOOP: An apparent infinite loop

This loop doesn't seem to have a way to terminate (other than by perhaps throwing an exception).

MF_CLASS_MASKS_FIELD: Class defines field that masks a superclass 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.

MS_MUTABLE_ARRAY: Field is a mutable array

A final static field references an array and can be accessed by malicious code or by accident from another package. This code can freely modify the contents of the array.

MS_CANNOT_BE_FINAL: Field isn't final and can't be protected from malicious code

A mutable static field could be changed by malicious code or by accident from another package. Unfortunately, the way the field is used doesn't allow any easy fix to this problem.

MS_SHOULD_BE_FINAL: Field isn't final but should be

A mutable static field could be changed by malicious code or by accident from another package. The field could be made final to avoid this vulnerability.

MS_OOI_PKGPROTECT: Field should be moved out of an interface and made package protected

A final static field that is defined in an interface references a mutable object such as an array or hashtable. This mutable object could be changed by malicious code or by accident from another package. To solve this, the field needs to be moved to a class and made package protected to avoid this vulnerability.

MS_PKGPROTECT: Field should be package protected

A mutable static field could be changed by malicious code or by accident. The field could be made package protected to avoid this vulnerability.

MS_EXPOSE_REP: Public static method may expose internal representation by returning array

A public static method returns a reference to an array that is part of the static state of the class. Any code that calls this method can freely modify the underlying array. One fix is to return a copy of the array.

NP_NULL_INSTANCEOF: A known null value is checked to see if it is an instance of a type

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_LOAD_OF_KNOWN_NULL_VALUE: 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.

NP_NULL_ON_SOME_PATH: Possible null pointer dereference

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

NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE: Possible null pointer dereference due to return value of called method

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.

NP_GUARANTEED_DEREF_ON_EXCEPTION_PATH: Value is null and guaranteed to be dereferenced on exception path

There is a statement or branch on an exception path 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).

NS_DANGEROUS_NON_SHORT_CIRCUIT: Potentially dangerous use of non-short-circuit logic

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

OS_OPEN_STREAM: Method may fail to close 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.

RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE: Redundant nullcheck of value known to be null

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

RV_RETURN_VALUE_IGNORED_BAD_PRACTICE: Method ignores exceptional return value

This method returns a value that is not checked. The return value should be checked since it can indication an unusual or unexpected function execution. For example, the File.delete() method returns false if the file could not be successfully deleted (rather than throwing an Exception). If you don't check the result, you won't notice if the method invocation signals unexpected behavior by returning an atypical return value.

SC_START_IN_CTOR: Constructor invokes Thread.start()

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_SWITCH_FALLTHROUGH: Switch statement found where one case falls through to the next case

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.

SIC_INNER_SHOULD_BE_STATIC: Should be a static inner class

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.

ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD: Write to static field 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.

STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE: Call to static DateFormat

As the JavaDoc states, DateFormats are inherently unsafe for multithreaded use. The detector has found a call to an instance of DateFormat that has been obtained via a static field. This looks suspicous.

For more information on this see Sun Bug #6231579 and Sun Bug #6178997.

SWL_SLEEP_WITH_LOCK_HELD: Method calls Thread.sleep() with a 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.

UG_SYNC_SET_UNSYNC_GET: Unsynchronized get method, synchronized set method

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.

UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS: Uncallable method defined in 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.

UR_UNINIT_READ: Uninitialized read of field in constructor

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.

UW_UNCOND_WAIT: Unconditional 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.

VO_VOLATILE_REFERENCE_TO_ARRAY: A volatile reference to an array doesn't treat the array elements as volatile

This declares a volatile reference to an array, which might not be what you want. With a volatile reference to an array, reads and writes of the reference to the array are treated as volatile, but the array elements are non-volatile. To get volatile array elements, you will need to use one of the atomic array classes in java.util.concurrent (provided in Java 5.0).

WA_NOT_IN_LOOP: Wait 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.