FindBugs Report

Project Information

Project: <<unnamed project>>

FindBugs version: 1.3.2

Code analyzed:



Metrics

42723 lines of code analyzed, in 786 classes, in 21 packages.

Metric Total Density*
High Priority Warnings 19 0.44
Medium Priority Warnings 153 3.58
Low Priority Warnings 318 7.44
Total Warnings 490 11.47

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



Contents

Summary

Warning Type Number
Bad practice Warnings 149
Correctness Warnings 29
Internationalization Warnings 28
Malicious code vulnerability Warnings 21
Multithreaded correctness Warnings 7
Performance Warnings 109
Security Warnings 11
Dodgy Warnings 136
Total 490

Warnings

Click on a warning row to see full context information.

Bad practice Warnings

Code&nbsp; Warning
BC Equals method for ca.sqlpower.architect.ddl.DDLStatement$StatementType assumes the argument is of type DDLStatement$StatementType
Dm ca.sqlpower.architect.swingui.ArchitectSwingSessionContextImpl$3.sessionClosing(SessionLifecycleEvent) invokes System.exit(...), which shuts down the entire virtual machine
Dm ca.sqlpower.architect.swingui.ASUtils.getContext() invokes System.exit(...), which shuts down the entire virtual machine
Eq ca.sqlpower.architect.ArchitectVersion defines compareTo(ArchitectVersion) and uses Object.equals()
ES Comparison of String parameter using == or != in ca.sqlpower.architect.diff.SQLIndexComparator.compareString(String, String)
ES Comparison of String objects using == or != in ca.sqlpower.architect.diff.SQLObjectComparator.compare(SQLObject, SQLObject)
Nm The class name ca.sqlpower.architect.swingui.CompareDMFrame$sourceCopyAction doesn't start with an upper case letter
Nm The class name ca.sqlpower.architect.swingui.CompareDMFrame$targetCopyAction doesn't start with an upper case letter
Nm Confusing to have methods ca.sqlpower.architect.swingui.IndexColumnTable.cleanUp() and ca.sqlpower.architect.swingui.action.ExportDDLAction$ConflictResolverProcess.cleanup()
Nm The method name ca.sqlpower.architect.swingui.olap.OLAPPlayPenFactory$OLAPModelListener.PlayPenLifeEnding(PlayPenLifecycleEvent) doesn't start with a lower case letter
Nm The method name ca.sqlpower.architect.swingui.olap.OLAPPlayPenFactory$PlayPenUndoAdapter.PlayPenComponentAdded(PlayPenContentEvent) doesn't start with a lower case letter
Nm The method name ca.sqlpower.architect.swingui.olap.OLAPPlayPenFactory$PlayPenUndoAdapter.PlayPenComponentRemoved(PlayPenContentEvent) doesn't start with a lower case letter
Nm The method name ca.sqlpower.architect.swingui.olap.OLAPPlayPenFactory$SelectionSynchronizer.PlayPenComponentAdded(PlayPenContentEvent) doesn't start with a lower case letter
Nm The method name ca.sqlpower.architect.swingui.olap.OLAPPlayPenFactory$SelectionSynchronizer.PlayPenComponentRemoved(PlayPenContentEvent) doesn't start with a lower case letter
Nm The method name ca.sqlpower.architect.swingui.olap.UsageComponent$OLAPPanesWatcher.PlayPenComponentAdded(PlayPenContentEvent) doesn't start with a lower case letter
Nm The method name ca.sqlpower.architect.swingui.olap.UsageComponent$OLAPPanesWatcher.PlayPenComponentRemoved(PlayPenContentEvent) doesn't start with a lower case letter
Nm The method name ca.sqlpower.architect.swingui.RelationalPlayPenFactory$SelectionSynchronizer.PlayPenComponentAdded(PlayPenContentEvent) doesn't start with a lower case letter
Nm The method name ca.sqlpower.architect.swingui.RelationalPlayPenFactory$SelectionSynchronizer.PlayPenComponentRemoved(PlayPenContentEvent) doesn't start with a lower case letter
Nm The class name ca.sqlpower.architect.undo.UndoManager shadows the simple name of the superclass javax.swing.undo.UndoManager
ODR ca.sqlpower.architect.etl.datamover.DataMover.copyTables(SQLObject, Collection) may fail to close java.sql.Statement
ODR ca.sqlpower.architect.etl.datamover.DataMover.copyTable(SQLTable, SQLTable) may fail to close database resource on exception
ODR ca.sqlpower.architect.etl.datamover.DataMover.copyTable(SQLTable, SQLTable) may fail to close database resource on exception
ODR ca.sqlpower.architect.profile.RemoteDatabaseProfileCreator.doColumnProfile(ColumnProfileResult, MonitorableImpl) may fail to close database resource on exception
ODR ca.sqlpower.architect.profile.RemoteDatabaseProfileCreator.doTableProfile(TableProfileResult) may fail to close database resource on exception
ODR ca.sqlpower.architect.swingui.SQLScriptDialog$ExecuteSQLScriptWorker.doStuff() may fail to close database resource on exception
OS ca.sqlpower.architect.etl.kettle.KettleJob.outputToXML(List, JobMeta) may fail to close stream on exception
RV ca.sqlpower.architect.antbuild.AddLicenseToDMGTask.execute() ignores exceptional return value of java.io.File.delete()
RV ca.sqlpower.architect.ArchitectSessionContextImpl.checkForValidPlDotIni() ignores exceptional return value of java.io.File.createNewFile()
RV ca.sqlpower.architect.etl.kettle.KettleJob.outputToXML(List, JobMeta) ignores exceptional return value of java.io.File.createNewFile()
RV ca.sqlpower.architect.etl.kettle.KettleJob.outputToXML(List, JobMeta) ignores exceptional return value of java.io.File.delete()
RV ca.sqlpower.architect.swingui.ArchitectSwingSessionImpl.saveOrSaveAs(boolean, boolean) ignores exceptional return value of java.io.File.createNewFile()
Se ca.sqlpower.architect.diff.SQLIndexComparator implements Comparator but not Serializable
Se ca.sqlpower.architect.diff.SQLObjectComparator implements Comparator but not Serializable
Se ca.sqlpower.architect.diff.SQLRelationshipComparator implements Comparator but not Serializable
Se Class ca.sqlpower.architect.olap.undo.OLAPChildEdit defines non-transient non-serializable instance field event
Se Class ca.sqlpower.architect.olap.undo.OLAPUndoManager defines non-transient non-serializable instance field eventHandler
Se Class ca.sqlpower.architect.olap.undo.OLAPUndoManager defines non-transient non-serializable instance field rememberedPosition
Se ca.sqlpower.architect.profile.LocalReservoirProfileCreator$TopNValuesComparator implements Comparator but not Serializable
Se ca.sqlpower.architect.SQLColumn$ColumnNameComparator implements Comparator but not Serializable
Se ca.sqlpower.architect.SQLColumn$CompareByPKSeq implements Comparator but not Serializable
Se Class ca.sqlpower.architect.SQLIndex defines non-transient non-serializable instance field removeColumnListener
Se ca.sqlpower.architect.SQLIndex$1 stored into non-transient field SQLIndex.removeColumnListener
Se Class ca.sqlpower.architect.SQLIndex$Column defines non-transient non-serializable instance field targetColumnListener
Se ca.sqlpower.architect.SQLIndex$Column is serializable and an inner class
Se The field ca.sqlpower.architect.SQLObject.sqlObjectListeners is transient but isn't set by deserialization
Se The field ca.sqlpower.architect.SQLObject.sqlObjectPreEventListeners is transient but isn't set by deserialization
Se Class ca.sqlpower.architect.SQLRelationship defines non-transient non-serializable instance field fkColumnManager
Se ca.sqlpower.architect.SQLRelationship$ColumnMappingFKColumnOrderComparator implements Comparator but not Serializable
Se Class ca.sqlpower.architect.swingui.action.AutoLayoutAction defines non-transient non-serializable instance field layout
Se Class ca.sqlpower.architect.swingui.action.CreateRelationshipAction defines non-transient non-serializable instance field cursorManager
Se Class ca.sqlpower.architect.swingui.action.CreateRelationshipAction defines non-transient non-serializable instance field fkTable
Se Class ca.sqlpower.architect.swingui.action.CreateRelationshipAction defines non-transient non-serializable instance field pkTable
Se Class ca.sqlpower.architect.swingui.action.CreateTableAction$TablePlacer$1 defines non-transient non-serializable instance field this$1
Se Class ca.sqlpower.architect.swingui.action.DeleteSelectedAction defines non-transient non-serializable instance field treeSelectionHandler
Se Class ca.sqlpower.architect.swingui.action.ExportCSVAction defines non-transient non-serializable instance field session
Se Class ca.sqlpower.architect.swingui.action.ProfileAction defines non-transient non-serializable instance field profileManager
Se ca.sqlpower.architect.swingui.action.RedoAction$ManagerListener stored into non-transient field RedoAction.managerListener
Se ca.sqlpower.architect.swingui.action.UndoAction$ManagerListener stored into non-transient field UndoAction.managerListener
Se Class ca.sqlpower.architect.swingui.ArchitectFrame defines non-transient non-serializable instance field autoLayout
Se ca.sqlpower.architect.layout.FruchtermanReingoldForceLayout stored into non-transient field ArchitectFrame.autoLayout
Se Class ca.sqlpower.architect.swingui.BasicRelationshipUI defines non-transient non-serializable instance field containmentPath
Se Class ca.sqlpower.architect.swingui.BasicRelationshipUI defines non-transient non-serializable instance field path
Se Class ca.sqlpower.architect.swingui.BasicRelationshipUI defines non-transient non-serializable instance field idStroke
Se Class ca.sqlpower.architect.swingui.BasicRelationshipUI defines non-transient non-serializable instance field nonIdStroke
Se Class ca.sqlpower.architect.swingui.BasicRelationshipUI defines non-transient non-serializable instance field relationship
Se Class ca.sqlpower.architect.swingui.BasicTablePaneUI defines non-transient non-serializable instance field tablePane
Se Class ca.sqlpower.architect.swingui.ColumnEditPanel defines non-transient non-serializable instance field session
Se Class ca.sqlpower.architect.swingui.CompareDMPanel defines non-transient non-serializable instance field playpenNameRefreshHandler
Se Class ca.sqlpower.architect.swingui.CompareDMPanel defines non-transient non-serializable instance field source
Se Class ca.sqlpower.architect.swingui.CompareDMPanel defines non-transient non-serializable instance field target
Se ca.sqlpower.architect.swingui.CompareDMPanel$3 stored into non-transient field CompareDMPanel.playpenNameRefreshHandler
Se Class ca.sqlpower.architect.swingui.CompareDMPanel$SourceOrTargetStuff$1 defines non-transient non-serializable instance field this$1
Se Class ca.sqlpower.architect.swingui.CompareDMPanel$SourceOrTargetStuff$2 defines non-transient non-serializable instance field this$1
Se Class ca.sqlpower.architect.swingui.DBTreeCellRenderer defines non-transient non-serializable instance field session
Se Class ca.sqlpower.architect.swingui.IERelationshipUI defines non-transient non-serializable instance field idStroke
Se Class ca.sqlpower.architect.swingui.IERelationshipUI defines non-transient non-serializable instance field nonIdStroke
Se Class ca.sqlpower.architect.swingui.IndexEditPanel defines non-transient non-serializable instance field columnsTable
Se Class ca.sqlpower.architect.swingui.olap.action.CreateCubeAction defines non-transient non-serializable instance field schema
Se Class ca.sqlpower.architect.swingui.olap.action.CreateDimensionAction defines non-transient non-serializable instance field schema
Se Class ca.sqlpower.architect.swingui.olap.action.CreateVirtualCubeAction defines non-transient non-serializable instance field schema
Se Class ca.sqlpower.architect.swingui.olap.action.EditCubeAction defines non-transient non-serializable instance field cube
Se Class ca.sqlpower.architect.swingui.olap.action.EditDimensionAction defines non-transient non-serializable instance field dimension
Se Class ca.sqlpower.architect.swingui.olap.action.EditHierarchyAction defines non-transient non-serializable instance field hierarchy
Se Class ca.sqlpower.architect.swingui.olap.action.EditLevelAction defines non-transient non-serializable instance field level
Se Class ca.sqlpower.architect.swingui.olap.action.EditMeasureAction defines non-transient non-serializable instance field measure
Se Class ca.sqlpower.architect.swingui.olap.action.EditSchemaAction defines non-transient non-serializable instance field schema
Se Class ca.sqlpower.architect.swingui.olap.action.EditVirtualCubeAction defines non-transient non-serializable instance field vCube
Se Class ca.sqlpower.architect.swingui.olap.action.ExportSchemaAction defines non-transient non-serializable instance field schema
Se Class ca.sqlpower.architect.swingui.olap.action.OLAPDeleteSelectedAction defines non-transient non-serializable instance field editSession
Se Class ca.sqlpower.architect.swingui.olap.action.OLAPEditAction defines non-transient non-serializable instance field olapSession
Se Class ca.sqlpower.architect.swingui.olap.BasicVirtualCubePaneUI defines non-transient non-serializable instance field cubeUsageWatcher
Se Class ca.sqlpower.architect.swingui.olap.OLAPTree defines non-transient non-serializable instance field menuFactory
Se Class ca.sqlpower.architect.swingui.olap.OLAPTree defines non-transient non-serializable instance field schema
Se Class ca.sqlpower.architect.swingui.PlayPen defines non-transient non-serializable instance field contentPane
Se Class ca.sqlpower.architect.swingui.PlayPen defines non-transient non-serializable instance field cursorManager
Se Class ca.sqlpower.architect.swingui.PlayPen defines non-transient non-serializable instance field dgl
Se Class ca.sqlpower.architect.swingui.PlayPen defines non-transient non-serializable instance field fontRenderContext
Se Class ca.sqlpower.architect.swingui.PlayPen defines non-transient non-serializable instance field popupFactory
Se Class ca.sqlpower.architect.swingui.PlayPen defines non-transient non-serializable instance field ppMouseListener
Se Class ca.sqlpower.architect.swingui.PlayPen defines non-transient non-serializable instance field bringToFrontAction
Se Class ca.sqlpower.architect.swingui.PlayPen defines non-transient non-serializable instance field sendToBackAction
Se Class ca.sqlpower.architect.swingui.PlayPen defines non-transient non-serializable instance field zoomInAction
Se Class ca.sqlpower.architect.swingui.PlayPen defines non-transient non-serializable instance field zoomOutAction
Se Class ca.sqlpower.architect.swingui.PreferencesPanel defines non-transient non-serializable instance field context
Se Class ca.sqlpower.architect.swingui.PreferencesPanel defines non-transient non-serializable instance field us
Se Class ca.sqlpower.architect.swingui.PrintPanel defines non-transient non-serializable instance field job
Se Class ca.sqlpower.architect.swingui.PrintPanel defines non-transient non-serializable instance field pageFormat
Se Class ca.sqlpower.architect.swingui.ProfileManagerView defines non-transient non-serializable instance field pageListener
Se Class ca.sqlpower.architect.swingui.ProfileManagerView defines non-transient non-serializable instance field pm
Se ca.sqlpower.architect.swingui.ProfileManagerView$TableProfileDateComparator implements Comparator but not Serializable
Se ca.sqlpower.architect.swingui.ProfileManagerView$TableProfileNameComparator implements Comparator but not Serializable
Se Class ca.sqlpower.architect.swingui.ProfilePanel defines non-transient non-serializable instance field displayPanel
Se ca.sqlpower.architect.swingui.ProfilePanel$1 stored into non-transient field ProfilePanel.listener
Se Class ca.sqlpower.architect.swingui.ProfileRowComponent defines non-transient non-serializable instance field pm
Se Class ca.sqlpower.architect.swingui.ProfileRowComponent defines non-transient non-serializable instance field profileResultListener
Se Class ca.sqlpower.architect.swingui.ProfileRowComponent defines non-transient non-serializable instance field result
Se ca.sqlpower.architect.swingui.ProfileRowComponent$1 stored into non-transient field ProfileRowComponent.profileResultListener
Se Class ca.sqlpower.architect.swingui.table.FreqValueCountTableModel defines non-transient non-serializable instance field profile
Se Class ca.sqlpower.architect.swingui.table.ProfileTableModel defines non-transient non-serializable instance field profileManager
Se ca.sqlpower.architect.swingui.table.ValueTableCellRenderer$1 is serializable and an inner class
Se Class ca.sqlpower.architect.swingui.TableEditPanel defines non-transient non-serializable instance field tp
Se Class ca.sqlpower.architect.undo.UndoManager defines non-transient non-serializable instance field eventAdapter
Se Class ca.sqlpower.architect.undo.UndoManager$SQLObjectUndoableEventAdapter$CompEdit defines non-transient non-serializable instance field this$1
SnVI ca.sqlpower.architect.DateFormatAllowsNull is Serializable; consider declaring a serialVersionUID
SnVI ca.sqlpower.architect.ddl.CaseInsensitiveHashMap is Serializable; consider declaring a serialVersionUID
SnVI ca.sqlpower.architect.profile.event.ProfileChangeEvent is Serializable; consider declaring a serialVersionUID
SnVI ca.sqlpower.architect.SQLCatalog is Serializable; consider declaring a serialVersionUID
SnVI ca.sqlpower.architect.SQLColumn is Serializable; consider declaring a serialVersionUID
SnVI ca.sqlpower.architect.SQLExceptionNode is Serializable; consider declaring a serialVersionUID
SnVI ca.sqlpower.architect.SQLIndex is Serializable; consider declaring a serialVersionUID
SnVI ca.sqlpower.architect.SQLIndex$Column is Serializable; consider declaring a serialVersionUID
SnVI ca.sqlpower.architect.SQLObjectEvent is Serializable; consider declaring a serialVersionUID
SnVI ca.sqlpower.architect.SQLObjectPreEvent is Serializable; consider declaring a serialVersionUID
SnVI ca.sqlpower.architect.SQLObjectRoot is Serializable; consider declaring a serialVersionUID
SnVI ca.sqlpower.architect.SQLRelationship is Serializable; consider declaring a serialVersionUID
SnVI ca.sqlpower.architect.SQLRelationship$ColumnMapping is Serializable; consider declaring a serialVersionUID
SnVI ca.sqlpower.architect.SQLSchema is Serializable; consider declaring a serialVersionUID
SnVI ca.sqlpower.architect.SQLSequence is Serializable; consider declaring a serialVersionUID
SnVI ca.sqlpower.architect.SQLTable is Serializable; consider declaring a serialVersionUID
SnVI ca.sqlpower.architect.SQLTable$Folder is Serializable; consider declaring a serialVersionUID
SnVI ca.sqlpower.architect.swingui.DBTreeModel is Serializable; consider declaring a serialVersionUID
SnVI ca.sqlpower.architect.swingui.DnDTreePathTransferable is Serializable; consider declaring a serialVersionUID
SnVI ca.sqlpower.architect.swingui.event.SelectionEvent is Serializable; consider declaring a serialVersionUID
SnVI ca.sqlpower.architect.swingui.olap.BasicCubePaneUI is Serializable; consider declaring a serialVersionUID
SnVI ca.sqlpower.architect.swingui.olap.BasicDimensionPaneUI is Serializable; consider declaring a serialVersionUID
SnVI ca.sqlpower.architect.swingui.olap.BasicVirtualCubePaneUI is Serializable; consider declaring a serialVersionUID
SnVI ca.sqlpower.architect.swingui.olap.DnDOLAPTransferable is Serializable; consider declaring a serialVersionUID
UI Usage of GetResource in ca.sqlpower.architect.swingui.action.AutoLayoutAction.actionPerformed(ActionEvent) may be unsafe if class is extended
UI Usage of GetResource in ca.sqlpower.architect.swingui.olap.action.CreateEnergonCubeAction.actionPerformed(ActionEvent) may be unsafe if class is extended

Correctness Warnings

Code&nbsp; Warning
MF Method new ca.sqlpower.architect.ddl.GenericTypeDescriptor(String, int, long, String, String, int, boolean, boolean) defines a variable that obscures field GenericTypeDescriptor.hasScale
MF Field HelpAction.session masks field in superclass ca.sqlpower.architect.swingui.action.AbstractArchitectAction
MF Method ca.sqlpower.architect.swingui.ContainerPane.getSelectedItems() defines a variable that obscures field ContainerPane.selectedItems
MF Method new ca.sqlpower.architect.swingui.DBTreeNode(SQLObject) defines a variable that obscures field DBTreeNode.parent
MF Field IERelationshipUI.idStroke masks field in superclass ca.sqlpower.architect.swingui.BasicRelationshipUI
MF Field IERelationshipUI.nonIdStroke masks field in superclass ca.sqlpower.architect.swingui.BasicRelationshipUI
MF Method ca.sqlpower.architect.swingui.IndexEditPanel.getIndexName() defines a variable that obscures field IndexEditPanel.name
MF Method ca.sqlpower.architect.swingui.TablePane.drop(DropTargetDropEvent) defines a variable that obscures field TablePane.insertionPoint
NP Possible null pointer dereference of mappingRules in ca.sqlpower.architect.ddl.TypeMap.getRules(SQLColumn)
NP Possible null pointer dereference of st in ca.sqlpower.architect.swingui.action.InsertColumnAction.processSQLObject(SQLObject)
NP Possible null pointer dereference of fact in new ca.sqlpower.architect.swingui.olap.LevelEditPanel(MondrianModel$Level)
RCN Nullcheck of FruchtermanReingoldForceLayout.nodes at line 147 of value previously dereferenced in ca.sqlpower.architect.layout.FruchtermanReingoldForceLayout.nextFrame()
RCN Nullcheck of prop at line 839 of value previously dereferenced in ca.sqlpower.architect.SQLRelationship$RelationshipManager.dbObjectChanged(SQLObjectEvent)
RCN Nullcheck of index at line 68 of value previously dereferenced in new ca.sqlpower.architect.swingui.action.EditSpecificIndexAction(ArchitectSwingSession, SQLIndex)
RCN Nullcheck of settings at line 216 of value previously dereferenced in ca.sqlpower.architect.swingui.KettleJobPanel.buildUI()
RCN Nullcheck of fcg at line 385 of value previously dereferenced in ca.sqlpower.architect.swingui.PrintPanel$PrintPreviewPanel.paintComponent(Graphics)
RCN Nullcheck of cr at line 176 of value previously dereferenced in ca.sqlpower.architect.swingui.ProfileGraphPanel.displayProfile(ColumnProfileResult)
RCN Nullcheck of ProfileRowComponent$RowComponentLayout.icon at line 208 of value previously dereferenced in ca.sqlpower.architect.swingui.ProfileRowComponent$RowComponentLayout.layoutContainer(Container)
RCN Nullcheck of ProfileRowComponent$RowComponentLayout.reload at line 255 of value previously dereferenced in ca.sqlpower.architect.swingui.ProfileRowComponent$RowComponentLayout.layoutContainer(Container)
RCN Nullcheck of con at line 457 of value previously dereferenced in ca.sqlpower.architect.swingui.SQLScriptDialog$ExecuteSQLScriptWorker.doStuff()
RV Method ca.sqlpower.architect.layout.FruchtermanReingoldForceLayout.nextFrame() uses generates a random value from 0 to 1 and then coerces that value to the integer 0
SIO Method ca.sqlpower.architect.swingui.action.AutoLayoutAction.actionPerformed(ActionEvent) does an unnecessary type check using instanceof operator when it can be determined statically
SIO Method ca.sqlpower.architect.swingui.PlayPen$PPMouseListener.mouseClicked(MouseEvent) does an unnecessary type check using instanceof operator when it can be determined statically
SIO Method ca.sqlpower.architect.swingui.PlayPen$PPMouseListener.mousePressed(MouseEvent) does an unnecessary type check using instanceof operator when it can be determined statically
SIO Method ca.sqlpower.architect.swingui.ProfileGraphPanel.displayProfile(ColumnProfileResult) does an unnecessary type check using instanceof operator when it can be determined statically
UwF Unwritten field: ca.sqlpower.architect.diff.CompareSQL.currentTableName
UwF Unwritten field: ca.sqlpower.architect.swingui.action.ExportDDLAction$ConflictResolverProcess.error
UwF Unwritten field: ca.sqlpower.architect.swingui.CompareDMPanel$SourceOrTargetStuff.newConnectionDialog
UwF Unwritten field: ca.sqlpower.architect.swingui.CompareDMSettings$SourceOrTargetSettings.connectURL

Internationalization Warnings

Code&nbsp; Warning
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase
Dm Use of non-localized String.toUpperCase() or String.toLowerCase

Malicious code vulnerability Warnings

Code&nbsp; Warning
EI ca.sqlpower.architect.ArchitectVersion.getParts() may expose internal representation by returning ArchitectVersion.parts
EI ca.sqlpower.architect.SQLObjectEvent.getChangedIndices() may expose internal representation by returning SQLObjectEvent.changedIndices
EI ca.sqlpower.architect.SQLObjectEvent.getChildren() may expose internal representation by returning SQLObjectEvent.children
EI ca.sqlpower.architect.SQLObjectPreEvent.getChangeIndices() may expose internal representation by returning SQLObjectPreEvent.changeIndices
EI ca.sqlpower.architect.SQLObjectPreEvent.getChildren() may expose internal representation by returning SQLObjectPreEvent.children
EI2 new ca.sqlpower.architect.SQLObjectEvent(SQLObject, int[], SQLObject[]) may expose internal representation by storing an externally mutable object into SQLObjectEvent.changedIndices
EI2 new ca.sqlpower.architect.SQLObjectEvent(SQLObject, int[], SQLObject[]) may expose internal representation by storing an externally mutable object into SQLObjectEvent.children
EI2 ca.sqlpower.architect.SQLObjectEvent.setChangedIndices(int[]) may expose internal representation by storing an externally mutable object into SQLObjectEvent.changedIndices
EI2 ca.sqlpower.architect.SQLObjectEvent.setChildren(SQLObject[]) may expose internal representation by storing an externally mutable object into SQLObjectEvent.children
EI2 new ca.sqlpower.architect.SQLObjectPreEvent(SQLObject, int[], SQLObject[]) may expose internal representation by storing an externally mutable object into SQLObjectPreEvent.changeIndices
EI2 new ca.sqlpower.architect.SQLObjectPreEvent(SQLObject, int[], SQLObject[]) may expose internal representation by storing an externally mutable object into SQLObjectPreEvent.children
MS ca.sqlpower.architect.ddl.TypeMap.mainInstance isn't final but should be
MS ca.sqlpower.architect.SQLIndex.INDEX_TYPE_DESCRIPTOR isn't final but should be
MS ca.sqlpower.architect.SQLIndex.RS_INDEX_TYPE_COL isn't final but should be
MS public static ca.sqlpower.architect.SQLType.getTypes() may expose internal representation by returning SQLType.TYPES
MS ca.sqlpower.architect.swingui.ColorScheme.BACKGROUND_COLOURS should be package protected
MS ca.sqlpower.architect.swingui.ColorScheme.FOREGROUND_COLOURS should be package protected
MS ca.sqlpower.architect.swingui.DBTreeNode.userObjectToTreeNodeMap isn't final but should be
MS ca.sqlpower.architect.swingui.IndexColumnTable.COL_NAME isn't final but should be
MS ca.sqlpower.architect.swingui.IndexColumnTable.IN_INDEX isn't final but should be
MS ca.sqlpower.architect.swingui.IndexColumnTable.ORDER isn't final but should be

Multithreaded correctness Warnings

Code&nbsp; Warning
IS Inconsistent synchronization of ca.sqlpower.architect.SQLDatabase.connectionPool; locked 57% of time
IS Inconsistent synchronization of ca.sqlpower.architect.SQLObject.magicDisableCount; locked 85% of time
IS Inconsistent synchronization of ca.sqlpower.architect.SQLTable.indicesFolder; locked 72% of time
IS Inconsistent synchronization of ca.sqlpower.architect.swingui.PlayPen.tableNames; locked 66% of time
IS Inconsistent synchronization of ca.sqlpower.architect.undo.UndoManager.redoing; locked 50% of time
IS Inconsistent synchronization of ca.sqlpower.architect.undo.UndoManager.undoing; locked 50% of time
LI Incorrect lazy initialization and update of static field ca.sqlpower.architect.swingui.ASUtils.context in ca.sqlpower.architect.swingui.ASUtils.getContext()

Performance Warnings

Code&nbsp; Warning
Bx Method ca.sqlpower.architect.AbstractUserSetting.setInt(String, int) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead
Bx Method ca.sqlpower.architect.ddl.ConflictResolver.getJobSize() invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead
Bx Primitive value is boxed then unboxed to perform primative coercion in ca.sqlpower.architect.etl.kettle.KettleJob.createMergeJoins(int, TransMeta, List)
Bx Method ca.sqlpower.architect.etl.kettle.KettleJob.createMergeJoins(int, TransMeta, List) invokes inefficient Double.valueOf(double) constructor; use KettleJob.java:[line 621] instead
Bx Method ca.sqlpower.architect.etl.kettle.KettleJob.doExport(List, SQLDatabase) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead
Bx Method ca.sqlpower.architect.profile.LocalReservoirProfileCreator.profileColumnsFromSample(TableProfileResult, Object[][], MonitorableImpl) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead
Bx Method ca.sqlpower.architect.SQLColumn.addColumnsToTable(SQLTable, String, String, String, DatabaseMetaData) invokes inefficient Double.valueOf(double) constructor; use SQLColumn.java:[line 290] instead
Bx Method ca.sqlpower.architect.SQLIndex.addIndicesToTable(SQLTable, String, String, String, DatabaseMetaData) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead
Bx Method ca.sqlpower.architect.SQLRelationship.realizeMapping() invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead
Bx Method ca.sqlpower.architect.SQLRelationship.setIdentifying(boolean) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead
Bx Method ca.sqlpower.architect.SQLRelationship$RelationshipManager.ensureInMapping(SQLColumn) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead
Bx Method ca.sqlpower.architect.SQLTable.addColumnImpl(int, SQLColumn) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead
Bx Method ca.sqlpower.architect.SQLTable.changeColumnIndex(int, int, boolean) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead
Bx Method ca.sqlpower.architect.SQLTable.inherit(int, SQLColumn, boolean) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead
Bx Method ca.sqlpower.architect.SQLTable.inherit(int, SQLTable) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead
Bx Method ca.sqlpower.architect.SQLTable.normalizePrimaryKey() invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead
Bx Method ca.sqlpower.architect.swingui.ColumnEditPanel.editColumn(SQLColumn) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead
Bx Method ca.sqlpower.architect.swingui.ColumnEditPanel.updateModel() invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead
Bx Method ca.sqlpower.architect.swingui.PlayPen$AddObjectsTask.doStuff() invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead
Bx Method ca.sqlpower.architect.swingui.SQLScriptDialog$ExecuteSQLScriptWorker.getJobSize() invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead
Bx Method ca.sqlpower.architect.swingui.SwingUIProject.saveSQLObject(PrintWriter, SQLObject) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead
Bx Method ca.sqlpower.architect.swingui.TablePane.insertObjects(List, int) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead
Bx Method ca.sqlpower.architect.swingui.TablePane.setInsertionPoint(int) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead
Dm ca.sqlpower.architect.CoreProject$ProfileResultTopNValueFactory.createObject(Attributes) invokes inefficient new String(String) constructor
Dm ca.sqlpower.architect.CoreProject$ProfileResultValueFactory.createObject(Attributes) invokes inefficient new String(String) constructor
Dm ca.sqlpower.architect.swingui.IndexColumnTable$Row.toString() invokes inefficient new String(String) constructor
Dm ca.sqlpower.architect.swingui.IndexEditPanel.generateName(int) invokes inefficient new String(String) constructor
Dm Method new ca.sqlpower.architect.swingui.PrintPanel(ArchitectSwingSession) invokes toString() method on a String
ITA Method ca.sqlpower.architect.SQLObject.fireDbChildrenPreRemove(int[], List) uses Collection.toArray() with zero-length array argument
ITA Method ca.sqlpower.architect.SQLObject.fireDbChildrenRemoved(int[], List) uses Collection.toArray() with zero-length array argument
ITA Method ca.sqlpower.architect.SQLObject.fireDbObjectChanged(String, Object, Object) uses Collection.toArray() with zero-length array argument
ITA Method ca.sqlpower.architect.SQLObject.fireDbStructureChanged() uses Collection.toArray() with zero-length array argument
ITA Method ca.sqlpower.architect.SQLObject.fireUndoCompoundEvent(UndoCompoundEvent) uses Collection.toArray() with zero-length array argument
ITA Method new ca.sqlpower.architect.swingui.AboutPanel$SystemPropertiesTableModel(AboutPanel) uses Collection.toArray() with zero-length array argument
SIC Should ca.sqlpower.architect.CoreProject$DDLGeneratorFactory be a _static_ inner class?
SIC Should ca.sqlpower.architect.CoreProject$FileFactory be a _static_ inner class?
SIC Should ca.sqlpower.architect.CoreProject$ProfileResultTopNValueFactory be a _static_ inner class?
SIC Should ca.sqlpower.architect.CoreProject$ProfileResultValueFactory be a _static_ inner class?
SIC Should ca.sqlpower.architect.ddl.TypeMap$MappingRule be a _static_ inner class?
SIC Should ca.sqlpower.architect.DepthFirstSearch$VertexInfo be a _static_ inner class?
SIC Should ca.sqlpower.architect.olap.SchemaWatcher$CubeDimensionKey be a _static_ inner class?
SIC The class ca.sqlpower.architect.olap.undo.OLAPUndoManager$1 could be refactored into a named _static_ inner class
SIC Should ca.sqlpower.architect.profile.LocalReservoirProfileCreator$TopNValuesComparator be a _static_ inner class?
SIC The class ca.sqlpower.architect.profile.output.ProfilePDFFormat$1 could be refactored into a named _static_ inner class
SIC Should ca.sqlpower.architect.profile.output.ProfilePDFFormat$ProfileTableStructure be a _static_ inner class?
SIC Should ca.sqlpower.architect.profile.RemoteDatabaseProfileCreator$AverageSQLFunction be a _static_ inner class?
SIC Should ca.sqlpower.architect.profile.RemoteDatabaseProfileCreator$CaseWhenNullSQLFunction be a _static_ inner class?
SIC Should ca.sqlpower.architect.profile.RemoteDatabaseProfileCreator$StringLengthSQLFunction be a _static_ inner class?
SIC Should ca.sqlpower.architect.swingui.AboutPanel$SystemPropertiesTableModel be a _static_ inner class?
SIC The class ca.sqlpower.architect.swingui.action.AboutAction$1 could be refactored into a named _static_ inner class
SIC The class ca.sqlpower.architect.swingui.action.EditColumnAction$2 could be refactored into a named _static_ inner class
SIC The class ca.sqlpower.architect.swingui.action.EditTableAction$1 could be refactored into a named _static_ inner class
SIC The class ca.sqlpower.architect.swingui.action.EditTableAction$2 could be refactored into a named _static_ inner class
SIC The class ca.sqlpower.architect.swingui.action.ExportDDLAction$2 could be refactored into a named _static_ inner class
SIC Should ca.sqlpower.architect.swingui.action.ExportDDLAction$ConflictFinderProcess be a _static_ inner class?
SIC Should ca.sqlpower.architect.swingui.action.ExportDDLAction$ConflictResolverProcess be a _static_ inner class?
SIC The class ca.sqlpower.architect.swingui.action.KettleJobAction$2 could be refactored into a named _static_ inner class
SIC The class ca.sqlpower.architect.swingui.action.ProgressAction$1 could be refactored into a named _static_ inner class
SIC Should ca.sqlpower.architect.swingui.action.SaveProfileAction$ProfileResultsTree be a _static_ inner class?
SIC The class ca.sqlpower.architect.swingui.action.VisualMappingReportAction$1 could be refactored into a named _static_ inner class
SIC The class ca.sqlpower.architect.swingui.action.VisualMappingReportAction$3 could be refactored into a named _static_ inner class
SIC The class ca.sqlpower.architect.swingui.ArchitectSwingSessionContextImpl$1 could be refactored into a named _static_ inner class
SIC Should ca.sqlpower.architect.swingui.CompareDMFrame$CloseAction be a _static_ inner class?
SIC Should ca.sqlpower.architect.swingui.CompareDMFrame$sourceCopyAction be a _static_ inner class?
SIC Should ca.sqlpower.architect.swingui.CompareDMFrame$targetCopyAction be a _static_ inner class?
SIC The class ca.sqlpower.architect.swingui.DBTree$PokeDBWorker could be refactored into a _static_ inner class
SIC Should ca.sqlpower.architect.swingui.DBTreeNode$TreeNodeEnumeration be a _static_ inner class?
SIC Should ca.sqlpower.architect.swingui.FormLayout$LeftRightHeight be a _static_ inner class?
SIC The class ca.sqlpower.architect.swingui.IndexColumnTable$1 could be refactored into a named _static_ inner class
SIC Should ca.sqlpower.architect.swingui.IndexColumnTable$ComboBoxEditor be a _static_ inner class?
SIC Should ca.sqlpower.architect.swingui.IndexColumnTable$ComboBoxRenderer be a _static_ inner class?
SIC Should ca.sqlpower.architect.swingui.IndexColumnTable$Row be a _static_ inner class?
SIC The class ca.sqlpower.architect.swingui.olap.action.CreateDimensionUsageAction$1 could be refactored into a named _static_ inner class
SIC The class ca.sqlpower.architect.swingui.olap.action.CreateDimensionUsageAction$2 could be refactored into a named _static_ inner class
SIC The class ca.sqlpower.architect.swingui.olap.action.CreateMeasureAction$1 could be refactored into a named _static_ inner class
SIC The class ca.sqlpower.architect.swingui.olap.action.ImportSchemaAction$1 could be refactored into a named _static_ inner class
SIC The class ca.sqlpower.architect.swingui.olap.action.OLAPEditAction$1 could be refactored into a named _static_ inner class
SIC Should ca.sqlpower.architect.swingui.olap.DimensionPane$HierarchySection be a _static_ inner class?
SIC Should ca.sqlpower.architect.swingui.olap.LevelEditPanel$PropertiesTableNameValidator be a _static_ inner class?
SIC Should ca.sqlpower.architect.swingui.PlayPen$DnDLabel be a _static_ inner class?
SIC Should ca.sqlpower.architect.swingui.ProfileManagerView$TableProfileDateComparator be a _static_ inner class?
SIC Should ca.sqlpower.architect.swingui.ProfileManagerView$TableProfileNameComparator be a _static_ inner class?
SIC The class ca.sqlpower.architect.swingui.ProfilePanel$2 could be refactored into a named _static_ inner class
SIC The class ca.sqlpower.architect.swingui.ProfileResultsViewer$2 could be refactored into a named _static_ inner class
SIC Should ca.sqlpower.architect.swingui.ProfileResultsViewer$ProfilePanelMouseListener be a _static_ inner class?
SIC The class ca.sqlpower.architect.swingui.ProfileRowComponent$3 could be refactored into a named _static_ inner class
SIC The class ca.sqlpower.architect.swingui.ProfileRowComponent$4 could be refactored into a named _static_ inner class
SIC The class ca.sqlpower.architect.swingui.SearchReplace$2 could be refactored into a named _static_ inner class
SIC The class ca.sqlpower.architect.swingui.SearchReplace$3 could be refactored into a named _static_ inner class
SIC The class ca.sqlpower.architect.swingui.SearchReplace$4 could be refactored into a named _static_ inner class
SIC The class ca.sqlpower.architect.swingui.SearchReplace$5 could be refactored into a named _static_ inner class
SIC Should ca.sqlpower.architect.swingui.SearchReplace$SearchResultsTableModel be a _static_ inner class?
SIC Should ca.sqlpower.architect.swingui.SQLScriptDialog$CopyAction be a _static_ inner class?
SIC The class ca.sqlpower.architect.swingui.table.SQLObjectTableCellRenderer$1 could be refactored into a named _static_ inner class
SIC The class ca.sqlpower.architect.swingui.WelcomeScreen$1 could be refactored into a named _static_ inner class
SIC Should ca.sqlpower.architect.undo.UndoManager$SQLObjectUndoableEventAdapter$CompEdit be a _static_ inner class?
SS Unread field: ca.sqlpower.architect.swingui.olap.LevelEditPanel$PropertiesEditPanel.defaultPropName; should this field be static?
UPM Private method ca.sqlpower.architect.swingui.IndexColumnTable.isRowEnabled(int) is never called
UPM Private method ca.sqlpower.architect.swingui.IndexColumnTable.isRowInCurrentSelection(int) is never called
UPM Private method ca.sqlpower.architect.swingui.table.ProfileTableModel.shouldNotBeFilteredOut(ColumnProfileResult) is never called
UrF Unread field: ca.sqlpower.architect.olap.OLAPSession.schemaWatcher
UrF Unread field: ca.sqlpower.architect.swingui.action.ExportDDLAction$ConflictFinderProcess.ddlg
UrF Unread field: ca.sqlpower.architect.swingui.action.ExportDDLAction$ConflictFinderProcess.statements
UrF Unread field: ca.sqlpower.architect.swingui.IndexColumnTable.parent
UrF Unread field: ca.sqlpower.architect.swingui.olap.LevelEditPanel$PropertiesEditPanel$PropertiesTable$1.val$this$1
WMI Method ca.sqlpower.architect.etl.kettle.KettleJob.doExport(List, SQLDatabase) makes inefficient use of keySet iterator instead of entrySet iterator
WMI Method ca.sqlpower.architect.etl.kettle.KettleJob.doExport(List, SQLDatabase) makes inefficient use of keySet iterator instead of entrySet iterator
WMI Method ca.sqlpower.architect.etl.kettle.KettleJob.outputToXML(List, JobMeta) makes inefficient use of keySet iterator instead of entrySet iterator
WMI Method ca.sqlpower.architect.swingui.SwingUIProject.saveSQLObject(PrintWriter, SQLObject) makes inefficient use of keySet iterator instead of entrySet iterator

Security Warnings

Code&nbsp; Warning
SQL Method ca.sqlpower.architect.ddl.ConflictResolver.dropConflict(ConflictResolver$Conflict, Statement, Set) passes a nonconstant String to an execute method on an SQL statement
SQL Method ca.sqlpower.architect.etl.datamover.DataMover.copyTable(SQLTable, SQLTable) passes a nonconstant String to an execute method on an SQL statement
SQL Method ca.sqlpower.architect.etl.datamover.DataMover.copyTable(SQLTable, SQLTable) passes a nonconstant String to an execute method on an SQL statement
SQL Method ca.sqlpower.architect.etl.datamover.DataMover.copyTables(SQLObject, Collection) passes a nonconstant String to an execute method on an SQL statement
SQL Method ca.sqlpower.architect.etl.datamover.DataMover.updateSequences(Connection, Connection) passes a nonconstant String to an execute method on an SQL statement
SQL A prepared statement is generated from a nonconstant String at ca.sqlpower.architect.etl.datamover.DataMover.copyTable(SQLTable, SQLTable)
SQL Method ca.sqlpower.architect.profile.RemoteDatabaseProfileCreator.execProfileFunctions(ColumnProfileResult, ProfileFunctionDescriptor, SQLColumn, Connection, Monitorable) passes a nonconstant String to an execute method on an SQL statement
SQL Method ca.sqlpower.architect.profile.RemoteDatabaseProfileCreator.execProfileFunctions(ColumnProfileResult, ProfileFunctionDescriptor, SQLColumn, Connection, Monitorable) passes a nonconstant String to an execute method on an SQL statement
SQL Method ca.sqlpower.architect.profile.RemoteDatabaseProfileCreator.doTableProfile(TableProfileResult) passes a nonconstant String to an execute method on an SQL statement
SQL Method ca.sqlpower.architect.swingui.DataMoverPanel.moveSingleTable(SQLTable) passes a nonconstant String to an execute method on an SQL statement
SQL Method ca.sqlpower.architect.swingui.SQLScriptDialog$ExecuteSQLScriptWorker.doStuff() passes a nonconstant String to an execute method on an SQL statement

Dodgy Warnings

Code&nbsp; Warning
BC Unchecked/unconfirmed cast from ca.sqlpower.architect.olap.OLAPObject to ca.sqlpower.architect.olap.MondrianModel$Cube in ca.sqlpower.architect.olap.OLAPUtil.isNameUnique(OLAPObject, Class, String)
BC Unchecked/unconfirmed cast from ca.sqlpower.architect.olap.OLAPObject to ca.sqlpower.architect.olap.MondrianModel$Dimension in ca.sqlpower.architect.olap.OLAPUtil.isNameUnique(OLAPObject, Class, String)
BC Unchecked/unconfirmed cast from ca.sqlpower.architect.olap.OLAPObject to ca.sqlpower.architect.olap.MondrianModel$Hierarchy in ca.sqlpower.architect.olap.OLAPUtil.isNameUnique(OLAPObject, Class, String)
BC Unchecked/unconfirmed cast from ca.sqlpower.architect.olap.OLAPObject to ca.sqlpower.architect.olap.MondrianModel$VirtualCube in ca.sqlpower.architect.olap.OLAPUtil.isNameUnique(OLAPObject, Class, String)
BC instanceof will always return true in ca.sqlpower.architect.swingui.action.AutoLayoutAction.actionPerformed(ActionEvent), since all ca.sqlpower.architect.swingui.ContainerPane are instances of ca.sqlpower.architect.layout.LayoutNode
BC Unchecked/unconfirmed cast from ca.sqlpower.architect.swingui.PlayPenComponent to ca.sqlpower.architect.swingui.Relationship in ca.sqlpower.architect.swingui.BasicRelationshipUI.installUI(PlayPenComponent)
BC Unchecked/unconfirmed cast from ca.sqlpower.architect.swingui.PlayPenComponent to ca.sqlpower.architect.swingui.Relationship in ca.sqlpower.architect.swingui.BasicRelationshipUI.paint(Graphics, PlayPenComponent)
BC Unchecked/unconfirmed cast from java.awt.Graphics to java.awt.Graphics2D in ca.sqlpower.architect.swingui.BasicRelationshipUI.paint(Graphics, PlayPenComponent)
BC Unchecked/unconfirmed cast from ca.sqlpower.architect.swingui.PlayPenComponent to ca.sqlpower.architect.swingui.Relationship in ca.sqlpower.architect.swingui.BasicRelationshipUI.uninstallUI(PlayPenComponent)
BC Unchecked/unconfirmed cast from ca.sqlpower.architect.swingui.PlayPenComponent to ca.sqlpower.architect.swingui.TablePane in ca.sqlpower.architect.swingui.BasicTablePaneUI.getPreferredSize(PlayPenComponent)
BC Unchecked/unconfirmed cast from ca.sqlpower.architect.swingui.PlayPenComponent to ca.sqlpower.architect.swingui.TablePane in ca.sqlpower.architect.swingui.BasicTablePaneUI.installUI(PlayPenComponent)
BC Unchecked/unconfirmed cast from ca.sqlpower.architect.swingui.PlayPenComponent to ca.sqlpower.architect.swingui.TablePane in ca.sqlpower.architect.swingui.BasicTablePaneUI.paint(Graphics, PlayPenComponent)
BC Unchecked/unconfirmed cast from java.awt.Graphics to java.awt.Graphics2D in ca.sqlpower.architect.swingui.BasicTablePaneUI.paint(Graphics, PlayPenComponent)
BC Unchecked/unconfirmed cast from ca.sqlpower.architect.swingui.PlayPenComponent to ca.sqlpower.architect.swingui.TablePane in ca.sqlpower.architect.swingui.BasicTablePaneUI.uninstallUI(PlayPenComponent)
BC Unchecked/unconfirmed cast from javax.swing.tree.TreeNode to ca.sqlpower.architect.swingui.DBTreeNode in ca.sqlpower.architect.swingui.DBTreeNode.getIndex(TreeNode)
BC Unchecked/unconfirmed cast from javax.swing.tree.MutableTreeNode to ca.sqlpower.architect.swingui.DBTreeNode in ca.sqlpower.architect.swingui.DBTreeNode.remove(MutableTreeNode)
BC Unchecked/unconfirmed cast from ca.sqlpower.architect.swingui.PlayPenComponent to ca.sqlpower.architect.swingui.olap.VirtualCubePane in ca.sqlpower.architect.swingui.olap.BasicVirtualCubePaneUI.installUI(PlayPenComponent)
BC Unchecked/unconfirmed cast from ca.sqlpower.architect.swingui.PlayPenComponent to ca.sqlpower.architect.swingui.olap.VirtualCubePane in ca.sqlpower.architect.swingui.olap.BasicVirtualCubePaneUI.uninstallUI(PlayPenComponent)
BC Unchecked/unconfirmed cast from ca.sqlpower.architect.swingui.PlayPenComponent to ca.sqlpower.architect.swingui.olap.OLAPPane in ca.sqlpower.architect.swingui.olap.OLAPPaneUI.installUI(PlayPenComponent)
BC Unchecked/unconfirmed cast from ca.sqlpower.architect.swingui.PlayPenComponent to ca.sqlpower.architect.swingui.olap.UsageComponent in ca.sqlpower.architect.swingui.olap.UsageComponentUI.installUI(PlayPenComponent)
BC Unchecked/unconfirmed cast from ca.sqlpower.architect.swingui.PlayPenComponent to ca.sqlpower.architect.swingui.olap.UsageComponent in ca.sqlpower.architect.swingui.olap.UsageComponentUI.uninstallUI(PlayPenComponent)
BC Unchecked/unconfirmed cast from java.awt.Graphics to java.awt.Graphics2D in ca.sqlpower.architect.swingui.PlayPen.paintComponent(Graphics)
BC instanceof will always return true in ca.sqlpower.architect.swingui.PlayPen.getSelectedItems(), since all ca.sqlpower.architect.swingui.PlayPenComponent are instances of ca.sqlpower.architect.swingui.Selectable
BC instanceof will always return true in ca.sqlpower.architect.swingui.PlayPen.selectAll(), since all ca.sqlpower.architect.swingui.PlayPenComponent are instances of ca.sqlpower.architect.swingui.Selectable
BC instanceof will always return true in ca.sqlpower.architect.swingui.PlayPen.selectNone(), since all ca.sqlpower.architect.swingui.PlayPenComponent are instances of ca.sqlpower.architect.swingui.Selectable
BC Unchecked/unconfirmed cast from java.awt.Graphics to java.awt.Graphics2D in ca.sqlpower.architect.swingui.PrintPanel.print(Graphics, PageFormat, int)
BC Unchecked/unconfirmed cast from java.awt.Graphics to java.awt.Graphics2D in ca.sqlpower.architect.swingui.PrintPanel$PrintPreviewPanel.paintComponent(Graphics)
BC Unchecked/unconfirmed cast from java.awt.Container to javax.swing.JComponent in ca.sqlpower.architect.swingui.ProfileRowComponent$RowComponentLayout.layoutContainer(Container)
BC Unchecked/unconfirmed cast from java.awt.Container to javax.swing.JComponent in ca.sqlpower.architect.swingui.ProfileRowComponent$RowComponentLayout.preferredLayoutSize(Container)
DB Method ca.sqlpower.architect.swingui.table.ProfileTableModel.getColumnClass(int) uses the same code for two switch clauses
DB Method ca.sqlpower.architect.swingui.table.ProfileTableModel.getColumnClass(int) uses the same code for two switch clauses
DB Method ca.sqlpower.architect.swingui.table.ProfileTableModel.getColumnClass(int) uses the same code for two switch clauses
DLS Dead store of null to sourceColumnList in ca.sqlpower.architect.diff.CompareSQL.generateColumnDiffs(SQLTable, SQLTable)
DLS Dead store of null to targetColumnList in ca.sqlpower.architect.diff.CompareSQL.generateColumnDiffs(SQLTable, SQLTable)
DLS Dead store of null to inputFile in ca.sqlpower.architect.etl.PLUtils.plDotIniHasChanged(String)
DLS Dead store to areaFudgeFactor in ca.sqlpower.architect.layout.AbstractLayout.getNewArea(List)
DLS Dead store to sample in ca.sqlpower.architect.profile.LocalReservoirProfileCreator.doProfileImpl(TableProfileResult)
DLS Dead store to i in ca.sqlpower.architect.profile.TableProfileResult.formatCreateTime()
DLS Dead store to ep in ca.sqlpower.architect.swingui.BasicRelationshipUI.checkClosestPointOnTable(Dimension, Point, Point, int, int, int, int, int, boolean)
DLS Dead store of null to name in ca.sqlpower.architect.swingui.IndexEditPanel.getIndexName()
DLS Dead store to t in new ca.sqlpower.architect.swingui.olap.HierarchyEditPanel(MondrianModel$Hierarchy)
DLS Dead store of null to pm in ca.sqlpower.architect.swingui.SwingUIProject.save(ProgressMonitor)
DMI Hard coded reference to an absolute pathname in new ca.sqlpower.architect.antbuild.AddLicenseToDMGTask()
DMI Hard coded reference to an absolute pathname in new ca.sqlpower.architect.antbuild.AddLicenseToDMGTask()
FE Test for floating point equality in ca.sqlpower.architect.swingui.PlayPen.setZoom(double)
ICAST int division result cast to double or float in ca.sqlpower.architect.layout.FruchtermanReingoldForceLayout.nextFrame()
NP Load of known null value in ca.sqlpower.architect.profile.RemoteDatabaseProfileCreator.doColumnProfile(ColumnProfileResult, MonitorableImpl)
NP Load of known null value in ca.sqlpower.architect.profile.RemoteDatabaseProfileCreator.execProfileFunctions(ColumnProfileResult, ProfileFunctionDescriptor, SQLColumn, Connection, Monitorable)
NP Possible null pointer dereference of SQLColumn.SQLColumn.primaryKeySeq on path that might be infeasible in ca.sqlpower.architect.SQLColumn$CompareByPKSeq.compare(Object, Object)
NP Load of known null value in ca.sqlpower.architect.SQLObject.fireDbObjectChanged(String, Object, Object)
RCN Redundant nullcheck of dist which is known to be null in ca.sqlpower.architect.layout.FruchtermanReingoldForceLayout.displacementBetween(LayoutNode, LayoutNode)
RCN Redundant nullcheck of ?, which is known to be non-null in ca.sqlpower.architect.olap.OLAPUtil.nameFor(OLAPObject)
RCN Redundant nullcheck of gddl, which is known to be non-null in ca.sqlpower.architect.profile.output.ProfileHTMLFormat.format(OutputStream, List)
RCN Redundant nullcheck of result, which is known to be non-null in ca.sqlpower.architect.profile.output.ProfileHTMLFormat.format(OutputStream, List)
RCN Redundant nullcheck of result, which is known to be non-null in ca.sqlpower.architect.profile.output.ProfileHTMLFormat.format(OutputStream, List)
RCN Redundant nullcheck of result, which is known to be non-null in ca.sqlpower.architect.profile.output.ProfileHTMLFormat.format(OutputStream, List)
RCN Redundant nullcheck of result, which is known to be non-null in ca.sqlpower.architect.profile.output.ProfileHTMLFormat.format(OutputStream, List)
RCN Redundant nullcheck of fkTable, which is known to be non-null in ca.sqlpower.architect.SQLRelationship.attachRelationship(SQLTable, SQLTable, boolean, DatabaseMetaData)
RCN Redundant nullcheck of rs which is known to be null in ca.sqlpower.architect.SQLSchema.populate()
REC Exception is caught when Exception is not thrown in ca.sqlpower.architect.CoreProject$DDLGeneratorFactory.createObject(Attributes)
REC Exception is caught when Exception is not thrown in ca.sqlpower.architect.ddl.DDLUtils.getDDLTypes(DataSourceCollection)
REC Exception is caught when Exception is not thrown in new ca.sqlpower.architect.ddl.ObjectPropertyModificationDDLComponent(DDLWarning)
REC Exception is caught when Exception is not thrown in ca.sqlpower.architect.ddl.ObjectPropertyModificationDDLComponent$1.run()
REC Exception is caught when Exception is not thrown in ca.sqlpower.architect.olap.MondrianXMLReader$MondrianSAXHandler.startElement(String, String, String, Attributes)
REC Exception is caught when Exception is not thrown in ca.sqlpower.architect.profile.RemoteDatabaseProfileCreator.doProfileImpl(TableProfileResult)
REC Exception is caught when Exception is not thrown in ca.sqlpower.architect.swingui.action.AutoLayoutAction.actionPerformed(ActionEvent)
REC Exception is caught when Exception is not thrown in ca.sqlpower.architect.swingui.action.DataMoverAction.actionPerformed(ActionEvent)
REC Exception is caught when Exception is not thrown in ca.sqlpower.architect.swingui.action.ExportDDLAction$1.call()
REC Exception is caught when Exception is not thrown in ca.sqlpower.architect.swingui.action.ProfileAction.profileItemsFromDBTree()
REC Exception is caught when Exception is not thrown in ca.sqlpower.architect.swingui.action.SaveProfileAction$1.run()
REC Exception is caught when Exception is not thrown in ca.sqlpower.architect.swingui.ArchitectSwingSessionImpl$1SaverTask.run()
REC Exception is caught when Exception is not thrown in ca.sqlpower.architect.swingui.CompareDMFormatter.format(List, List, SQLObject, SQLObject)
REC Exception is caught when Exception is not thrown in ca.sqlpower.architect.swingui.DDLExportPanel.setUpCatalogAndSchemaFields()
REC Exception is caught when Exception is not thrown in ca.sqlpower.architect.swingui.DDLGeneratorListCellRenderer.getListCellRendererComponent(JList, Object, int, boolean, boolean)
REC Exception is caught when Exception is not thrown in ca.sqlpower.architect.swingui.olap.action.ImportSchemaAction.actionPerformed(ActionEvent)
REC Exception is caught when Exception is not thrown in ca.sqlpower.architect.swingui.olap.OLAPPane.drop(DropTargetDropEvent)
REC Exception is caught when Exception is not thrown in ca.sqlpower.architect.swingui.olap.OLAPPane.handleMouseEvent(MouseEvent)
REC Exception is caught when Exception is not thrown in ca.sqlpower.architect.swingui.SQLScriptDialog$ExecuteSQLScriptWorker.doStuff()
REC Exception is caught when Exception is not thrown in ca.sqlpower.architect.swingui.TablePane.drop(DropTargetDropEvent)
REC Exception is caught when Exception is not thrown in ca.sqlpower.architect.undo.PropertyChangeEdit.redo()
REC Exception is caught when Exception is not thrown in ca.sqlpower.architect.undo.PropertyChangeEdit.undo()
RI Class ca.sqlpower.architect.ArchitectException implements same interface as superclass
RI Class ca.sqlpower.architect.DuplicateColumnException implements same interface as superclass
RI Class ca.sqlpower.architect.SQLColumn implements same interface as superclass
RI Class ca.sqlpower.architect.SQLDatabase implements same interface as superclass
RI Class ca.sqlpower.architect.SQLObjectEvent implements same interface as superclass
RI Class ca.sqlpower.architect.SQLRelationship implements same interface as superclass
RI Class ca.sqlpower.architect.swingui.action.CreateRelationshipAction implements same interface as superclass
RI Class ca.sqlpower.architect.swingui.action.ZoomResetAction implements same interface as superclass
RI Class ca.sqlpower.architect.swingui.BasicRelationshipUI implements same interface as superclass
RI Class ca.sqlpower.architect.swingui.BasicTablePaneUI implements same interface as superclass
RI Class ca.sqlpower.architect.swingui.olap.action.CreateUsageAction implements same interface as superclass
RI Class ca.sqlpower.architect.swingui.PlayPen implements same interface as superclass
RI Class ca.sqlpower.architect.swingui.TablePaneUI implements same interface as superclass
ST Write to static field ca.sqlpower.architect.swingui.action.SQLRunnerAction.configManager from instance method new ca.sqlpower.architect.swingui.action.SQLRunnerAction(ArchitectSwingSession)
UCF Useless control flow in ca.sqlpower.architect.swingui.olap.action.CreateDimensionAction.actionPerformed(ActionEvent)
UCF Useless control flow in ca.sqlpower.architect.swingui.olap.CubeEditPanel.applyChanges()
UwF AddLicenseToDMGTask.dmgFile not initialized in constructor
UwF AddLicenseToDMGTask.resourceTemplateFile not initialized in constructor
UwF ConflictResolver.conflicts not initialized in constructor
UwF ArchitectGridLayout.nodes not initialized in constructor
UwF BasicTreeAutoLayout.newLocations not initialized in constructor
UwF BasicTreeAutoLayout.origLocations not initialized in constructor
UwF FruchtermanReingoldForceLayout.edges not initialized in constructor
UwF FruchtermanReingoldForceLayout.nodes not initialized in constructor
UwF LineStraightenerLayout.edges not initialized in constructor
UwF MondrianXMLReader$MondrianSAXHandler.locator not initialized in constructor
UwF MondrianXMLReader$MondrianSAXHandler.text not initialized in constructor
UwF OLAPUndoManager.rememberedPosition not initialized in constructor
UwF AutoLayoutAction.layout not initialized in constructor
UwF ExportDDLAction$ConflictResolverProcess.cr not initialized in constructor
UwF BasicTablePaneUI.tablePane not initialized in constructor
UwF CompareDMFrame$CloseAction.localDialog not initialized in constructor
UwF CompareDMPanel$SourceOrTargetStuff$CatalogPopulator.db not initialized in constructor
UwF CompareDMSettings.outputFormat not initialized in constructor
UwF CompareDMSettings$SourceOrTargetSettings.datastoreType not initialized in constructor
UwF LayoutAnimator.timer not initialized in constructor
UwF UsageComponentUI.c not initialized in constructor
UwF PreferencesEditor.tp not initialized in constructor
UwF ProfileRowComponent$RowComponentLayout.connectionName not initialized in constructor
UwF ProfileRowComponent$RowComponentLayout.icon not initialized in constructor
UwF ProfileRowComponent$RowComponentLayout.progressBar not initialized in constructor
UwF ProfileRowComponent$RowComponentLayout.reload not initialized in constructor
UwF ProfileRowComponent$RowComponentLayout.tableInfo not initialized in constructor
UwF ProfileRowComponent$RowComponentLayout.tableName not initialized in constructor
UwF RelationshipEditPanel.relationship not initialized in constructor
UwF SearchReplace.allSearch not initialized in constructor
UwF SearchReplace.caseInsensitive not initialized in constructor
UwF SearchReplace.columnSearch not initialized in constructor
UwF SearchReplace.exactMatch not initialized in constructor
UwF SearchReplace.regexMatch not initialized in constructor
UwF SearchReplace.relationshipSearch not initialized in constructor
UwF SearchReplace.searchExpression not initialized in constructor
UwF SearchReplace.substringMatch not initialized in constructor
UwF SearchReplace.tableSearch not initialized in constructor
UwF SwingUIProject.olapPaneSaveIdMap not initialized in constructor

Details

BC_EQUALS_METHOD_SHOULD_WORK_FOR_ALL_OBJECTS: Equals method should not assume anything about the type of its argument

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.

BC_VACUOUS_INSTANCEOF: instanceof will always return true

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.

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.

DM_FP_NUMBER_CTOR: Method invokes inefficient floating-point Number constructor; use static valueOf instead

Using new Double(double) is guaranteed to always result in a new object whereas Double.valueOf(double) 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.

Unless the class must be compatible with JVMs predating Java 1.5, use either autoboxing or the valueOf() method when creating instances of Double and Float.

DM_NUMBER_CTOR: Method invokes inefficient Number constructor; use static valueOf instead

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.

BX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COERCION: Primitive value is boxed then unboxed to perform primative coercion

A primitive boxed value constructed and then immediately converted into a different primitive type (e.g., new Double(d).intValue()). Just perform direct primitive coercion (e.g., (int) d).

DB_DUPLICATE_SWITCH_CLAUSES: Method uses the same code for two switch clauses

This method uses the same code to implement two clauses of a switch statement. This could be a case of duplicate code, but it might also indicate a coding mistake.

DLS_DEAD_LOCAL_STORE_OF_NULL: Dead store of null to local variable

The code stores null into a local variable, and stored value is not read. This store may have been introduced in assist the garbage collector, but as of Java SE 6.0, this is no longer needed or useful.

DLS_DEAD_LOCAL_STORE: Dead store to local variable

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_CONVERT_CASE: Consider using Locale parameterized version of invoked method

A String is being converted to upper or lowercase, using the platform's default encoding. This may result in improper conversions when used with international characters. Use the

String.toUpperCase( Locale l )
String.toLowerCase( Locale l )

versions 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");

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."

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.

ICAST_IDIV_CAST_TO_DOUBLE: int division result cast to double or float

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;

IS2_INCONSISTENT_SYNC: Inconsistent synchronization

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.

ITA_INEFFICIENT_TO_ARRAY: Method uses toArray() with zero-length array argument

This method uses the toArray() method of a collection derived class, and passes in a zero-length prototype array argument. It is more efficient to use myCollection.toArray(new Foo[myCollection.size()]) If the array passed in is big enough to store all of the elements of the collection, then it is populated and returned directly. This avoids the need to create a second array (by reflection) to return as the result.

LI_LAZY_INIT_UPDATE_STATIC: Incorrect lazy initialization and update of static field

This method contains an unsynchronized lazy initialization of a static field. After the field is set, the object stored into that location is further accessed. The setting of the field is visible to other threads as soon as it is set. If the futher accesses in the method that set the field serve to initialize the object, then you have a very serious multithreading bug, unless something else prevents any other thread from accessing the stored object until it is fully initialized.

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.

MF_METHOD_MASKS_FIELD: Method defines a variable that obscures a field

This method defines a local variable with the same name as a field in this class or a superclass. This may cause the method to read an uninitialized value from the field, leave the field uninitialized, or both.

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_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.

NM_SAME_SIMPLE_NAME_AS_SUPERCLASS: Class names shouldn't shadow simple name of superclass

This class has a simple name that is identical to that of its superclass, except that its superclass is in a different package (e.g., alpha.Foo extends beta.Foo). This can be exceptionally confusing, create lots of situations in which you have to look at import statements to resolve references and creates many opportunities to accidently define methods that do not override methods in their superclasses.

NM_CLASS_NAMING_CONVENTION: Class names should start with an upper case letter

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).

NM_CONFUSING: Confusing method names

The referenced methods have names that differ only by capitalization.

NM_METHOD_NAMING_CONVENTION: Method names should start with a lower case letter

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

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

There is a branch of statement that, if executed, guarantees that a null value will be dereferenced, which would generate a NullPointerException when the code is executed. Of course, the problem might be that the branch or statement is infeasible and that the null pointer exception can't ever be executed; deciding that is beyond the ability of FindBugs.

NP_NULL_ON_SOME_PATH_MIGHT_BE_INFEASIBLE: Possible null pointer dereference on path that might be infeasible

There is a branch of statement that, if executed, guarantees that a null value will be dereferenced, which would generate a NullPointerException when the code is executed. Of course, the problem might be that the branch or statement is infeasible and that the null pointer exception can't ever be executed; deciding that is beyond the ability of FindBugs. Due to the fact that this value had been previously tested for nullness, this is a definite possiblity.

ODR_OPEN_DATABASE_RESOURCE: Method may fail to close database resource

The method creates a database resource (such as a database connection or row set), does not assign it to any fields, pass it to other methods, or return it, and does not appear to close the object on all paths out of the method.  Failure to close database resources on all paths out of a method may result in poor performance, and could cause the application to have problems communicating with the database.

ODR_OPEN_DATABASE_RESOURCE_EXCEPTION_PATH: Method may fail to close database resource on exception

The method creates a database resource (such as a database connection or row set), does not assign it to any fields, pass it to other methods, or return it, and does not appear to close the object on all exception paths out of the method.  Failure to close database resources on all paths out of a method may result in poor performance, and could cause the application to have problems communicating with the database.

OS_OPEN_STREAM_EXCEPTION_PATH: Method may fail to close stream on exception

The method creates an IO stream object, does not assign it to any fields, pass it to other methods, or return it, and does not appear to close it on all possible exception 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_WOULD_HAVE_BEEN_A_NPE: Nullcheck of value previously dereferenced

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.

RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE: Redundant nullcheck of value known to be non-null

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

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.

REC_CATCH_EXCEPTION: Exception is caught when Exception is not thrown

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.

RI_REDUNDANT_INTERFACES: Class implements same interface as superclass

This class declares that it implements an interface that is also implemented by a superclass. This is redundant, once a superclass implements an interface, all subclasses by default also implement this interface. It may point out that the inheritance hierarchy has changed since this class was created, and consideration should be taken into account for the ownership of the interface's implementation.

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.

RV_01_TO_INT: Random value from 0 to 1 is coerced to the integer 0

A random value from 0 to 1 is being coerced to the integer value 0. You probably want to multiple the random value by something else before coercing it to an integer, or use the Random.nextInt(n) method.

SE_COMPARATOR_SHOULD_BE_SERIALIZABLE: Comparator doesn't implement 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.

SE_BAD_FIELD_STORE: Non-serializable value stored into instance field of a serializable class

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

SE_BAD_FIELD: Non-transient non-serializable instance field in serializable class

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.

SE_INNER_CLASS: Serializable inner class

This Serializable class is an inner class. Any attempt to serialize it will also serialize the associated outer instance. The outer instance is serializable, so this won't fail, but it might serialize a lot more data than intended. If possible, making the inner class a static inner class (also known as a nested class) should solve the problem.

SE_TRANSIENT_FIELD_NOT_RESTORED: Transient field that isn't set by deserialization.

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.

SIC_INNER_SHOULD_BE_STATIC_ANON: Could be refactored into a named 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 into a static inner class. Since anonymous inner classes cannot be marked as static, doing this will requiring refactoring the inner class so that it is a named inner class.

SIC_INNER_SHOULD_BE_STATIC_NEEDS_THIS: Could be refactored into a static inner class

This class is an inner class, but does not use its embedded reference to the object which created it except during construction of the inner object.  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 into a static inner class. Since the reference to the outer object is required during construction of the inner instance, the inner class will need to be refactored so as to pass a reference to the outer instance to the constructor for the inner class.

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.

SIO_SUPERFLUOUS_INSTANCEOF: Unnecessary type check done using instanceof operator

Type check performed using the instanceof operator where it can be statically determined whether the object is of the type requested.

SE_NO_SERIALVERSIONID: Class is Serializable, but doesn't define serialVersionUID

This class implements the Serializable interface, but does not define a serialVersionUID field.  A change as simple as adding a reference to a .class object will add synthetic fields to the class, which will unfortunately change the implicit serialVersionUID (e.g., adding a reference to String.class will generate a static field class$java$lang$String). Also, different source code to bytecode compilers may use different naming conventions for synthetic variables generated for references to class objects or inner classes. To ensure interoperability of Serializable across versions, consider adding an explicit serialVersionUID.

SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING: A prepared statement is generated from a nonconstant String

The code creates an SQL prepared statement from a nonconstant String. If unchecked, tainted data from a user is used in building this String, SQL injection could be used to make the prepared statement do something unexpected and undesirable.

SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE: Nonconstant string passed to execute method on an SQL statement

The method invokes the execute method on an SQL statement with a String that seems to be dynamically generated. Consider using a prepared statement instead. It is more efficient and less vulnerable to SQL injection attacks.

SS_SHOULD_BE_STATIC: Unread field: should this field be static?

This class contains an instance final field that is initialized to a compile-time static value. Consider making the field 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.

UCF_USELESS_CONTROL_FLOW: 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
	}

UI_INHERITANCE_UNSAFE_GETRESOURCE: Usage of GetResource may be unsafe if class is extended

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

UPM_UNCALLED_PRIVATE_METHOD: Private method is never called

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.

URF_UNREAD_FIELD: Unread field

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

UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR: Field not initialized in constructor

This field is never initialized within any constructor, and is therefore could be null after the object is constructed. This could be a either an error or a questionable design, since it means a null pointer exception will be generated if that field is dereferenced before being initialized.

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

WMI_WRONG_MAP_ITERATOR: Inefficient use of keySet iterator instead of entrySet 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.