SpotBugs Bug Detector Report

The following document contains the results of SpotBugs

SpotBugs Version is 4.7.0

Threshold is medium

Effort is default

Summary

Classes Bugs Errors Missing Classes
12 35 0 0

Files

Class Bugs
org.woehlke.computer.kurzweil.cyclic.cellular.automaton.CyclicCellularAutomatonApplication 1
org.woehlke.computer.kurzweil.cyclic.cellular.automaton.config.Config 1
org.woehlke.computer.kurzweil.cyclic.cellular.automaton.config.ObjectRegistry 10
org.woehlke.computer.kurzweil.cyclic.cellular.automaton.control.CyclicCellularAutomatonController 6
org.woehlke.computer.kurzweil.cyclic.cellular.automaton.model.CyclicCellularAutomatonLattice 4
org.woehlke.computer.kurzweil.cyclic.cellular.automaton.view.CyclicCellularAutomatonCanvas 2
org.woehlke.computer.kurzweil.cyclic.cellular.automaton.view.CyclicCellularAutomatonFrame 8
org.woehlke.computer.kurzweil.cyclic.cellular.automaton.view.PanelButtons 3

org.woehlke.computer.kurzweil.cyclic.cellular.automaton.CyclicCellularAutomatonApplication

Bug Category Details Line Priority
Dead store to frame in org.woehlke.computer.kurzweil.cyclic.cellular.automaton.CyclicCellularAutomatonApplication.main(String[]) STYLE DLS_DEAD_LOCAL_STORE 26 Medium

org.woehlke.computer.kurzweil.cyclic.cellular.automaton.config.Config

Bug Category Details Line Priority
Dead store to $L5 in new org.woehlke.computer.kurzweil.cyclic.cellular.automaton.config.Config() STYLE DLS_DEAD_LOCAL_STORE 37 Medium

org.woehlke.computer.kurzweil.cyclic.cellular.automaton.config.ObjectRegistry

Bug Category Details Line Priority
org.woehlke.computer.kurzweil.cyclic.cellular.automaton.config.ObjectRegistry.getCanvas() may expose internal representation by returning ObjectRegistry.canvas MALICIOUS_CODE EI_EXPOSE_REP 45 Medium
org.woehlke.computer.kurzweil.cyclic.cellular.automaton.config.ObjectRegistry.getController() may expose internal representation by returning ObjectRegistry.controller MALICIOUS_CODE EI_EXPOSE_REP 37 Medium
org.woehlke.computer.kurzweil.cyclic.cellular.automaton.config.ObjectRegistry.getFrame() may expose internal representation by returning ObjectRegistry.frame MALICIOUS_CODE EI_EXPOSE_REP 61 Medium
org.woehlke.computer.kurzweil.cyclic.cellular.automaton.config.ObjectRegistry.getPanelButtons() may expose internal representation by returning ObjectRegistry.panelButtons MALICIOUS_CODE EI_EXPOSE_REP 77 Medium
org.woehlke.computer.kurzweil.cyclic.cellular.automaton.config.ObjectRegistry.getSubtitle() may expose internal representation by returning ObjectRegistry.subtitle MALICIOUS_CODE EI_EXPOSE_REP 85 Medium
org.woehlke.computer.kurzweil.cyclic.cellular.automaton.config.ObjectRegistry.setCanvas(CyclicCellularAutomatonCanvas) may expose internal representation by storing an externally mutable object into ObjectRegistry.canvas MALICIOUS_CODE EI_EXPOSE_REP2 49 Medium
org.woehlke.computer.kurzweil.cyclic.cellular.automaton.config.ObjectRegistry.setController(CyclicCellularAutomatonController) may expose internal representation by storing an externally mutable object into ObjectRegistry.controller MALICIOUS_CODE EI_EXPOSE_REP2 41 Medium
org.woehlke.computer.kurzweil.cyclic.cellular.automaton.config.ObjectRegistry.setFrame(CyclicCellularAutomatonFrame) may expose internal representation by storing an externally mutable object into ObjectRegistry.frame MALICIOUS_CODE EI_EXPOSE_REP2 65 Medium
org.woehlke.computer.kurzweil.cyclic.cellular.automaton.config.ObjectRegistry.setPanelButtons(PanelButtons) may expose internal representation by storing an externally mutable object into ObjectRegistry.panelButtons MALICIOUS_CODE EI_EXPOSE_REP2 81 Medium
org.woehlke.computer.kurzweil.cyclic.cellular.automaton.config.ObjectRegistry.setSubtitle(PanelSubtitle) may expose internal representation by storing an externally mutable object into ObjectRegistry.subtitle MALICIOUS_CODE EI_EXPOSE_REP2 89 Medium

org.woehlke.computer.kurzweil.cyclic.cellular.automaton.control.CyclicCellularAutomatonController

Bug Category Details Line Priority
Synchronization on Boolean in org.woehlke.computer.kurzweil.cyclic.cellular.automaton.control.CyclicCellularAutomatonController.exit() MT_CORRECTNESS DL_SYNCHRONIZATION_ON_BOOLEAN 52 High
Synchronization on Boolean in org.woehlke.computer.kurzweil.cyclic.cellular.automaton.control.CyclicCellularAutomatonController.run() MT_CORRECTNESS DL_SYNCHRONIZATION_ON_BOOLEAN 37 High
new org.woehlke.computer.kurzweil.cyclic.cellular.automaton.control.CyclicCellularAutomatonController(ObjectRegistry) may expose internal representation by storing an externally mutable object into CyclicCellularAutomatonController.ctx MALICIOUS_CODE EI_EXPOSE_REP2 30 Medium
Synchronization on CyclicCellularAutomatonController.goOn in futile attempt to guard it MT_CORRECTNESS ML_SYNC_ON_FIELD_TO_GUARD_CHANGING_THAT_FIELD 53 Medium
Class org.woehlke.computer.kurzweil.cyclic.cellular.automaton.control.CyclicCellularAutomatonController implements same interface as superclass STYLE RI_REDUNDANT_INTERFACES 29-68 Low
Class org.woehlke.computer.kurzweil.cyclic.cellular.automaton.control.CyclicCellularAutomatonController defines non-transient non-serializable instance field ctx BAD_PRACTICE SE_BAD_FIELD Not available High

org.woehlke.computer.kurzweil.cyclic.cellular.automaton.model.CyclicCellularAutomatonLattice

Bug Category Details Line Priority
new org.woehlke.computer.kurzweil.cyclic.cellular.automaton.model.CyclicCellularAutomatonLattice(ObjectRegistry) may expose internal representation by storing an externally mutable object into CyclicCellularAutomatonLattice.ctx MALICIOUS_CODE EI_EXPOSE_REP2 38 Medium
Overridable method startVonNeumann is called from constructor new org.woehlke.computer.kurzweil.cyclic.cellular.automaton.model.CyclicCellularAutomatonLattice(ObjectRegistry). MALICIOUS_CODE MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR 40 Low
Class org.woehlke.computer.kurzweil.cyclic.cellular.automaton.model.CyclicCellularAutomatonLattice defines non-transient non-serializable instance field ctx BAD_PRACTICE SE_BAD_FIELD Not available High
org.woehlke.computer.kurzweil.cyclic.cellular.automaton.model.CyclicCellularAutomatonLattice.lattice is a volatile reference to an array; the array elements are non-volatile MT_CORRECTNESS VO_VOLATILE_REFERENCE_TO_ARRAY Not available Low

org.woehlke.computer.kurzweil.cyclic.cellular.automaton.view.CyclicCellularAutomatonCanvas

Bug Category Details Line Priority
new org.woehlke.computer.kurzweil.cyclic.cellular.automaton.view.CyclicCellularAutomatonCanvas(ObjectRegistry) may expose internal representation by storing an externally mutable object into CyclicCellularAutomatonCanvas.ctx MALICIOUS_CODE EI_EXPOSE_REP2 27 Medium
Class org.woehlke.computer.kurzweil.cyclic.cellular.automaton.view.CyclicCellularAutomatonCanvas defines non-transient non-serializable instance field ctx BAD_PRACTICE SE_BAD_FIELD Not available Medium

org.woehlke.computer.kurzweil.cyclic.cellular.automaton.view.CyclicCellularAutomatonFrame

Bug Category Details Line Priority
new org.woehlke.computer.kurzweil.cyclic.cellular.automaton.view.CyclicCellularAutomatonFrame(ObjectRegistry) may expose internal representation by storing an externally mutable object into CyclicCellularAutomatonFrame.ctx MALICIOUS_CODE EI_EXPOSE_REP2 36 Medium
Overridable method addWindowListener is called from constructor new org.woehlke.computer.kurzweil.cyclic.cellular.automaton.view.CyclicCellularAutomatonFrame(ObjectRegistry). MALICIOUS_CODE MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR 42 Low
Overridable method getContentPane is called from constructor new org.woehlke.computer.kurzweil.cyclic.cellular.automaton.view.CyclicCellularAutomatonFrame(ObjectRegistry). MALICIOUS_CODE MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR 38 Low
Overridable method setFrame is called from constructor new org.woehlke.computer.kurzweil.cyclic.cellular.automaton.view.CyclicCellularAutomatonFrame(ObjectRegistry). MALICIOUS_CODE MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR 37 Low
Overridable method showMe is called from constructor new org.woehlke.computer.kurzweil.cyclic.cellular.automaton.view.CyclicCellularAutomatonFrame(ObjectRegistry). MALICIOUS_CODE MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR 44 Low
Class org.woehlke.computer.kurzweil.cyclic.cellular.automaton.view.CyclicCellularAutomatonFrame implements same interface as superclass STYLE RI_REDUNDANT_INTERFACES 35-78 Low
new org.woehlke.computer.kurzweil.cyclic.cellular.automaton.view.CyclicCellularAutomatonFrame(ObjectRegistry) invokes org.woehlke.computer.kurzweil.cyclic.cellular.automaton.control.CyclicCellularAutomatonController.start() MT_CORRECTNESS SC_START_IN_CTOR 43 Medium
Class org.woehlke.computer.kurzweil.cyclic.cellular.automaton.view.CyclicCellularAutomatonFrame defines non-transient non-serializable instance field ctx BAD_PRACTICE SE_BAD_FIELD Not available Medium

org.woehlke.computer.kurzweil.cyclic.cellular.automaton.view.PanelButtons

Bug Category Details Line Priority
new org.woehlke.computer.kurzweil.cyclic.cellular.automaton.view.PanelButtons(ObjectRegistry) may expose internal representation by storing an externally mutable object into PanelButtons.ctx MALICIOUS_CODE EI_EXPOSE_REP2 31 Medium
Overridable method addActionListener is called from constructor new org.woehlke.computer.kurzweil.cyclic.cellular.automaton.view.PanelButtons(ObjectRegistry). MALICIOUS_CODE MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR 43 Low
Class org.woehlke.computer.kurzweil.cyclic.cellular.automaton.view.PanelButtons defines non-transient non-serializable instance field ctx BAD_PRACTICE SE_BAD_FIELD Not available Low