diff --git a/spotbugs-baseline.xml b/spotbugs-baseline.xml index eb6ffaf8..2aac1e38 100644 --- a/spotbugs-baseline.xml +++ b/spotbugs-baseline.xml @@ -1,6 +1,6 @@ - + C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\gui\AssignmentsComponent$1.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\gui\AssignmentsComponent$CompoundButton$1.class @@ -26,7 +26,6 @@ C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\gui\Main$1StatusBarTextTimerTask.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\gui\Main$2.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\gui\Main$3.class - C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\gui\Main$4.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\gui\Main$AbstractProfileFileChooser.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\gui\Main$ChangeVJoyDirectoryAction.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\gui\Main$ControllerInfo.class @@ -101,7 +100,6 @@ C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\input\action\ButtonToPressOnScreenKeyboardKeyAction.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\input\action\ButtonToReleaseAllOnScreenKeyboardKeysAction.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\input\action\ButtonToScrollAction.class - C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\input\action\ButtonToSelectOnScreenKeyboardKeyAction$1.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\input\action\ButtonToSelectOnScreenKeyboardKeyAction$Direction.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\input\action\ButtonToSelectOnScreenKeyboardKeyAction.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\input\action\ButtonToVrResetZeroPoseAction.class @@ -137,6 +135,7 @@ C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\input\action\gui\LockKeyEditorBuilder.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\input\action\gui\LongPressEditorBuilder.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\input\action\gui\MaxRelativeSpeedEditorBuilder.class + C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\input\action\gui\MinActivationIntervalEditorBuilder.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\input\action\gui\ModeEditorBuilder.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\input\action\gui\MouseAxisEditorBuilder.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\input\action\gui\MouseButtonEditorBuilder.class @@ -157,6 +156,7 @@ C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\input\action\ILongPressAction.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\input\action\InvertableAction.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\input\action\IResetableAction.class + C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\input\action\MinActivationIntervalAction.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\input\action\NullAction.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\input\action\ToAxisAction.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\input\action\ToButtonAction.class @@ -211,7 +211,6 @@ C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\json\ModeAwareTypeAdapterFactory$1.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\json\ModeAwareTypeAdapterFactory.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\json\ScanCodeAdapter.class - C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\runmode\ClientRunMode$1.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\runmode\ClientRunMode$ClientState.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\runmode\ClientRunMode.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\runmode\LocalRunMode.class @@ -220,7 +219,6 @@ C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\runmode\OutputRunMode$DeviceValue.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\runmode\OutputRunMode.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\runmode\RunMode.class - C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\runmode\ServerRunMode$1.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\runmode\ServerRunMode$MessageType.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\runmode\ServerRunMode$ServerState.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\runmode\ServerRunMode.class @@ -231,44 +229,44 @@ C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\version\Version.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\de\bwravencl\controllerbuddy\version\VersionUtils.class C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\build\classes\java\main\module-info.class - C:\Users\matteo\.gradle\caches\transforms-3\d32aa54200e0bbf291d29c919b2783e6\transformed\commons-cli-1.5.0-module.jar + C:\Users\matteo\.gradle\caches\transforms-3\2bcb3a41d05d5d4cba2ed58abeff98c0\transformed\commons-cli-1.5.0-module.jar C:\Users\matteo\.gradle\caches\modules-2\files-2.1\com.formdev\flatlaf\3.2.1\90f4bd7e9208c38cc065e84555a423e871aade18\flatlaf-3.2.1.jar - C:\Users\matteo\.gradle\caches\transforms-3\5b480da1d26928793567de809fa79667\transformed\hid4java-85d76ecd85-module.jar - C:\Users\matteo\.gradle\caches\transforms-3\a80ce4f1aed9942ade83e32ea44da367\transformed\jxinput-1.0.0-module.jar + C:\Users\matteo\.gradle\caches\transforms-3\b6ac2039fb06f83a34bb1e3bdefe039b\transformed\hid4java-85d76ecd85-module.jar + C:\Users\matteo\.gradle\caches\transforms-3\e7690ea07766a0b3c31e9dfc8efdaf11\transformed\jxinput-1.0.0-module.jar C:\Users\matteo\.gradle\caches\modules-2\files-2.1\com.google.code.gson\gson\2.10.1\b3add478d4382b78ea20b1671390a858002feb6c\gson-2.10.1.jar C:\Users\matteo\.gradle\caches\modules-2\files-2.1\io.github.classgraph\classgraph\4.8.162\85bc1625bc8aac51ad32971ebb26a3e35cb97356\classgraph-4.8.162.jar C:\Users\matteo\.gradle\caches\modules-2\files-2.1\net.java.dev.jna\jna-platform-jpms\5.13.0\17bfd2ca13edbc1b83a5979013c55242dd15407\jna-platform-jpms-5.13.0.jar C:\Users\matteo\.gradle\caches\modules-2\files-2.1\net.java.dev.jna\jna-jpms\5.13.0\722326930a147b82b73fb1bdcffba29af921a1b2\jna-jpms-5.13.0.jar - C:\Users\matteo\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-glfw\3.3.2\757920418805fb90bfebb3d46b1d9e7669fca2eb\lwjgl-glfw-3.3.2.jar - C:\Users\matteo\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-glfw\3.3.2\1251e3cb7e5d6159334cfb9244f789ce992f03b\lwjgl-glfw-3.3.2-natives-windows.jar - C:\Users\matteo\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-opengl\3.3.2\ee8e95be0b438602038bc1f02dc5e3d011b1b216\lwjgl-opengl-3.3.2.jar - C:\Users\matteo\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-opengl\3.3.2\83cd34469d4e0bc335bf74c7f62206530a9480bf\lwjgl-opengl-3.3.2-natives-windows.jar - C:\Users\matteo\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-openvr\3.3.2\91fdc4b058eda3ee40b24a074759361297d9f8f5\lwjgl-openvr-3.3.2.jar - C:\Users\matteo\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-openvr\3.3.2\721672dac027958b4604f939a3474b1f88d2825d\lwjgl-openvr-3.3.2-natives-windows.jar - C:\Users\matteo\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl\3.3.2\4421d94af68e35dcaa31737a6fc59136a1e61b94\lwjgl-3.3.2.jar - C:\Users\matteo\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl\3.3.2\a55169ced70ffcd15f2162daf4a9c968578f6cd5\lwjgl-3.3.2-natives-windows.jar - C:\Users\matteo\.gradle\caches\transforms-3\1264afe7c42e182a23be0f863ff9560b\transformed\batik-swing-1.17-module.jar + C:\Users\matteo\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-glfw\3.3.3\efa1eb78c5ccd840e9f329717109b5e892d72f8e\lwjgl-glfw-3.3.3.jar + C:\Users\matteo\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-glfw\3.3.3\e449e28b4891fc423c54c85fbc5bb0b9efece67a\lwjgl-glfw-3.3.3-natives-windows.jar + C:\Users\matteo\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-opengl\3.3.3\2f6b0147078396a58979125a4c947664e98293a\lwjgl-opengl-3.3.3.jar + C:\Users\matteo\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-opengl\3.3.3\e6c1eec8be8a71951b830a4d69efc01c6531900c\lwjgl-opengl-3.3.3-natives-windows.jar + C:\Users\matteo\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-openvr\3.3.3\14f816b00a6c7939831f7f65db39c9dbf5c5dc90\lwjgl-openvr-3.3.3.jar + C:\Users\matteo\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl-openvr\3.3.3\88da228eda93862da163ba355afa9f62526225bd\lwjgl-openvr-3.3.3-natives-windows.jar + C:\Users\matteo\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl\3.3.3\29589b5f87ed335a6c7e7ee6a5775f81f97ecb84\lwjgl-3.3.3.jar + C:\Users\matteo\.gradle\caches\modules-2\files-2.1\org.lwjgl\lwjgl\3.3.3\a5ed18a2b82fc91b81f40d717cb1f64c9dcb0540\lwjgl-3.3.3-natives-windows.jar + C:\Users\matteo\.gradle\caches\transforms-3\3a5cdbd429a340126bf359fa6961b7c5\transformed\batik-swing-1.17-module.jar C:\Users\matteo\.gradle\caches\modules-2\files-2.1\uk.co.bithatch\linuxio4j\2.1\f7d312bfd93646a3e9a9ad66319d94a5ae9ef10e\linuxio4j-2.1.jar - C:\Users\matteo\.gradle\caches\transforms-3\654324de708f8cd3c6d639a00505be46\transformed\batik-bridge-1.17-module.jar - C:\Users\matteo\.gradle\caches\transforms-3\7ffa1606bde805a2c143deec25d8a3bf\transformed\batik-script-1.17-module.jar - C:\Users\matteo\.gradle\caches\transforms-3\c16955a9a84a6a4c3c55ddf47bb67e29\transformed\batik-anim-1.17-module.jar - C:\Users\matteo\.gradle\caches\transforms-3\8a44b0e0a4e48555e25b3e2a019e5082\transformed\batik-gvt-1.17-module.jar - C:\Users\matteo\.gradle\caches\transforms-3\ab799b393b6102554a66460d5bd6a6f5\transformed\batik-svg-dom-1.17-module.jar - C:\Users\matteo\.gradle\caches\transforms-3\eb583af1322fe1175c6a5279bd7df987\transformed\batik-parser-1.17-module.jar - C:\Users\matteo\.gradle\caches\transforms-3\1a353a66fcbc61fbdcd325b8a9e06527\transformed\batik-awt-util-1.17-module.jar - C:\Users\matteo\.gradle\caches\transforms-3\1152f4032dc6e1ccd8525767dc9cb4d8\transformed\batik-dom-1.17-module.jar - C:\Users\matteo\.gradle\caches\transforms-3\3ac072f4ff5adcc165b98ad531d60939\transformed\batik-css-1.17-module.jar - C:\Users\matteo\.gradle\caches\transforms-3\a53cd67534c3ce22844576aa128e7c97\transformed\batik-ext-1.17-module.jar - C:\Users\matteo\.gradle\caches\transforms-3\42f413c8f33d96a5b413e8b0d3aca102\transformed\batik-gui-util-1.17-module.jar - C:\Users\matteo\.gradle\caches\transforms-3\0fcb6bab4fcc07af787f70befde47846\transformed\batik-xml-1.17-module.jar - C:\Users\matteo\.gradle\caches\transforms-3\6506e21bd3f7efe48accf1535085f8cb\transformed\batik-util-1.17-module.jar - C:\Users\matteo\.gradle\caches\transforms-3\903fb8c8eb5a67cb896167bc4caefcb2\transformed\batik-constants-1.17-module.jar - C:\Users\matteo\.gradle\caches\transforms-3\3604e2a409e1731ae427f1dae7365388\transformed\batik-i18n-1.17-module.jar - C:\Users\matteo\.gradle\caches\transforms-3\057634d15d60d16382faf2406b474180\transformed\batik-shared-resources-1.17-module.jar - C:\Users\matteo\.gradle\caches\transforms-3\a367c24bd8636cac28fa681604e0d9b2\transformed\xml-apis-ext-1.3.04-module.jar + C:\Users\matteo\.gradle\caches\transforms-3\d7566abf4582a94e7f74c794eaf99ff5\transformed\batik-bridge-1.17-module.jar + C:\Users\matteo\.gradle\caches\transforms-3\e7576d113684a13dccbf1ccfe11591d4\transformed\batik-script-1.17-module.jar + C:\Users\matteo\.gradle\caches\transforms-3\ee90b8c038a4afdcc4e827ca65744ea0\transformed\batik-anim-1.17-module.jar + C:\Users\matteo\.gradle\caches\transforms-3\6624771033560d9b2db961321c24c73e\transformed\batik-gvt-1.17-module.jar + C:\Users\matteo\.gradle\caches\transforms-3\65029f533f36a8b6423660e993cdac87\transformed\batik-svg-dom-1.17-module.jar + C:\Users\matteo\.gradle\caches\transforms-3\341a1ef924065da97ce91c4896080b7c\transformed\batik-parser-1.17-module.jar + C:\Users\matteo\.gradle\caches\transforms-3\72d488f0ef71c60703f97108b6b62408\transformed\batik-awt-util-1.17-module.jar + C:\Users\matteo\.gradle\caches\transforms-3\22d333566851498e9d0f192481a5b47b\transformed\batik-dom-1.17-module.jar + C:\Users\matteo\.gradle\caches\transforms-3\44977d3ccfd6c198790790f6139e2130\transformed\batik-css-1.17-module.jar + C:\Users\matteo\.gradle\caches\transforms-3\f9af9e8af2bca14166bb47d964238501\transformed\batik-ext-1.17-module.jar + C:\Users\matteo\.gradle\caches\transforms-3\60269413a8257d5d1d02d1d75d9783a9\transformed\batik-gui-util-1.17-module.jar + C:\Users\matteo\.gradle\caches\transforms-3\0b0b1252ea3c99156552ec4962174ea4\transformed\batik-xml-1.17-module.jar + C:\Users\matteo\.gradle\caches\transforms-3\3f69876a1e6e051d0b6865790f66fad9\transformed\batik-util-1.17-module.jar + C:\Users\matteo\.gradle\caches\transforms-3\4d920225916ee2b3e04dfbe396544887\transformed\batik-constants-1.17-module.jar + C:\Users\matteo\.gradle\caches\transforms-3\2a475ecc05658fad92f734444b7adfd0\transformed\batik-i18n-1.17-module.jar + C:\Users\matteo\.gradle\caches\transforms-3\27f759fd657915c27db9d1b0a9ee97c2\transformed\batik-shared-resources-1.17-module.jar + C:\Users\matteo\.gradle\caches\transforms-3\7fedacd99134d14165d3c7ac4795da8f\transformed\xml-apis-ext-1.3.04-module.jar C:\Users\matteo\.gradle\caches\modules-2\files-2.1\org.apache.xmlgraphics\xmlgraphics-commons\2.9\de2d1bd8d40474bbe876bb269410c750489f08e5\xmlgraphics-commons-2.9.jar C:\Users\matteo\.gradle\caches\modules-2\files-2.1\commons-io\commons-io\2.11.0\a2503f302b11ebde7ebc3df41daebe0e4eea3689\commons-io-2.11.0.jar - C:\Users\matteo\.gradle\caches\transforms-3\c3f948f1c4e52a8381f80ab4de5412f7\transformed\commons-logging-1.0.4-module.jar + C:\Users\matteo\.gradle\caches\transforms-3\f41c20558db506f575b23a26c07d8415\transformed\commons-logging-1.0.4-module.jar C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\src\main\resources C:\Users\matteo\Projekte\ControllerBuddy\ControllerBuddy\src\main\java @@ -308,13 +306,13 @@ Unchecked/unconfirmed cast Unchecked/unconfirmed cast from java.awt.Graphics to java.awt.Graphics2D in de.bwravencl.controllerbuddy.gui.AssignmentsComponent$CompoundButton$1.paintIcon(Component, Graphics, int, int) - - At AssignmentsComponent.java:[lines 353-397] + + At AssignmentsComponent.java:[lines 354-398] In class de.bwravencl.controllerbuddy.gui.AssignmentsComponent$CompoundButton$1 - + In method de.bwravencl.controllerbuddy.gui.AssignmentsComponent$CompoundButton$1.paintIcon(Component, Graphics, int, int) @@ -332,21 +330,21 @@ Value loaded from g - - At AssignmentsComponent.java:[line 370] + + At AssignmentsComponent.java:[line 371] May expose internal representation by returning reference to mutable object de.bwravencl.controllerbuddy.gui.EditActionsDialog.getInput() may expose internal representation by returning EditActionsDialog.input - - At EditActionsDialog.java:[lines 72-576] + + At EditActionsDialog.java:[lines 76-602] In class de.bwravencl.controllerbuddy.gui.EditActionsDialog - + In method de.bwravencl.controllerbuddy.gui.EditActionsDialog.getInput() @@ -355,22 +353,22 @@ Field de.bwravencl.controllerbuddy.gui.EditActionsDialog.input - - At EditActionsDialog.java:[line 263] + + At EditActionsDialog.java:[line 289] - + May expose internal representation by incorporating reference to mutable object - new de.bwravencl.controllerbuddy.gui.EditActionsDialog(Component, ButtonToCycleAction) may expose internal representation by storing an externally mutable object into EditActionsDialog.cycleAction + new de.bwravencl.controllerbuddy.gui.EditActionsDialog(Dialog, ButtonToCycleAction) may expose internal representation by storing an externally mutable object into EditActionsDialog.cycleAction - - At EditActionsDialog.java:[lines 72-576] + + At EditActionsDialog.java:[lines 76-602] In class de.bwravencl.controllerbuddy.gui.EditActionsDialog - - - In method new de.bwravencl.controllerbuddy.gui.EditActionsDialog(Component, ButtonToCycleAction) + + + In method new de.bwravencl.controllerbuddy.gui.EditActionsDialog(Dialog, ButtonToCycleAction) @@ -378,27 +376,40 @@ Field de.bwravencl.controllerbuddy.gui.EditActionsDialog.cycleAction - + Local variable named cycleAction - - At EditActionsDialog.java:[line 134] + + At EditActionsDialog.java:[line 139] + + + + Do not reuse public identifiers from JSL as class name + Class name ?>?1/1??? in source file ?>?2/1??? shadows the publicly available identifier from the Java Standard Library. + + + At EditActionsDialog.java:[lines 683-691] + + In class de.bwravencl.controllerbuddy.gui.EditActionsDialog$CancelAction + + + At EditActionsDialog.java:[lines 683-691] Random object created and used only once Random object created and used only once in de.bwravencl.controllerbuddy.gui.Main.lambda$new$2() - - At Main.java:[lines 216-3448] + + At Main.java:[lines 216-3455] In class de.bwravencl.controllerbuddy.gui.Main - + In method de.bwravencl.controllerbuddy.gui.Main.lambda$new$2() - + Called method java.security.SecureRandom.nextInt() @@ -410,68 +421,68 @@ Method invokes System.exit(...) de.bwravencl.controllerbuddy.gui.Main.terminate(int) invokes System.exit(...), which shuts down the entire virtual machine - - At Main.java:[lines 216-3448] + + At Main.java:[lines 216-3455] In class de.bwravencl.controllerbuddy.gui.Main - + In method de.bwravencl.controllerbuddy.gui.Main.terminate(int) - - At Main.java:[line 1303] + + At Main.java:[line 1305] Explicit garbage collection; extremely dubious except in benchmarking code de.bwravencl.controllerbuddy.gui.Main.stopAll(boolean, boolean, boolean) forces garbage collection; extremely dubious except in benchmarking code - - At Main.java:[lines 216-3448] + + At Main.java:[lines 216-3455] In class de.bwravencl.controllerbuddy.gui.Main - + In method de.bwravencl.controllerbuddy.gui.Main.stopAll(boolean, boolean, boolean) - - At Main.java:[line 2562] + + At Main.java:[line 2567] Method invoked that should be only be invoked inside a doPrivileged block Invocation of reflect.Field.setAccessible(boolean), which should be invoked from within a doPrivileged block, in de.bwravencl.controllerbuddy.gui.Main.updateTitleAndTooltip() - - At Main.java:[lines 216-3448] + + At Main.java:[lines 216-3455] In class de.bwravencl.controllerbuddy.gui.Main - + In method de.bwravencl.controllerbuddy.gui.Main.updateTitleAndTooltip() - + Called method reflect.Field.setAccessible(boolean) - - At Main.java:[line 3414] + + At Main.java:[line 3421] May expose internal representation by returning reference to mutable object de.bwravencl.controllerbuddy.gui.Main.getFrame() may expose internal representation by returning Main.frame - - At Main.java:[lines 216-3448] + + At Main.java:[lines 216-3455] In class de.bwravencl.controllerbuddy.gui.Main - + In method de.bwravencl.controllerbuddy.gui.Main.getFrame() @@ -480,21 +491,21 @@ Field de.bwravencl.controllerbuddy.gui.Main.frame - - At Main.java:[line 1546] + + At Main.java:[line 1548] May expose internal representation by returning reference to mutable object de.bwravencl.controllerbuddy.gui.Main.getOnScreenKeyboard() may expose internal representation by returning Main.onScreenKeyboard - - At Main.java:[lines 216-3448] + + At Main.java:[lines 216-3455] In class de.bwravencl.controllerbuddy.gui.Main - + In method de.bwravencl.controllerbuddy.gui.Main.getOnScreenKeyboard() @@ -503,21 +514,21 @@ Field de.bwravencl.controllerbuddy.gui.Main.onScreenKeyboard - - At Main.java:[line 1554] + + At Main.java:[line 1556] May expose internal representation by returning reference to mutable object de.bwravencl.controllerbuddy.gui.Main.getPreferences() may expose internal representation by returning Main.preferences - - At Main.java:[lines 216-3448] + + At Main.java:[lines 216-3455] In class de.bwravencl.controllerbuddy.gui.Main - + In method de.bwravencl.controllerbuddy.gui.Main.getPreferences() @@ -526,136 +537,214 @@ Field de.bwravencl.controllerbuddy.gui.Main.preferences - - At Main.java:[line 1567] + + At Main.java:[line 1569] + + + + Do not reuse public identifiers from JSL as class name + Class name ?>?1/1??? in source file ?>?2/1??? shadows the publicly available identifier from the Java Standard Library. + + + At Main.java:[lines 216-3455] + + In class de.bwravencl.controllerbuddy.gui.Main + + + At Main.java:[lines 216-3455] Switch statement found where one case falls through to the next case Switch statement found in de.bwravencl.controllerbuddy.gui.Main$AbstractProfileFileChooser.approveSelection() where one case falls through to the next case - - At Main.java:[lines 3504-3528] + + At Main.java:[lines 3511-3535] In class de.bwravencl.controllerbuddy.gui.Main$AbstractProfileFileChooser - + In method de.bwravencl.controllerbuddy.gui.Main$AbstractProfileFileChooser.approveSelection() - - At Main.java:[lines 3519-3522] + + At Main.java:[lines 3526-3529] + + + + Do not reuse public identifiers from JSL as class name + Class name ?>?1/1??? in source file ?>?2/1??? shadows the publicly available identifier from the Java Standard Library. + + + At Main.java:[lines 3937-3945] + + In class de.bwravencl.controllerbuddy.gui.Main$NewAction + + + At Main.java:[lines 3937-3945] + + + + Do not reuse public identifiers from JSL as class name + Class name ?>?1/1??? in source file ?>?2/1??? shadows the publicly available identifier from the Java Standard Library. + + + At Main.java:[lines 3973-3994] + + In class de.bwravencl.controllerbuddy.gui.Main$OpenAction + + + At Main.java:[lines 3973-3994] + + + + Do not reuse public identifiers from JSL as class name + Class name ?>?1/1??? in source file ?>?2/1??? shadows the publicly available identifier from the Java Standard Library. + + + At Main.java:[lines 4053-4061] + + In class de.bwravencl.controllerbuddy.gui.Main$SaveAction + + + At Main.java:[lines 4053-4061] + + + + Do not reuse public identifiers from JSL as class name + Class name ?>?1/1??? in source file ?>?2/1??? shadows the publicly available identifier from the Java Standard Library. + + + At Main.java:[lines 4069-4077] + + In class de.bwravencl.controllerbuddy.gui.Main$SaveAsAction + + + At Main.java:[lines 4069-4077] + + + + Do not reuse public identifiers from JSL as class name + Class name ?>?1/1??? in source file ?>?2/1??? shadows the publicly available identifier from the Java Standard Library. + + + At Main.java:[lines 4267-4278] + + In class de.bwravencl.controllerbuddy.gui.Main$ShowAction + + + At Main.java:[lines 4267-4278] Naked notify Naked notify in de.bwravencl.controllerbuddy.gui.Main$TaskRunner.enterLoop() - - At Main.java:[lines 3686-3806] + + At Main.java:[lines 3693-3816] In class de.bwravencl.controllerbuddy.gui.Main$TaskRunner - + In method de.bwravencl.controllerbuddy.gui.Main$TaskRunner.enterLoop() - - At Main.java:[line 3720] + + At Main.java:[line 3727] Unconditional wait Unconditional wait in de.bwravencl.controllerbuddy.gui.Main$TaskRunner.run(Callable) - - At Main.java:[lines 3686-3806] + + At Main.java:[lines 3693-3816] In class de.bwravencl.controllerbuddy.gui.Main$TaskRunner - + In method de.bwravencl.controllerbuddy.gui.Main$TaskRunner.run(Callable) - - At Main.java:[line 3758] + + At Main.java:[line 3766] Wait not in loop Wait not in loop in de.bwravencl.controllerbuddy.gui.Main$TaskRunner.run(Callable) - - At Main.java:[lines 3686-3806] + + At Main.java:[lines 3693-3816] In class de.bwravencl.controllerbuddy.gui.Main$TaskRunner - + In method de.bwravencl.controllerbuddy.gui.Main$TaskRunner.run(Callable) - - At Main.java:[line 3758] + + At Main.java:[line 3766] An overridable method is called from a constructor Overridable method getText is called from constructor new de.bwravencl.controllerbuddy.gui.OnScreenKeyboard$DualPurposeKeyboardButton(OnScreenKeyboard, String, String). - - At OnScreenKeyboard.java:[lines 767-776] + + At OnScreenKeyboard.java:[lines 768-777] In class de.bwravencl.controllerbuddy.gui.OnScreenKeyboard$DualPurposeKeyboardButton - + In method new de.bwravencl.controllerbuddy.gui.OnScreenKeyboard$DualPurposeKeyboardButton(OnScreenKeyboard, String, String) Value getText - - At OnScreenKeyboard.java:[line 770] + + At OnScreenKeyboard.java:[line 771] An overridable method is called from a constructor Overridable method toggleLock is called from constructor new de.bwravencl.controllerbuddy.gui.OnScreenKeyboard$LockKeyButton(OnScreenKeyboard, LockKey). - - At OnScreenKeyboard.java:[lines 786-844] + + At OnScreenKeyboard.java:[lines 785-851] In class de.bwravencl.controllerbuddy.gui.OnScreenKeyboard$LockKeyButton - + In method new de.bwravencl.controllerbuddy.gui.OnScreenKeyboard$LockKeyButton(OnScreenKeyboard, LockKey) Value toggleLock - - At OnScreenKeyboard.java:[line 792] + + At OnScreenKeyboard.java:[line 793] An overridable method is called from a constructor Overridable method stop is called from constructor new de.bwravencl.controllerbuddy.gui.OpenVrOverlay(Main). - - At OpenVrOverlay.java:[lines 53-466] + + At OpenVrOverlay.java:[lines 54-468] In class de.bwravencl.controllerbuddy.gui.OpenVrOverlay - + In method new de.bwravencl.controllerbuddy.gui.OpenVrOverlay(Main) Value stop - - At OpenVrOverlay.java:[line 217] + + At OpenVrOverlay.java:[line 218] @@ -1015,6 +1104,19 @@ At Input.java:[line 708] + + Do not reuse public identifiers from JSL as class name + Class name ?>?1/1??? in source file ?>?2/1??? shadows the publicly available identifier from the Java Standard Library. + + + At Input.java:[lines 49-717] + + In class de.bwravencl.controllerbuddy.input.Input + + + At Input.java:[lines 49-717] + + May expose internal representation by returning reference to mutable object de.bwravencl.controllerbuddy.input.KeyStroke.getKeyCodes() may expose internal representation by returning KeyStroke.keyCodes @@ -1165,6 +1267,19 @@ At KeyStroke.java:[line 108] + + Do not reuse public identifiers from JSL as class name + Class name ?>?1/1??? in source file ?>?2/1??? shadows the publicly available identifier from the Java Standard Library. + + + At KeyStroke.java:[lines 40-126] + + In class de.bwravencl.controllerbuddy.input.KeyStroke + + + At KeyStroke.java:[lines 40-126] + + May expose internal representation by returning reference to mutable object de.bwravencl.controllerbuddy.input.LockKey.keySym() may expose internal representation by returning LockKey.keySym @@ -1306,6 +1421,32 @@ At Mode.java:[line 107] + + Do not reuse public identifiers from JSL as class name + Class name ?>?1/1??? in source file ?>?2/1??? shadows the publicly available identifier from the Java Standard Library. + + + At Mode.java:[lines 36-129] + + In class de.bwravencl.controllerbuddy.input.Mode + + + At Mode.java:[lines 36-129] + + + + Do not reuse public identifiers from JSL as class name + Class name ?>?1/1??? in source file ?>?2/1??? shadows the publicly available identifier from the Java Standard Library. + + + At Mode.java:[line 132] + + In class de.bwravencl.controllerbuddy.input.Mode$Component + + + At Mode.java:[line 132] + + May expose internal representation by returning reference to mutable object de.bwravencl.controllerbuddy.input.Profile.getButtonToModeActionsMap() may expose internal representation by returning Profile.buttonToModeActionsMap @@ -1375,20 +1516,33 @@ At Profile.java:[line 113] + + Do not reuse public identifiers from JSL as class name + Class name ?>?1/1??? in source file ?>?2/1??? shadows the publicly available identifier from the Java Standard Library. + + + At Profile.java:[lines 34-196] + + In class de.bwravencl.controllerbuddy.input.Profile + + + At Profile.java:[lines 34-196] + + May expose internal representation by returning reference to mutable object de.bwravencl.controllerbuddy.input.action.ButtonToCycleAction.getActions() may expose internal representation by returning ButtonToCycleAction.actions - + At ButtonToCycleAction.java:[lines 32-171] In class de.bwravencl.controllerbuddy.input.action.ButtonToCycleAction - + In method de.bwravencl.controllerbuddy.input.action.ButtonToCycleAction.getActions() - + In ButtonToCycleAction.java @@ -1401,17 +1555,17 @@ May expose internal representation by incorporating reference to mutable object de.bwravencl.controllerbuddy.input.action.ButtonToCycleAction.setActions(List) may expose internal representation by storing an externally mutable object into ButtonToCycleAction.actions - + At ButtonToCycleAction.java:[lines 32-171] In class de.bwravencl.controllerbuddy.input.action.ButtonToCycleAction - + In method de.bwravencl.controllerbuddy.input.action.ButtonToCycleAction.setActions(List) - + In ButtonToCycleAction.java @@ -1425,19 +1579,19 @@ - Public static method may expose internal representation by returning array + Public static method may expose internal representation by returning a mutable object or array Public static de.bwravencl.controllerbuddy.input.action.ButtonToModeAction.getButtonToModeActionStack() may expose internal representation by returning ButtonToModeAction.buttonToModeActionStack - + At ButtonToModeAction.java:[lines 36-235] In class de.bwravencl.controllerbuddy.input.action.ButtonToModeAction - + In method de.bwravencl.controllerbuddy.input.action.ButtonToModeAction.getButtonToModeActionStack() - + In ButtonToModeAction.java @@ -1523,53 +1677,245 @@ At IButtonToAction.java:[line 28] - - May expose internal representation by returning reference to mutable object - de.bwravencl.controllerbuddy.input.action.ToKeyAction.getKeystroke() may expose internal representation by returning ToKeyAction.keystroke - - - At ToKeyAction.java:[lines 28-144] + + Do not reuse public identifiers from JSL as class name + Class name ?>?1/1??? in source file ?>?2/1??? shadows the publicly available identifier from the Java Standard Library. + + + In Action.java + + In class de.bwravencl.controllerbuddy.input.action.annotation.Action + + + In Action.java + + + + Be wary of letting constructors throw exceptions. + Exception thrown in class de.bwravencl.controllerbuddy.input.action.gui.ArrayEditorBuilder at new de.bwravencl.controllerbuddy.input.action.gui.ArrayEditorBuilder(EditActionsDialog, IAction, String, Class) will leave the constructor. The object under construction remains partially initialized and may be vulnerable to Finalizer attacks. + + + At ArrayEditorBuilder.java:[lines 32-51] - In class de.bwravencl.controllerbuddy.input.action.ToKeyAction + In class de.bwravencl.controllerbuddy.input.action.gui.ArrayEditorBuilder - - - In method de.bwravencl.controllerbuddy.input.action.ToKeyAction.getKeystroke() + + + In method new de.bwravencl.controllerbuddy.input.action.gui.ArrayEditorBuilder(EditActionsDialog, IAction, String, Class) - - - In ToKeyAction.java + + At ArrayEditorBuilder.java:[line 42] + + + At ArrayEditorBuilder.java:[line 42] + + + + Field not initialized in constructor but dereferenced without null check + ArrayEditorBuilder.comboBox not initialized in constructor and dereferenced in de.bwravencl.controllerbuddy.input.action.gui.ActivationEditorBuilder.buildEditor(JPanel) + + + At ArrayEditorBuilder.java:[lines 32-51] + + In class de.bwravencl.controllerbuddy.input.action.gui.ArrayEditorBuilder + + + + In ArrayEditorBuilder.java - Field de.bwravencl.controllerbuddy.input.action.ToKeyAction.keystroke + Field de.bwravencl.controllerbuddy.input.action.gui.ArrayEditorBuilder.comboBox - - At ToKeyAction.java:[line 72] + + + In method de.bwravencl.controllerbuddy.input.action.gui.ActivationEditorBuilder.buildEditor(JPanel) + + + At ActivationEditorBuilder.java:[line 49] - - May expose internal representation by incorporating reference to mutable object - de.bwravencl.controllerbuddy.input.action.ToKeyAction.setKeystroke(KeyStroke) may expose internal representation by storing an externally mutable object into ToKeyAction.keystroke - - - At ToKeyAction.java:[lines 28-144] + + Be wary of letting constructors throw exceptions. + Exception thrown in class de.bwravencl.controllerbuddy.input.action.gui.BooleanEditorBuilder at new de.bwravencl.controllerbuddy.input.action.gui.BooleanEditorBuilder(EditActionsDialog, IAction, String, Class) will leave the constructor. The object under construction remains partially initialized and may be vulnerable to Finalizer attacks. + + + At BooleanEditorBuilder.java:[lines 32-50] - In class de.bwravencl.controllerbuddy.input.action.ToKeyAction + In class de.bwravencl.controllerbuddy.input.action.gui.BooleanEditorBuilder - - - In method de.bwravencl.controllerbuddy.input.action.ToKeyAction.setKeystroke(KeyStroke) + + + In method new de.bwravencl.controllerbuddy.input.action.gui.BooleanEditorBuilder(EditActionsDialog, IAction, String, Class) - - - In ToKeyAction.java + + At BooleanEditorBuilder.java:[line 42] + + + At BooleanEditorBuilder.java:[line 42] + + + + Field not initialized in constructor but dereferenced without null check + BooleanEditorBuilder.checkBox not initialized in constructor and dereferenced in de.bwravencl.controllerbuddy.input.action.gui.LongPressEditorBuilder.buildEditor(JPanel) + + + At BooleanEditorBuilder.java:[lines 32-50] + + In class de.bwravencl.controllerbuddy.input.action.gui.BooleanEditorBuilder + + + + In BooleanEditorBuilder.java - Field de.bwravencl.controllerbuddy.input.action.ToKeyAction.keystroke + Field de.bwravencl.controllerbuddy.input.action.gui.BooleanEditorBuilder.checkBox - - Local variable named keystroke - - - At ToKeyAction.java:[line 138] + + + In method de.bwravencl.controllerbuddy.input.action.gui.LongPressEditorBuilder.buildEditor(JPanel) + + + At LongPressEditorBuilder.java:[line 47] + + + + Be wary of letting constructors throw exceptions. + Exception thrown in class de.bwravencl.controllerbuddy.input.action.gui.EditorBuilder at new de.bwravencl.controllerbuddy.input.action.gui.EditorBuilder(EditActionsDialog, IAction, String, Class) will leave the constructor. The object under construction remains partially initialized and may be vulnerable to Finalizer attacks. + + + At EditorBuilder.java:[lines 45-65] + + In class de.bwravencl.controllerbuddy.input.action.gui.EditorBuilder + + + + In method new de.bwravencl.controllerbuddy.input.action.gui.EditorBuilder(EditActionsDialog, IAction, String, Class) + + + At EditorBuilder.java:[line 47] + + + At EditorBuilder.java:[line 47] + + + + Field not initialized in constructor but dereferenced without null check + KeystrokeEditorBuilder.keyList not initialized in constructor and dereferenced in de.bwravencl.controllerbuddy.input.action.gui.KeystrokeEditorBuilder.lambda$buildEditor$3(String) + + + At KeystrokeEditorBuilder.java:[lines 54-151] + + In class de.bwravencl.controllerbuddy.input.action.gui.KeystrokeEditorBuilder + + + + In KeystrokeEditorBuilder.java + + Field de.bwravencl.controllerbuddy.input.action.gui.KeystrokeEditorBuilder.keyList + + + + In method de.bwravencl.controllerbuddy.input.action.gui.KeystrokeEditorBuilder.lambda$buildEditor$3(String) + + + At KeystrokeEditorBuilder.java:[line 135] + + + + Field not initialized in constructor but dereferenced without null check + KeystrokeEditorBuilder.modifierList not initialized in constructor and dereferenced in de.bwravencl.controllerbuddy.input.action.gui.KeystrokeEditorBuilder.lambda$buildEditor$1(String) + + + At KeystrokeEditorBuilder.java:[lines 54-151] + + In class de.bwravencl.controllerbuddy.input.action.gui.KeystrokeEditorBuilder + + + + In KeystrokeEditorBuilder.java + + Field de.bwravencl.controllerbuddy.input.action.gui.KeystrokeEditorBuilder.modifierList + + + + In method de.bwravencl.controllerbuddy.input.action.gui.KeystrokeEditorBuilder.lambda$buildEditor$1(String) + + + At KeystrokeEditorBuilder.java:[line 110] + + + + Be wary of letting constructors throw exceptions. + Exception thrown in class de.bwravencl.controllerbuddy.input.action.gui.NumberEditorBuilder at new de.bwravencl.controllerbuddy.input.action.gui.NumberEditorBuilder(EditActionsDialog, IAction, String, Class) will leave the constructor. The object under construction remains partially initialized and may be vulnerable to Finalizer attacks. + + + At NumberEditorBuilder.java:[lines 39-74] + + In class de.bwravencl.controllerbuddy.input.action.gui.NumberEditorBuilder + + + + In method new de.bwravencl.controllerbuddy.input.action.gui.NumberEditorBuilder(EditActionsDialog, IAction, String, Class) + + + At NumberEditorBuilder.java:[line 51] + + + At NumberEditorBuilder.java:[line 51] + + + + Field not initialized in constructor but dereferenced without null check + NumberEditorBuilder.textField not initialized in constructor and dereferenced in de.bwravencl.controllerbuddy.input.action.gui.ButtonEditorBuilder.buildEditor(JPanel) + + + At NumberEditorBuilder.java:[lines 39-74] + + In class de.bwravencl.controllerbuddy.input.action.gui.NumberEditorBuilder + + + + In NumberEditorBuilder.java + + Field de.bwravencl.controllerbuddy.input.action.gui.NumberEditorBuilder.textField + + + + In method de.bwravencl.controllerbuddy.input.action.gui.ButtonEditorBuilder.buildEditor(JPanel) + + + At ButtonEditorBuilder.java:[line 47] + + + + Do not reuse public identifiers from JSL as class name + Class name ?>?1/1??? in source file ?>?2/1??? shadows the publicly available identifier from the Java Standard Library. + + + At Driver.java:[lines 30-87] + + In class de.bwravencl.controllerbuddy.input.driver.Driver + + + At Driver.java:[lines 30-87] + + + + Be wary of letting constructors throw exceptions. + Exception thrown in class de.bwravencl.controllerbuddy.input.driver.EvdevDriver at new de.bwravencl.controllerbuddy.input.driver.EvdevDriver(Input, Main$ControllerInfo, EvdevDriver$EvdevInfo) will leave the constructor. The object under construction remains partially initialized and may be vulnerable to Finalizer attacks. + + + At EvdevDriver.java:[lines 42-171] + + In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver + + + + In method new de.bwravencl.controllerbuddy.input.driver.EvdevDriver(Input, Main$ControllerInfo, EvdevDriver$EvdevInfo) + + + At EvdevDriver.java:[line 68] + + + At EvdevDriver.java:[line 68] @@ -1585,7 +1931,7 @@ In method de.bwravencl.controllerbuddy.input.driver.EvdevDriver.createRumbleEffect(short) - + In EvdevDriver.java @@ -1608,7 +1954,7 @@ In method de.bwravencl.controllerbuddy.input.driver.EvdevDriver.createRumbleEffect(short) - + In EvdevDriver.java @@ -1644,13 +1990,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_condition_effect.center - - - At EvdevDriver.java:[line 309] + + + At EvdevDriver.java:[line 311] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_condition_effect - + In EvdevDriver.java @@ -1663,13 +2009,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_condition_effect.deadband - - - At EvdevDriver.java:[line 309] + + + At EvdevDriver.java:[line 311] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_condition_effect - + In EvdevDriver.java @@ -1682,13 +2028,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_condition_effect.left_coeff - - - At EvdevDriver.java:[line 309] + + + At EvdevDriver.java:[line 311] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_condition_effect - + In EvdevDriver.java @@ -1701,13 +2047,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_condition_effect.left_saturation - - - At EvdevDriver.java:[line 309] + + + At EvdevDriver.java:[line 311] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_condition_effect - + In EvdevDriver.java @@ -1720,13 +2066,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_condition_effect.right_coeff - - - At EvdevDriver.java:[line 309] + + + At EvdevDriver.java:[line 311] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_condition_effect - + In EvdevDriver.java @@ -1739,13 +2085,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_condition_effect.right_saturation - - - At EvdevDriver.java:[line 309] + + + At EvdevDriver.java:[line 311] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_condition_effect - + In EvdevDriver.java @@ -1758,13 +2104,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_constant_effect.envelope - - - At EvdevDriver.java:[line 320] + + + At EvdevDriver.java:[line 323] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_constant_effect - + In EvdevDriver.java @@ -1777,13 +2123,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_constant_effect.level - - - At EvdevDriver.java:[line 320] + + + At EvdevDriver.java:[line 323] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_constant_effect - + In EvdevDriver.java @@ -1796,49 +2142,49 @@ Read of unwritten public or protected field Read of unwritten public or protected field u in de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect.read() - - - At EvdevDriver.java:[lines 327-350] + + + At EvdevDriver.java:[lines 331-354] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect - - + + In method de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect.read() - + In EvdevDriver.java Field de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect.u - - At EvdevDriver.java:[line 342] + + At EvdevDriver.java:[line 346] - - Another occurrence at EvdevDriver.java:[line 344] + + Another occurrence at EvdevDriver.java:[line 348] - - Another occurrence at EvdevDriver.java:[line 341] + + Another occurrence at EvdevDriver.java:[line 345] - - Another occurrence at EvdevDriver.java:[line 343] + + Another occurrence at EvdevDriver.java:[line 347] - - Another occurrence at EvdevDriver.java:[line 345] + + Another occurrence at EvdevDriver.java:[line 349] Read of unwritten public or protected field Read of unwritten public or protected field constant in de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect.read() - - - At EvdevDriver.java:[lines 327-350] + + + At EvdevDriver.java:[lines 331-354] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect - - + + In method de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect.read() @@ -1847,21 +2193,21 @@ Field de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect$U.constant - - At EvdevDriver.java:[line 343] + + At EvdevDriver.java:[line 347] Read of unwritten public or protected field Read of unwritten public or protected field periodic in de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect.read() - - - At EvdevDriver.java:[lines 327-350] + + + At EvdevDriver.java:[lines 331-354] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect - - + + In method de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect.read() @@ -1870,21 +2216,21 @@ Field de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect$U.periodic - - At EvdevDriver.java:[line 342] + + At EvdevDriver.java:[line 346] Read of unwritten public or protected field Read of unwritten public or protected field ramp in de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect.read() - - - At EvdevDriver.java:[lines 327-350] + + + At EvdevDriver.java:[lines 331-354] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect - - + + In method de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect.read() @@ -1893,21 +2239,21 @@ Field de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect$U.ramp - - At EvdevDriver.java:[line 345] + + At EvdevDriver.java:[line 349] Read of unwritten public or protected field Read of unwritten public or protected field rumble in de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect.read() - - - At EvdevDriver.java:[lines 327-350] + + + At EvdevDriver.java:[lines 331-354] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect - - + + In method de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect.read() @@ -1916,20 +2262,20 @@ Field de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect$U.rumble - - At EvdevDriver.java:[line 341] + + At EvdevDriver.java:[line 345] Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect.direction - - - At EvdevDriver.java:[lines 327-350] + + + At EvdevDriver.java:[lines 331-354] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect - + In EvdevDriver.java @@ -1942,13 +2288,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect.trigger - - - At EvdevDriver.java:[lines 327-350] + + + At EvdevDriver.java:[lines 331-354] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect - + In EvdevDriver.java @@ -1961,13 +2307,13 @@ Unwritten public or protected field Unwritten public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect.replay - - - At EvdevDriver.java:[lines 327-350] + + + At EvdevDriver.java:[lines 331-354] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect - + In EvdevDriver.java @@ -1980,13 +2326,13 @@ Unwritten public or protected field Unwritten public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect.u - - - At EvdevDriver.java:[lines 327-350] + + + At EvdevDriver.java:[lines 331-354] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect - + In EvdevDriver.java @@ -2000,8 +2346,8 @@ Unwritten public or protected field Unwritten public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect$U.constant - - At EvdevDriver.java:[lines 354-360] + + At EvdevDriver.java:[lines 358-364] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect$U @@ -2011,16 +2357,16 @@ Field de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect$U.constant - - At EvdevDriver.java:[line 343] + + At EvdevDriver.java:[line 347] Unwritten public or protected field Unwritten public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect$U.periodic - - At EvdevDriver.java:[lines 354-360] + + At EvdevDriver.java:[lines 358-364] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect$U @@ -2030,16 +2376,16 @@ Field de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect$U.periodic - - At EvdevDriver.java:[line 342] + + At EvdevDriver.java:[line 346] Unwritten public or protected field Unwritten public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect$U.ramp - - At EvdevDriver.java:[lines 354-360] + + At EvdevDriver.java:[lines 358-364] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect$U @@ -2049,16 +2395,16 @@ Field de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect$U.ramp - - At EvdevDriver.java:[line 345] + + At EvdevDriver.java:[line 349] Unwritten public or protected field Unwritten public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect$U.rumble - - At EvdevDriver.java:[lines 354-360] + + At EvdevDriver.java:[lines 358-364] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_effect$U @@ -2075,13 +2421,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_envelope.attack_length - - - At EvdevDriver.java:[line 365] + + + At EvdevDriver.java:[line 370] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_envelope - + In EvdevDriver.java @@ -2094,13 +2440,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_envelope.attack_level - - - At EvdevDriver.java:[line 365] + + + At EvdevDriver.java:[line 370] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_envelope - + In EvdevDriver.java @@ -2113,13 +2459,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_envelope.fade_length - - - At EvdevDriver.java:[line 365] + + + At EvdevDriver.java:[line 370] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_envelope - + In EvdevDriver.java @@ -2132,13 +2478,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_envelope.fade_level - - - At EvdevDriver.java:[line 365] + + + At EvdevDriver.java:[line 370] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_envelope - + In EvdevDriver.java @@ -2151,13 +2497,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_periodic_effect.custom_data - - - At EvdevDriver.java:[line 374] + + + At EvdevDriver.java:[line 380] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_periodic_effect - + In EvdevDriver.java @@ -2170,13 +2516,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_periodic_effect.custom_len - - - At EvdevDriver.java:[line 374] + + + At EvdevDriver.java:[line 380] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_periodic_effect - + In EvdevDriver.java @@ -2189,13 +2535,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_periodic_effect.envelope - - - At EvdevDriver.java:[line 374] + + + At EvdevDriver.java:[line 380] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_periodic_effect - + In EvdevDriver.java @@ -2208,13 +2554,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_periodic_effect.magnitude - - - At EvdevDriver.java:[line 374] + + + At EvdevDriver.java:[line 380] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_periodic_effect - + In EvdevDriver.java @@ -2227,13 +2573,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_periodic_effect.offset - - - At EvdevDriver.java:[line 374] + + + At EvdevDriver.java:[line 380] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_periodic_effect - + In EvdevDriver.java @@ -2246,13 +2592,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_periodic_effect.period - - - At EvdevDriver.java:[line 374] + + + At EvdevDriver.java:[line 380] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_periodic_effect - + In EvdevDriver.java @@ -2265,13 +2611,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_periodic_effect.phase - - - At EvdevDriver.java:[line 374] + + + At EvdevDriver.java:[line 380] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_periodic_effect - + In EvdevDriver.java @@ -2284,13 +2630,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_periodic_effect.waveform - - - At EvdevDriver.java:[line 374] + + + At EvdevDriver.java:[line 380] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_periodic_effect - + In EvdevDriver.java @@ -2303,13 +2649,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_ramp_effect.end_level - - - At EvdevDriver.java:[line 387] + + + At EvdevDriver.java:[line 394] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_ramp_effect - + In EvdevDriver.java @@ -2322,13 +2668,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_ramp_effect.envelope - - - At EvdevDriver.java:[line 387] + + + At EvdevDriver.java:[line 394] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_ramp_effect - + In EvdevDriver.java @@ -2341,13 +2687,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_ramp_effect.start_level - - - At EvdevDriver.java:[line 387] + + + At EvdevDriver.java:[line 394] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_ramp_effect - + In EvdevDriver.java @@ -2360,13 +2706,13 @@ Unread public/protected field Unread public/protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_replay.length - - - At EvdevDriver.java:[line 395] + + + At EvdevDriver.java:[line 403] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_replay - + In EvdevDriver.java @@ -2379,13 +2725,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_replay.delay - - - At EvdevDriver.java:[line 395] + + + At EvdevDriver.java:[line 403] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_replay - + In EvdevDriver.java @@ -2398,13 +2744,13 @@ Unread public/protected field Unread public/protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_rumble_effect.strong_magnitude - - - At EvdevDriver.java:[line 402] + + + At EvdevDriver.java:[line 411] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_rumble_effect - + In EvdevDriver.java @@ -2417,13 +2763,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_rumble_effect.weak_magnitude - - - At EvdevDriver.java:[line 402] + + + At EvdevDriver.java:[line 411] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_rumble_effect - + In EvdevDriver.java @@ -2436,13 +2782,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_trigger.button - - - At EvdevDriver.java:[line 409] + + + At EvdevDriver.java:[line 419] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_trigger - + In EvdevDriver.java @@ -2455,13 +2801,13 @@ Unused public or protected field Unused public or protected field: de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_trigger.interval - - - At EvdevDriver.java:[line 409] + + + At EvdevDriver.java:[line 419] In class de.bwravencl.controllerbuddy.input.driver.EvdevDriver$ff_trigger - + In EvdevDriver.java @@ -2471,6 +2817,26 @@ In EvdevDriver.java + + Be wary of letting constructors throw exceptions. + Exception thrown in class de.bwravencl.controllerbuddy.input.driver.XInputDriver at new de.bwravencl.controllerbuddy.input.driver.XInputDriver(Input, Main$ControllerInfo) will leave the constructor. The object under construction remains partially initialized and may be vulnerable to Finalizer attacks. + + + At XInputDriver.java:[lines 45-243] + + In class de.bwravencl.controllerbuddy.input.driver.XInputDriver + + + + In method new de.bwravencl.controllerbuddy.input.driver.XInputDriver(Input, Main$ControllerInfo) + + + At XInputDriver.java:[line 48] + + + At XInputDriver.java:[line 48] + + Consider returning a zero length array rather than null Should de.bwravencl.controllerbuddy.input.driver.sony.DualSenseDriver.getDefaultHidReport() return a zero length array rather than null? @@ -2492,8 +2858,8 @@ Consider returning a zero length array rather than null Should de.bwravencl.controllerbuddy.input.driver.sony.DualShock4Driver.getDefaultHidReport() return a zero length array rather than null? - - At DualShock4Driver.java:[lines 31-169] + + At DualShock4Driver.java:[lines 31-167] In class de.bwravencl.controllerbuddy.input.driver.sony.DualShock4Driver @@ -2505,6 +2871,19 @@ At DualShock4Driver.java:[line 56] + + Do not reuse public identifiers from JSL as class name + Class name ?>?1/1??? in source file ?>?2/1??? shadows the publicly available identifier from the Java Standard Library. + + + At SonyDriver.java:[lines 699-702] + + In class de.bwravencl.controllerbuddy.input.driver.sony.SonyDriver$Connection + + + At SonyDriver.java:[lines 699-702] + + May expose internal representation by returning reference to mutable object de.bwravencl.controllerbuddy.json.ActionTypeAdapter.getUnknownActionClasses() may expose internal representation by returning ActionTypeAdapter.unknownActionClasses @@ -2624,6 +3003,32 @@ At ScanCodeAdapter.java:[line 37] + + Field not initialized in constructor but dereferenced without null check + ClientRunMode.clientSocket not initialized in constructor and dereferenced in de.bwravencl.controllerbuddy.runmode.ClientRunMode.readInput() + + + At ClientRunMode.java:[lines 55-377] + + In class de.bwravencl.controllerbuddy.runmode.ClientRunMode + + + + In ClientRunMode.java + + Field de.bwravencl.controllerbuddy.runmode.ClientRunMode.clientSocket + + + + In method de.bwravencl.controllerbuddy.runmode.ClientRunMode.readInput() + + + At ClientRunMode.java:[line 107] + + + Another occurrence at ClientRunMode.java:[line 181] + + May expose internal representation by incorporating reference to mutable object de.bwravencl.controllerbuddy.runmode.OutputRunMode.setvJoyDevice(WinDef$UINT) may expose internal representation by storing an externally mutable object into OutputRunMode.vJoyDevice @@ -2650,6 +3055,95 @@ At OutputRunMode.java:[line 750] + + Field not initialized in constructor but dereferenced without null check + OutputRunMode.buttons not initialized in constructor and dereferenced in de.bwravencl.controllerbuddy.runmode.ClientRunMode.readInput() + + + At OutputRunMode.java:[lines 71-1011] + + In class de.bwravencl.controllerbuddy.runmode.OutputRunMode + + + + In OutputRunMode.java + + Field de.bwravencl.controllerbuddy.runmode.OutputRunMode.buttons + + + + In method de.bwravencl.controllerbuddy.runmode.ClientRunMode.readInput() + + + At ClientRunMode.java:[line 217] + + + + Field not initialized in constructor but dereferenced without null check + OutputRunMode.buttons not initialized in constructor and dereferenced in de.bwravencl.controllerbuddy.runmode.LocalRunMode.readInput() + + + At OutputRunMode.java:[lines 71-1011] + + In class de.bwravencl.controllerbuddy.runmode.OutputRunMode + + + + In OutputRunMode.java + + Field de.bwravencl.controllerbuddy.runmode.OutputRunMode.buttons + + + + In method de.bwravencl.controllerbuddy.runmode.LocalRunMode.readInput() + + + At LocalRunMode.java:[line 78] + + + + Field not initialized in constructor but dereferenced without null check + OutputRunMode.buttons not initialized in constructor and dereferenced in de.bwravencl.controllerbuddy.runmode.OutputRunMode.writeOutput() + + + At OutputRunMode.java:[lines 71-1011] + + In class de.bwravencl.controllerbuddy.runmode.OutputRunMode + + + + In OutputRunMode.java + + Field de.bwravencl.controllerbuddy.runmode.OutputRunMode.buttons + + + + In method de.bwravencl.controllerbuddy.runmode.OutputRunMode.writeOutput() + + + At OutputRunMode.java:[line 861] + + + + Be wary of letting constructors throw exceptions. + Exception thrown in class de.bwravencl.controllerbuddy.runmode.OutputRunMode$DeviceValue at new de.bwravencl.controllerbuddy.runmode.OutputRunMode$DeviceValue(Class) will leave the constructor. The object under construction remains partially initialized and may be vulnerable to Finalizer attacks. + + + At OutputRunMode.java:[lines 1033-1074] + + In class de.bwravencl.controllerbuddy.runmode.OutputRunMode$DeviceValue + + + + In method new de.bwravencl.controllerbuddy.runmode.OutputRunMode$DeviceValue(Class) + + + At OutputRunMode.java:[line 1041] + + + At OutputRunMode.java:[line 1041] + + An overridable method is called from a constructor Overridable method setRunMode is called from constructor new de.bwravencl.controllerbuddy.runmode.RunMode(Main, Input). @@ -2670,6 +3164,42 @@ At RunMode.java:[line 41] + + Field not initialized in constructor but dereferenced without null check + ServerRunMode.clientIPAddress not initialized in constructor and dereferenced in de.bwravencl.controllerbuddy.runmode.ServerRunMode.lambda$run$1(int) + + + At ServerRunMode.java:[lines 50-257] + + In class de.bwravencl.controllerbuddy.runmode.ServerRunMode + + + + In ServerRunMode.java + + Field de.bwravencl.controllerbuddy.runmode.ServerRunMode.clientIPAddress + + + + In method de.bwravencl.controllerbuddy.runmode.ServerRunMode.lambda$run$1(int) + + + At ServerRunMode.java:[line 126] + + + + Do not reuse public identifiers from JSL as class name + Class name ?>?1/1??? in source file ?>?2/1??? shadows the publicly available identifier from the Java Standard Library. + + + At Version.java:[line 3] + + In class de.bwravencl.controllerbuddy.version.Version + + + At Version.java:[line 3] + + Bad practice @@ -2685,6 +3215,19 @@ Multithreaded correctness + + Field not initialized in constructor but dereferenced without null check +
This field is never initialized within any constructor, and is therefore could be null after +the object is constructed. Elsewhere, it is loaded and dereferenced without a null check. +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. +

+ + ]]>
+
Unread public/protected field
- Public static method may expose internal representation by returning array + Public static method may expose internal representation by returning a mutable object or array
A public static method returns a reference to +

A public static method returns a reference to a mutable object or an array that is part of the static state of the class. Any code that calls this method can freely modify the underlying array. @@ -2785,6 +3328,20 @@ cast will not fail. ]]>

+ + Be wary of letting constructors throw exceptions. +
Classes that throw exceptions in their constructors are vulnerable to Finalizer attacks

+ +

A finalizer attack can be prevented, by declaring the class final, using an empty finalizer declared as final, or by a clever use of a private constructor.

+ +

See SEI CERT Rule OBJ-11 + for more information. +

+ + ]]>
+
Explicit garbage collection; extremely dubious except in benchmarking code
+ + Do not reuse public identifiers from JSL as class name +
+ It's essential to avoid reusing public identifiers from the Java Standard Library as class names. + This is because the Java Standard Library is a part of the Java platform and is expected to be available in all Java environments. + Doing so can lead to naming conflicts and confusion, making it harder to understand and maintain the code. + It's best practice to choose unique and descriptive class names that accurately represent the purpose and functionality of your own code. + To provide an example, let's say you want to create a class for handling dates in your application. Instead of using a common name like "Date", + which conflicts with the existing java.util.Date class, you could choose a more specific and unique name like or "AppDate" or "DisplayDate". + + A few key points to keep in mind when choosing names as identifier: +
    +
  • Use meaningful prefixes or namespaces: Prepend a project-specific prefix or namespace to your class names to make them distinct. For example, if your project is named "MyApp", you could use "MyAppDate" as your class name.
  • +
  • Use descriptive names: Opt for descriptive class names that clearly indicate their purpose and functionality. This helps avoid shadowing existing Java Standard Library identifiers. For instance, instead of "List", consider using "CustomAppList".
  • +
  • Follow naming conventions: Adhere to Java's naming conventions, such as using camel case (e.g., MyClass) for class names. This promotes code readability and reduces the chances of conflicts.
  • +
+ +

+

See SEI CERT rule DCL01-J. Do not reuse public identifiers from the Java Standard Library.

+ + ]]>
+
Naked notify
Storing reference to mutable object + + Constructor throws + Switch case falls through Dangerous call to overridable method + + Do not reuse public identifiers from Java Standard Library + Prefer zero length arrays to null to indicate no results @@ -2996,31 +3582,46 @@ defined in an interface references a mutable edu.umd.cs.findbugs.FindBugs2.main(FindBugs2.java:1221) - - - - - - - - + + + + + + + + - - + + - - + + + + + + + + + + + + + - + + + + +