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 |
|---|---|---|---|
| 129 | 73 | 0 | 0 |
| Bug | Category | Details | Line | Priority |
|---|
| Bug | Category | Details | Line | Priority |
|---|
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| Dead store to midletString in org.microemu.app.Main.main(String[]) | STYLE | DLS_DEAD_LOCAL_STORE | 1060 | Medium |
| org.microemu.app.Main$17 stored into non-transient field Main.componentListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 707 | Medium |
| org.microemu.app.Main$1 stored into non-transient field Main.emulatorContext | BAD_PRACTICE | SE_BAD_FIELD_STORE | 177 | Medium |
| org.microemu.app.Main$11 stored into non-transient field Main.menuAboutListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 500 | Medium |
| org.microemu.app.Main$4 stored into non-transient field Main.menuCloseMidletListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 254 | Medium |
| org.microemu.app.Main$12 stored into non-transient field Main.menuExitListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 506 | Medium |
| org.microemu.app.Main$10 stored into non-transient field Main.menuLogConsoleListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 481 | Medium |
| org.microemu.app.Main$8 stored into non-transient field Main.menuMIDletNetworkConnectionListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 457 | Medium |
| org.microemu.app.Main$2 stored into non-transient field Main.menuOpenMIDletFileListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 216 | Medium |
| org.microemu.app.Main$3 stored into non-transient field Main.menuOpenMIDletURLListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 240 | Medium |
| org.microemu.app.Main$9 stored into non-transient field Main.menuRecordStoreManagerListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 464 | Medium |
| org.microemu.app.Main$5 stored into non-transient field Main.menuSaveForWebListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 260 | Medium |
| org.microemu.app.Main$14 stored into non-transient field Main.menuScaledDisplayListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 569 | Medium |
| org.microemu.app.Main$13 stored into non-transient field Main.menuSelectDeviceListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 535 | Medium |
| org.microemu.app.Main$6 stored into non-transient field Main.menuStartCaptureListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 380 | Medium |
| org.microemu.app.Main$7 stored into non-transient field Main.menuStopCaptureListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 444 | Medium |
| org.microemu.app.Main$16 stored into non-transient field Main.responseInterfaceListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 693 | Medium |
| org.microemu.app.Main$15 stored into non-transient field Main.statusBarListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 685 | Medium |
| org.microemu.app.Main$18 stored into non-transient field Main.windowListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 750 | 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 | 531 | 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 | 150 | Medium |
| org.microemu.app.ui.swing.SwingDeviceComponent$2 stored into non-transient field SwingDeviceComponent.mouseMotionListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 227 | 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 | 112-115 | Medium |
| Unread field: org.microemu.app.ui.swing.SwingDeviceComponent$MouseRepeatedTimerTask.source | PERFORMANCE | URF_UNREAD_FIELD | 116 | 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 | 83 | Medium |
| org.microemu.app.ui.swing.SwingDisplayComponent$2 stored into non-transient field SwingDisplayComponent.mouseMotionListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 183 | Medium |
| org.microemu.app.ui.swing.SwingDisplayComponent$3 stored into non-transient field SwingDisplayComponent.mouseWheelListener | BAD_PRACTICE | SE_BAD_FIELD_STORE | 233 | 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 | 151 | High |
| Dead store to format in new org.microemu.applet.CookieRecordStoreManager(Applet) | STYLE | DLS_DEAD_LOCAL_STORE | 75 | High |
| Load of known null value in org.microemu.applet.CookieRecordStoreManager.openRecordStore(String, boolean) | STYLE | NP_LOAD_OF_KNOWN_NULL_VALUE | 179 | 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 | 288 | Medium |
| Should org.microemu.applet.CookieRecordStoreManager$CookieContent be a _static_ inner class? | PERFORMANCE | SIC_INNER_SHOULD_BE_STATIC | 254-307 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| org.microemu.applet.Main$1 stored into non-transient field Main.emulatorContext | BAD_PRACTICE | SE_BAD_FIELD_STORE | 87 | Medium |
| org.microemu.util.MemoryRecordStoreManager stored into non-transient field Main.recordStoreManager | BAD_PRACTICE | SE_BAD_FIELD_STORE | 141 | 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 | 133 | 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 | 234 | 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 | 228 | 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 |
| Exception is caught when Exception is not thrown in org.microemu.device.j2se.J2SEButton.parseKeyboardKey(String) | STYLE | REC_CATCH_EXCEPTION | 222 | 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 | 266 | 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 | 337 | 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 | 190 | 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 | 188 | 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 | 276 | 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 | 274 | 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 |
| Vacuous ior operation on key in org.microemu.device.j2se.J2SEFontManager.setFont(String, String, String, Font) | STYLE | INT_VACUOUS_BIT_OPERATION | 163 | 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 |
|---|---|---|---|---|
| org.microemu.device.j2se.J2SEMutableImage.getData() may expose internal representation by returning J2SEMutableImage.pixels | MALICIOUS_CODE | EI_EXPOSE_REP | 103 | Medium |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| 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 |
|---|