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