chore: forbid use ArrayList as a variable type

This commit is contained in:
Skylot 2024-08-07 00:28:39 +01:00
parent ffbf800404
commit 2d58fbd4b1
No known key found for this signature in database
GPG Key ID: 47A4975761262B6A
14 changed files with 34 additions and 31 deletions

View File

@ -120,7 +120,10 @@
<module name="SuppressWarningsHolder"/>
<module name="IllegalType"/>
<module name="IllegalType">
<property name="illegalClassNames" value="java.util.ArrayList, java.util.HashMap, java.util.HashSet,
java.util.LinkedHashMap, java.util.LinkedHashSet, java.util.TreeMap, java.util.TreeSet"/>
</module>
<module name="IllegalImport">
<property name="illegalClasses" value="jadx.core.utils.DebugUtils"/>
</module>
@ -128,7 +131,8 @@
<property name="id" value="printstacktrace"/>
<property name="format" value="\.printStackTrace\(\)"/>
<property name="ignoreComments" value="true"/>
<property name="message" value="Using Throwable.printStackTrace() is forbidden. Use logger to print exception"/>
<property name="message"
value="Using Throwable.printStackTrace() is forbidden. Use logger to print exception"/>
</module>
</module>

View File

@ -202,7 +202,7 @@ public class SignatureProcessor extends AbstractVisitor {
}
if (mthInfo.isConstructor() && !mthArgTypes.isEmpty() && !parsedArgTypes.isEmpty()) {
// add synthetic arg for outer class (see test TestGeneric8)
ArrayList<ArgType> newArgTypes = new ArrayList<>(parsedArgTypes);
List<ArgType> newArgTypes = new ArrayList<>(parsedArgTypes);
newArgTypes.add(0, mthArgTypes.get(0));
if (newArgTypes.size() == mthArgTypes.size()) {
return newArgTypes;

View File

@ -256,7 +256,7 @@ public class TypeSearch {
} else {
varInfo.setTypeResolved(false);
varInfo.setCurrentType(ArgType.UNKNOWN);
ArrayList<ArgType> types = new ArrayList<>(candidateTypes);
List<ArgType> types = new ArrayList<>(candidateTypes);
types.sort(typeCompare.getReversedComparator());
varInfo.setCandidateTypes(Collections.unmodifiableList(types));
}

View File

@ -15,6 +15,7 @@ import static org.hamcrest.Matchers.is;
public class TestCastInOverloadedInvoke extends IntegrationTest {
@SuppressWarnings("IllegalType")
public static class TestCls {
int c = 0;

View File

@ -14,6 +14,7 @@ import static org.hamcrest.Matchers.is;
public class TestHierarchyOverloadedInvoke extends IntegrationTest {
@SuppressWarnings("IllegalType")
public static class TestCls {
static int c = 0;
B b = new B();

View File

@ -1,5 +1,7 @@
package jadx.tests.integration.loops;
import java.util.List;
import org.junit.jupiter.api.Test;
import jadx.core.dex.nodes.ClassNode;
@ -11,7 +13,7 @@ import static org.hamcrest.MatcherAssert.assertThat;
public class TestLoopCondition extends IntegrationTest {
public static class TestCls {
public void test(java.util.ArrayList<String> list) {
public void test(List<String> list) {
for (int i = 0; i != 16 && i < 255; i++) {
list.set(i, "ABC");
if (i == 128) {

View File

@ -7,6 +7,7 @@ import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
@ -24,7 +25,7 @@ public class LogcatController {
private Timer timer;
private final String timezone;
private LogcatInfo recent = null;
private ArrayList<LogcatInfo> events = new ArrayList<>();
private List<LogcatInfo> events = new ArrayList<>();
private LogcatFilter filter = new LogcatFilter(null, null);
private String status = "null";
@ -163,8 +164,8 @@ public class LogcatController {
}
public class LogcatFilter {
private final ArrayList<Integer> pid;
private ArrayList<Byte> msgType = new ArrayList<Byte>() {
private final List<Integer> pid;
private List<Byte> msgType = new ArrayList<>() {
{
add((byte) 1);
add((byte) 2);
@ -239,8 +240,8 @@ public class LogcatController {
return false;
}
public ArrayList<LogcatInfo> getFilteredList(ArrayList<LogcatInfo> inInfoList) {
ArrayList<LogcatInfo> outInfoList = new ArrayList<LogcatInfo>();
public List<LogcatInfo> getFilteredList(List<LogcatInfo> inInfoList) {
List<LogcatInfo> outInfoList = new ArrayList<>();
inInfoList.forEach((inInfo) -> {
if (doFilter(inInfo)) {
outInfoList.add(inInfo);

View File

@ -4,6 +4,7 @@ import java.awt.GraphicsEnvironment;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.slf4j.Logger;
@ -28,7 +29,7 @@ public class JPreferredFontChooser extends JFontChooser {
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
Set<String> fontSet = new HashSet<>();
Collections.addAll(fontSet, env.getAvailableFontFamilyNames());
ArrayList<String> found = new ArrayList<>(PREFERRED_FONTS.length);
List<String> found = new ArrayList<>(PREFERRED_FONTS.length);
for (String font : PREFERRED_FONTS) {
if (fontSet.contains(font)) {
found.add(font);

View File

@ -1,6 +1,5 @@
package jadx.gui.settings.ui;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
@ -52,7 +51,7 @@ public class SettingsTree extends JTree {
}
private static void setNodeExpandedState(JTree tree, TreeNode node, boolean expanded) {
ArrayList<? extends TreeNode> list = Collections.list(node.children());
List<? extends TreeNode> list = Collections.list(node.children());
for (TreeNode treeNode : list) {
setNodeExpandedState(tree, treeNode, expanded);
}

View File

@ -75,7 +75,7 @@ public class LogcatPanel extends JPanel {
this.debugPanel = debugPanel;
}
private ArrayList<Integer> pids;
private List<Integer> pids;
private JScrollPane logcatScroll;
private int pid;
@ -96,7 +96,7 @@ public class LogcatPanel extends JPanel {
public boolean showLogcat() {
this.removeAll();
ArrayList<String> pkgs = new ArrayList<>();
List<String> pkgs = new ArrayList<>();
pids = new ArrayList<>();
JPanel procBox;
for (ADB.Process proc : procs.subList(1, procs.size())) { // skipping first element because it contains the column label
@ -371,20 +371,14 @@ public class LogcatPanel extends JPanel {
}
}
class CheckComboRenderer implements ListCellRenderer {
JCheckBox checkBox;
ArrayList<JCheckBox> boxes = new ArrayList<>();
public CheckComboRenderer() {
checkBox = new JCheckBox();
}
private static class CheckComboRenderer implements ListCellRenderer {
private final JCheckBox checkBox = new JCheckBox();
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
CheckComboStore store = (CheckComboStore) value;
checkBox.setText(store.id);
checkBox.setSelected(store.state);
boxes.add(checkBox);
return checkBox;
}
}

View File

@ -1,6 +1,6 @@
package jadx.gui.ui.tab;
import java.util.ArrayList;
import java.util.List;
import jadx.gui.ui.codearea.EditorViewState;
@ -23,7 +23,7 @@ public interface ITabStatesListener {
void onTabsRestoreDone();
void onTabsReorder(ArrayList<TabBlueprint> blueprints);
void onTabsReorder(List<TabBlueprint> blueprints);
void onTabSave(TabBlueprint blueprint, EditorViewState viewState);
}

View File

@ -6,7 +6,7 @@ import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JPopupMenu;
import javax.swing.JTree;
@ -238,7 +238,7 @@ public class QuickTabsTree extends JTree implements ITabStatesListener, TreeSele
}
@Override
public void onTabsReorder(ArrayList<TabBlueprint> blueprints) {
public void onTabsReorder(List<TabBlueprint> blueprints) {
}

View File

@ -569,8 +569,8 @@ public class TabbedPane extends JTabbedPane implements ITabStatesListener {
}
@Override
public void onTabsReorder(ArrayList<TabBlueprint> blueprints) {
ArrayList<TabBlueprint> newBlueprints = new ArrayList<>();
public void onTabsReorder(List<TabBlueprint> blueprints) {
List<TabBlueprint> newBlueprints = new ArrayList<>();
for (ContentPanel contentPanel : getTabs()) {
Optional<TabBlueprint> blueprintFindResult = blueprints.stream()
.filter(b -> b.getNode() == contentPanel.getNode())

View File

@ -15,7 +15,7 @@ import jadx.gui.ui.codearea.EditorViewState;
public class TabsController {
private final transient MainWindow mainWindow;
private final Map<JNode, TabBlueprint> tabsMap = new HashMap<>();
private final ArrayList<ITabStatesListener> listeners = new ArrayList<>();
private final List<ITabStatesListener> listeners = new ArrayList<>();
private boolean forceClose;
@ -223,7 +223,7 @@ public class TabsController {
}
public List<EditorViewState> getEditorViewStates() {
ArrayList<TabBlueprint> reorderedTabs = new ArrayList<>(tabsMap.values());
List<TabBlueprint> reorderedTabs = new ArrayList<>(tabsMap.values());
listeners.forEach(l -> l.onTabsReorder(reorderedTabs));
List<EditorViewState> states = new ArrayList<>();
for (TabBlueprint blueprint : reorderedTabs) {