The following document contains the results of FindBugs Report
FindBugs Version is 1.3.9
Threshold is medium
Effort is min
| Classes | Bugs | Errors | Missing Classes |
|---|---|---|---|
| 132 | 89 | 0 | 0 |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| Dead store to midletString in org.microemu.app.Main.main(String[]) | STYLE | DLS_DEAD_LOCAL_STORE | 1079 | Medium |
| org.microemu.app.Main$17 stored into non-transient field Main.componentListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 720 | Medium |
| org.microemu.app.Main$1 stored into non-transient field Main.emulatorContext | BAD_PRACTICE | SE_BAD_FIELD_STORE | 179 | Medium |
| org.microemu.app.Main$11 stored into non-transient field Main.menuAboutListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 503 | Medium |
| org.microemu.app.Main$4 stored into non-transient field Main.menuCloseMidletListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 256 | Medium |
| org.microemu.app.Main$12 stored into non-transient field Main.menuExitListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 509 | Medium |
| org.microemu.app.Main$10 stored into non-transient field Main.menuLogConsoleListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 484 | Medium |
| org.microemu.app.Main$8 stored into non-transient field Main.menuMIDletNetworkConnectionListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 460 | Medium |
| org.microemu.app.Main$2 stored into non-transient field Main.menuOpenMIDletFileListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 218 | Medium |
| org.microemu.app.Main$3 stored into non-transient field Main.menuOpenMIDletURLListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 242 | Medium |
| org.microemu.app.Main$9 stored into non-transient field Main.menuRecordStoreManagerListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 467 | Medium |
| org.microemu.app.Main$5 stored into non-transient field Main.menuSaveForWebListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 262 | Medium |
| org.microemu.app.Main$14 stored into non-transient field Main.menuScaledDisplayListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 572 | Medium |
| org.microemu.app.Main$13 stored into non-transient field Main.menuSelectDeviceListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 538 | Medium |
| org.microemu.app.Main$6 stored into non-transient field Main.menuStartCaptureListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 382 | Medium |
| org.microemu.app.Main$7 stored into non-transient field Main.menuStopCaptureListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 447 | Medium |
| org.microemu.app.Main$16 stored into non-transient field Main.responseInterfaceListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 706 | Medium |
| org.microemu.app.Main$15 stored into non-transient field Main.statusBarListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 698 | Medium |
| org.microemu.app.Main$18 stored into non-transient field Main.windowListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 753 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| org.microemu.app.Main$12.actionPerformed(ActionEvent) invokes System.exit(...), which shuts down the entire virtual machine | BAD_PRACTICE | DM_EXIT | 534 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| Vacuous ior operation on AnimatedGifEncoder.java:[line 369] in org.microemu.app.capture.AnimatedGifEncoder.writeGraphicCtrlExt() | STYLE | INT_VACUOUS_BIT_OPERATION | 369 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| new org.microemu.app.capture.NeuQuant(byte[], int, int) may expose internal representation by storing an externally mutable object into NeuQuant.thepicture | MALICIOUS_CODE | EI_EXPOSE_REP2 | 114 | Medium |
| Computation of average could overflow in org.microemu.app.capture.NeuQuant.inxbuild() | STYLE | IM_AVERAGE_COMPUTATION_COULD_OVERFLOW | 184 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| org.microemu.app.ui.swing.RecordStoreManagerDialog$1 stored into non-transient field RecordStoreManagerDialog.recordStoreTypeChangeListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 81 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| Should org.microemu.app.ui.swing.ResizeDeviceDisplayDialog$IntegerField be a _static_ inner class? | PERFORMANCE | SIC_INNER_SHOULD_BE_STATIC | 44-60 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| Potentially dangerous use of non-short-circuit logic in org.microemu.app.ui.swing.ResizeDeviceDisplayDialog$IntegerField$IntegerDocument.insertString(int, String, AttributeSet) | STYLE | NS_DANGEROUS_NON_SHORT_CIRCUIT | 80 | High |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| org.microemu.app.ui.swing.SwingDeviceComponent$1 stored into non-transient field SwingDeviceComponent.mouseListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 156 | Medium |
| org.microemu.app.ui.swing.SwingDeviceComponent$2 stored into non-transient field SwingDeviceComponent.mouseMotionListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 233 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| Incorrect lazy initialization and update of static field org.microemu.app.ui.swing.SwingDeviceComponent$MouseRepeatedTimerTask.task in org.microemu.app.ui.swing.SwingDeviceComponent$MouseRepeatedTimerTask.schedule(Component, J2SEButton, J2SEInputMethod) | MT_CORRECTNESS | LI_LAZY_INIT_UPDATE_STATIC | 118-121 | Medium |
| Unread field: org.microemu.app.ui.swing.SwingDeviceComponent$MouseRepeatedTimerTask.source | PERFORMANCE | URF_UNREAD_FIELD | 122 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| org.microemu.app.ui.swing.SwingDisplayComponent$1 stored into non-transient field SwingDisplayComponent.mouseListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 81 | Medium |
| org.microemu.app.ui.swing.SwingDisplayComponent$2 stored into non-transient field SwingDisplayComponent.mouseMotionListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 181 | Medium |
| org.microemu.app.ui.swing.SwingDisplayComponent$3 stored into non-transient field SwingDisplayComponent.mouseWheelListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 231 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| Write to static field org.microemu.log.StdOutAppender.enabled from instance method org.microemu.app.ui.swing.SwingLogConsoleDialog$3.actionPerformed(ActionEvent) | STYLE | ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD | 125 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| org.microemu.app.ui.swing.SwingSelectDevicePanel$1 stored into non-transient field SwingSelectDevicePanel.btAddListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 81 | Medium |
| org.microemu.app.ui.swing.SwingSelectDevicePanel$3 stored into non-transient field SwingSelectDevicePanel.btDefaultListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 220 | Medium |
| org.microemu.app.ui.swing.SwingSelectDevicePanel$2 stored into non-transient field SwingSelectDevicePanel.btRemoveListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 189 | Medium |
| org.microemu.app.ui.swing.SwingSelectDevicePanel$4 stored into non-transient field SwingSelectDevicePanel.listSelectionListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 237 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| Method org.microemu.app.ui.swing.SwingSelectDevicePanel$1.actionPerformed(ActionEvent) makes inefficient use of keySet iterator instead of entrySet iterator | PERFORMANCE | WMI_WRONG_MAP_ITERATOR | 171 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| org.microemu.app.ui.swing.SwingSelectDevicePanel$2.actionPerformed(ActionEvent) ignores exceptional return value of java.io.File.delete() | BAD_PRACTICE | RV_RETURN_VALUE_IGNORED_BAD_PRACTICE | 203 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| org.microemu.app.ui.swing.XYConstraints.clone() does not call super.clone() | BAD_PRACTICE | CN_IDIOM_NO_SUPER_CALL | 107 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| org.microemu.app.ui.swing.logconsole.LogTextCaret doesn't override javax.swing.text.DefaultCaret.equals(Object) | STYLE | EQ_DOESNT_OVERRIDE_EQUALS | 37-51 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| Impossible downcast of toArray() result to String[] in org.microemu.applet.CookieRecordStoreManager.listRecordStores() | CORRECTNESS | BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY | 153 | High |
| Dead store to format in new org.microemu.applet.CookieRecordStoreManager(Applet) | STYLE | DLS_DEAD_LOCAL_STORE | 77 | High |
| Load of known null value in org.microemu.applet.CookieRecordStoreManager.openRecordStore(String, boolean) | STYLE | NP_LOAD_OF_KNOWN_NULL_VALUE | 187 | Medium |
| Read of unwritten field cookies in org.microemu.applet.CookieRecordStoreManager.deleteRecordStore(String) | CORRECTNESS | NP_UNWRITTEN_FIELD | 90 | Medium |
| Read of unwritten field cookies in org.microemu.applet.CookieRecordStoreManager.deleteStores() | CORRECTNESS | NP_UNWRITTEN_FIELD | 104 | Medium |
| Read of unwritten field cookies in org.microemu.applet.CookieRecordStoreManager.listRecordStores() | CORRECTNESS | NP_UNWRITTEN_FIELD | 153 | Medium |
| Read of unwritten field cookies in org.microemu.applet.CookieRecordStoreManager.openRecordStore(String, boolean) | CORRECTNESS | NP_UNWRITTEN_FIELD | 166 | Medium |
| Unread field: org.microemu.applet.CookieRecordStoreManager.applet | PERFORMANCE | URF_UNREAD_FIELD | 73 | Medium |
| Unwritten field: org.microemu.applet.CookieRecordStoreManager.cookies | CORRECTNESS | UWF_UNWRITTEN_FIELD | 90 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| Invocation of toString on CookieRecordStoreManager$CookieContent.parts in org.microemu.applet.CookieRecordStoreManager$CookieContent.getParts() | CORRECTNESS | DMI_INVOKING_TOSTRING_ON_ARRAY | 310 | Medium |
| Should org.microemu.applet.CookieRecordStoreManager$CookieContent be a _static_ inner class? | PERFORMANCE | SIC_INNER_SHOULD_BE_STATIC | 276-329 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| org.microemu.applet.Main$1 stored into non-transient field Main.emulatorContext | BAD_PRACTICE | SE_BAD_FIELD_STORE | 89 | Medium |
| org.microemu.util.MemoryRecordStoreManager stored into non-transient field Main.recordStoreManager | BAD_PRACTICE | SE_BAD_FIELD_STORE | 144 | Medium |
| Write to static field org.microemu.app.util.MIDletSystemProperties.applyToJavaSystemProperties from instance method org.microemu.applet.Main.init() | STYLE | ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD | 136 | High |
| Write to static field org.microemu.app.util.MIDletResourceLoader.classLoader from instance method org.microemu.applet.Main.init() | STYLE | ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD | 237 | Medium |
| Write to static field org.microemu.device.ui.EventDispatcher.maxFps from instance method org.microemu.applet.Main.init() | STYLE | ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD | 231 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| org.microemu.device.j2se.J2SEButton.getKeyboardKeyCodes() may expose internal representation by returning J2SEButton.keyboardKeys | MALICIOUS_CODE | EI_EXPOSE_REP | 148 | Medium |
| new org.microemu.device.j2se.J2SEButton(int, String, Shape, int, String, String, Hashtable, boolean) may expose internal representation by storing an externally mutable object into J2SEButton.inputToChars | MALICIOUS_CODE | EI_EXPOSE_REP2 | 126 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| Method org.microemu.device.j2se.J2SEButtonDefaultKeyCodes.code(ButtonName, int) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead | PERFORMANCE | DM_NUMBER_CTOR | 107 | Medium |
| Method org.microemu.device.j2se.J2SEButtonDefaultKeyCodes.code(ButtonName, int, int) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead | PERFORMANCE | DM_NUMBER_CTOR | 115 | Medium |
| Method org.microemu.device.j2se.J2SEButtonDefaultKeyCodes.getBackwardCompatibleName(int) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead | PERFORMANCE | DM_NUMBER_CTOR | 120 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| Method org.microemu.device.j2se.J2SEDeviceButtonsHelper.createDeviceInformation(Device) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead | PERFORMANCE | DM_NUMBER_CTOR | 121 | Medium |
| Method org.microemu.device.j2se.J2SEDeviceButtonsHelper.getButton(KeyEvent) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead | PERFORMANCE | DM_NUMBER_CTOR | 90 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| Unchecked/unconfirmed cast from javax.microedition.lcdui.Image to org.microemu.device.j2se.J2SEMutableImage in org.microemu.device.j2se.J2SEDeviceDisplay.createImage(Image) | STYLE | BC_UNCONFIRMED_CAST | 273 | Medium |
| Unchecked/unconfirmed cast from javax.microedition.lcdui.Image to org.microemu.device.j2se.J2SEMutableImage in org.microemu.device.j2se.J2SEDeviceDisplay.createImage(Image, int, int, int, int, int) | STYLE | BC_UNCONFIRMED_CAST | 344 | Medium |
| Unused field: org.microemu.device.j2se.J2SEDeviceDisplay.gameCanvasGraphics | PERFORMANCE | UUF_UNUSED_FIELD | Not available | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| Unchecked/unconfirmed cast from javax.microedition.lcdui.Image to org.microemu.device.j2se.J2SEImmutableImage in org.microemu.device.j2se.J2SEDisplayGraphics.drawImage(Image, int, int, int) | STYLE | BC_UNCONFIRMED_CAST | 193 | Medium |
| Unchecked/unconfirmed cast from javax.microedition.lcdui.Image to org.microemu.device.j2se.J2SEMutableImage in org.microemu.device.j2se.J2SEDisplayGraphics.drawImage(Image, int, int, int) | STYLE | BC_UNCONFIRMED_CAST | 191 | Medium |
| Unchecked/unconfirmed cast from javax.microedition.lcdui.Image to org.microemu.device.j2se.J2SEImmutableImage in org.microemu.device.j2se.J2SEDisplayGraphics.drawRegion(Image, int, int, int, int, int, int, int, int) | STYLE | BC_UNCONFIRMED_CAST | 282 | Medium |
| Unchecked/unconfirmed cast from javax.microedition.lcdui.Image to org.microemu.device.j2se.J2SEMutableImage in org.microemu.device.j2se.J2SEDisplayGraphics.drawRegion(Image, int, int, int, int, int, int, int, int) | STYLE | BC_UNCONFIRMED_CAST | 280 | Medium |
| Method org.microemu.device.j2se.J2SEDisplayGraphics.setColor(int) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead | PERFORMANCE | DM_NUMBER_CTOR | 102 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| Check to see if ((...) & 0) == 0 in org.microemu.device.j2se.J2SEFontManager.getFont(Font) | CORRECTNESS | BIT_AND_ZZ | 69 | High |
| Method org.microemu.device.j2se.J2SEFontManager.getFont(Font) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead | PERFORMANCE | DM_NUMBER_CTOR | 57 | Medium |
| Method org.microemu.device.j2se.J2SEFontManager.setFont(String, String, String, Font) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead | PERFORMANCE | DM_NUMBER_CTOR | 189 | Medium |
| Vacuous ior operation on key in org.microemu.device.j2se.J2SEFontManager.setFont(String, String, String, Font) | STYLE | INT_VACUOUS_BIT_OPERATION | 169 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| org.microemu.device.j2se.J2SEGraphicsSurface.getImageData() may expose internal representation by returning J2SEGraphicsSurface.imageData | MALICIOUS_CODE | EI_EXPOSE_REP | 84 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| Wait not in loop in org.microemu.device.j2se.J2SEImmutableImage.getHeight() | MT_CORRECTNESS | WA_NOT_IN_LOOP | 81 | Medium |
| Wait not in loop in org.microemu.device.j2se.J2SEImmutableImage.getWidth() | MT_CORRECTNESS | WA_NOT_IN_LOOP | 121 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| Method org.microemu.device.j2se.J2SEInputMethod.buttonPressed(J2SEButton, char) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead | PERFORMANCE | DM_NUMBER_CTOR | 354 | Medium |
| Method org.microemu.device.j2se.J2SEInputMethod.buttonReleased(J2SEButton, char) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead | PERFORMANCE | DM_NUMBER_CTOR | 410 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| org.microemu.device.j2se.J2SEMutableImage.getData() may expose internal representation by returning J2SEMutableImage.pixels | MALICIOUS_CODE | EI_EXPOSE_REP | 101 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| Method org.microemu.device.j2se.J2SESoftButton.addCommandType(int) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead | PERFORMANCE | DM_NUMBER_CTOR | 226 | Medium |
| org.microemu.device.j2se.J2SESoftButton.RIGHT isn't final but should be | MALICIOUS_CODE | MS_SHOULD_BE_FINAL | 47 | High |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| Inconsistent synchronization of org.microemu.device.j2se.J2SESystemFont.initialized; locked 66% of time | MT_CORRECTNESS | IS2_INCONSISTENT_SYNC | 62 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| Inconsistent synchronization of org.microemu.device.j2se.J2SETrueTypeFont.initialized; locked 66% of time | MT_CORRECTNESS | IS2_INCONSISTENT_SYNC | 67 | Medium |
| Bug | Category | Details | Line | Priority |
|---|