From cd612b452cf4dd860c8c1b565a13193096952bc7 Mon Sep 17 00:00:00 2001 From: Skylot Date: Fri, 6 Nov 2020 17:24:12 +0000 Subject: [PATCH] chore: resolve some warnings reported by IntelliJ Idea --- jadx-core/src/main/java/jadx/api/JadxDecompiler.java | 6 +++--- .../main/java/jadx/core/codegen/AnnotationGen.java | 7 +++++-- .../src/main/java/jadx/core/codegen/ClassGen.java | 3 --- .../src/main/java/jadx/core/codegen/CodeWriter.java | 8 ++------ .../src/main/java/jadx/core/deobf/Deobfuscator.java | 5 +---- .../java/jadx/core/deobf/OverridedMethodsNode.java | 2 +- .../src/main/java/jadx/core/dex/nodes/InsnNode.java | 1 + .../src/main/java/jadx/core/dex/nodes/RootNode.java | 1 + .../jadx/core/dex/nodes/parser/SignatureParser.java | 1 + .../core/dex/visitors/OverrideMethodVisitor.java | 2 +- .../dex/visitors/regions/ProcessTryCatchRegions.java | 9 +++------ .../jadx/core/dex/visitors/regions/RegionMaker.java | 2 +- .../jadx/core/dex/visitors/regions/RegionStack.java | 12 ++++++------ .../typeinference/AbstractTypeConstraint.java | 4 ++-- .../dex/visitors/typeinference/TypeSearchState.java | 2 +- .../java/jadx/core/export/ExportGradleProject.java | 4 ++-- .../src/main/java/jadx/core/utils/DebugChecks.java | 2 +- .../main/java/jadx/core/utils/EncodedValueUtils.java | 1 + .../src/main/java/jadx/core/utils/ImmutableList.java | 2 +- .../java/jadx/core/utils/android/ExtDataInput.java | 2 +- .../main/java/jadx/core/xmlgen/BinaryXMLParser.java | 2 +- .../main/java/jadx/core/xmlgen/ResourcesSaver.java | 2 +- 22 files changed, 37 insertions(+), 43 deletions(-) diff --git a/jadx-core/src/main/java/jadx/api/JadxDecompiler.java b/jadx-core/src/main/java/jadx/api/JadxDecompiler.java index c103a9257..14f7db9a4 100644 --- a/jadx-core/src/main/java/jadx/api/JadxDecompiler.java +++ b/jadx-core/src/main/java/jadx/api/JadxDecompiler.java @@ -69,9 +69,9 @@ import jadx.core.xmlgen.ResourcesSaver; public final class JadxDecompiler implements Closeable { private static final Logger LOG = LoggerFactory.getLogger(JadxDecompiler.class); - private JadxArgs args; - private JadxPluginManager pluginManager = new JadxPluginManager(); - private List loadedInputs = new ArrayList<>(); + private final JadxArgs args; + private final JadxPluginManager pluginManager = new JadxPluginManager(); + private final List loadedInputs = new ArrayList<>(); private RootNode root; private List classes; diff --git a/jadx-core/src/main/java/jadx/core/codegen/AnnotationGen.java b/jadx-core/src/main/java/jadx/core/codegen/AnnotationGen.java index 2ec79bb09..e66f79fd0 100644 --- a/jadx-core/src/main/java/jadx/core/codegen/AnnotationGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/AnnotationGen.java @@ -133,8 +133,11 @@ public class AnnotationGen { public EncodedValue getAnnotationDefaultValue(String name) { IAnnotation an = cls.getAnnotation(Consts.DALVIK_ANNOTATION_DEFAULT); if (an != null) { - IAnnotation defAnnotation = (IAnnotation) an.getDefaultValue().getValue(); - return defAnnotation.getValues().get(name); + EncodedValue defValue = an.getDefaultValue(); + if (defValue != null) { + IAnnotation defAnnotation = (IAnnotation) defValue.getValue(); + return defAnnotation.getValues().get(name); + } } return null; } diff --git a/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java b/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java index 6e63191dc..e2f04c3b0 100644 --- a/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java @@ -234,11 +234,8 @@ public class ClassGen { } /** - * - * @param clsCode * @param printClassName allows to print the original class name as comment (e.g. for inlined * classes) - * @throws CodegenException */ public void addClassBody(CodeWriter clsCode, boolean printClassName) throws CodegenException { clsCode.add('{'); diff --git a/jadx-core/src/main/java/jadx/core/codegen/CodeWriter.java b/jadx-core/src/main/java/jadx/core/codegen/CodeWriter.java index ccd7489f3..b3d5e738e 100644 --- a/jadx-core/src/main/java/jadx/core/codegen/CodeWriter.java +++ b/jadx-core/src/main/java/jadx/core/codegen/CodeWriter.java @@ -14,6 +14,7 @@ import jadx.api.ICodeInfo; import jadx.api.impl.SimpleCodeInfo; import jadx.core.dex.attributes.nodes.LineAttrNode; import jadx.core.utils.StringUtils; +import jadx.core.utils.Utils; public class CodeWriter { private static final Logger LOG = LoggerFactory.getLogger(CodeWriter.class); @@ -153,17 +154,12 @@ public class CodeWriter { return this; } - @SuppressWarnings("StringRepeatCanBeUsed") private void updateIndent() { int curIndent = indent; if (curIndent < INDENT_CACHE.length) { this.indentStr = INDENT_CACHE[curIndent]; } else { - StringBuilder s = new StringBuilder(curIndent * INDENT_STR.length()); - for (int i = 0; i < curIndent; i++) { - s.append(INDENT_STR); - } - this.indentStr = s.toString(); + this.indentStr = Utils.strRepeat(INDENT_STR, curIndent); } } diff --git a/jadx-core/src/main/java/jadx/core/deobf/Deobfuscator.java b/jadx-core/src/main/java/jadx/core/deobf/Deobfuscator.java index e5c75fbee..1b0cfc94d 100644 --- a/jadx-core/src/main/java/jadx/core/deobf/Deobfuscator.java +++ b/jadx-core/src/main/java/jadx/core/deobf/Deobfuscator.java @@ -368,7 +368,7 @@ public class Deobfuscator { public String getPkgAlias(ClassNode cls) { ClassInfo classInfo = cls.getClassInfo(); - PackageNode pkg = null; + PackageNode pkg; DeobfClsInfo deobfClsInfo = clsMap.get(classInfo); if (deobfClsInfo != null) { pkg = deobfClsInfo.getPkg(); @@ -420,9 +420,6 @@ public class Deobfuscator { /** * Generate a prefix for a class name that bases on certain class properties, certain * extended superclasses or implemented interfaces. - * - * @param cls - * @return */ private String makeClsPrefix(ClassNode cls) { if (cls.isEnum()) { diff --git a/jadx-core/src/main/java/jadx/core/deobf/OverridedMethodsNode.java b/jadx-core/src/main/java/jadx/core/deobf/OverridedMethodsNode.java index 7c4c0e855..bcfb536d5 100644 --- a/jadx-core/src/main/java/jadx/core/deobf/OverridedMethodsNode.java +++ b/jadx-core/src/main/java/jadx/core/deobf/OverridedMethodsNode.java @@ -6,7 +6,7 @@ import jadx.core.dex.info.MethodInfo; class OverridedMethodsNode { - private Set methods; + private final Set methods; public OverridedMethodsNode(Set methodsSet) { methods = methodsSet; diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/InsnNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/InsnNode.java index e81b7cd55..f0e5f2370 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/InsnNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/InsnNode.java @@ -454,6 +454,7 @@ public class InsnNode extends LineAttrNode { /** * Compare instruction only by identity. */ + @SuppressWarnings("EmptyMethod") @Override public final int hashCode() { return super.hashCode(); diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/RootNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/RootNode.java index bf509ed3e..605417d8e 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/RootNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/RootNode.java @@ -434,6 +434,7 @@ public class RootNode { return appPackage; } + @Nullable public ClassNode getAppResClass() { return appResClass; } diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/parser/SignatureParser.java b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/SignatureParser.java index c95f07cc5..6e5d82e62 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/parser/SignatureParser.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/SignatureParser.java @@ -259,6 +259,7 @@ public class SignatureParser { *

* Example: "" */ + @SuppressWarnings("ConditionalBreakInInfiniteLoop") public List consumeGenericTypeParameters() { if (!lookAhead('<')) { return Collections.emptyList(); diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/OverrideMethodVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/OverrideMethodVisitor.java index ffe693e6c..040ae209c 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/OverrideMethodVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/OverrideMethodVisitor.java @@ -84,7 +84,7 @@ public class OverrideMethodVisitor extends AbstractVisitor { } /** - * NOTE: Simplified version of method from {@link ModVisitor#isFieldVisibleInMethod} + * NOTE: Simplified version of method from ModVisitor.isFieldVisibleInMethod */ private boolean isMethodVisibleInCls(MethodNode superMth, ClassNode cls) { AccessInfo accessFlags = superMth.getAccessFlags(); diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/ProcessTryCatchRegions.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/ProcessTryCatchRegions.java index 8171f5000..6fb6a5dec 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/ProcessTryCatchRegions.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/ProcessTryCatchRegions.java @@ -38,12 +38,9 @@ public class ProcessTryCatchRegions extends AbstractRegionVisitor { Map tryBlocksMap = new HashMap<>(2); searchTryCatchDominators(mth, tryBlocksMap); - IRegionIterativeVisitor visitor = new IRegionIterativeVisitor() { - @Override - public boolean visitRegion(MethodNode mth, IRegion region) { - boolean changed = checkAndWrap(mth, tryBlocksMap, region); - return changed && !tryBlocksMap.isEmpty(); - } + IRegionIterativeVisitor visitor = (regionMth, region) -> { + boolean changed = checkAndWrap(regionMth, tryBlocksMap, region); + return changed && !tryBlocksMap.isEmpty(); }; DepthRegionTraversal.traverseIncludingExcHandlers(mth, visitor); } diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionMaker.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionMaker.java index ec2d88b7c..b937cc33b 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionMaker.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionMaker.java @@ -60,8 +60,8 @@ public class RegionMaker { private final MethodNode mth; private final int regionsLimit; + private final BitSet processedBlocks; private int regionsCount; - private BitSet processedBlocks; public RegionMaker(MethodNode mth) { this.mth = mth; diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionStack.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionStack.java index eaad5ddf2..4af41396b 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionStack.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionStack.java @@ -34,12 +34,13 @@ final class RegionStack { exits = new HashSet<>(4); } - private State(State c) { - exits = new HashSet<>(c.exits); + private State(State c, IRegion region) { + this.exits = new HashSet<>(c.exits); + this.region = region; } - public State copy() { - return new State(this); + public State copyWith(IRegion region) { + return new State(this, region); } @Override @@ -64,8 +65,7 @@ final class RegionStack { if (stack.size() > REGIONS_STACK_LIMIT) { throw new JadxOverflowException("Regions stack size limit reached"); } - curState = curState.copy(); - curState.region = region; + curState = curState.copyWith(region); if (DEBUG) { LOG.debug("Stack push: {}: {}", size(), curState); } diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/AbstractTypeConstraint.java b/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/AbstractTypeConstraint.java index 307dfc54f..adb45ab01 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/AbstractTypeConstraint.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/AbstractTypeConstraint.java @@ -11,8 +11,8 @@ import jadx.core.utils.Utils; public abstract class AbstractTypeConstraint implements ITypeConstraint { - protected InsnNode insn; - protected List relatedVars; + protected final InsnNode insn; + protected final List relatedVars; public AbstractTypeConstraint(InsnNode insn, InsnArg arg) { this.insn = insn; diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/TypeSearchState.java b/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/TypeSearchState.java index 7f1fa6255..f7b66ea4c 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/TypeSearchState.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/TypeSearchState.java @@ -17,7 +17,7 @@ import jadx.core.utils.exceptions.JadxRuntimeException; public class TypeSearchState { - private Map varInfoMap; + private final Map varInfoMap; public TypeSearchState(MethodNode mth) { List vars = mth.getSVars(); diff --git a/jadx-core/src/main/java/jadx/core/export/ExportGradleProject.java b/jadx-core/src/main/java/jadx/core/export/ExportGradleProject.java index bc8b86ab5..d8bc4c04b 100644 --- a/jadx-core/src/main/java/jadx/core/export/ExportGradleProject.java +++ b/jadx-core/src/main/java/jadx/core/export/ExportGradleProject.java @@ -25,8 +25,8 @@ public class ExportGradleProject { private final RootNode root; private final File outDir; - private File srcOutDir; - private File resOutDir; + private final File srcOutDir; + private final File resOutDir; public ExportGradleProject(RootNode root, File outDir) { this.root = root; diff --git a/jadx-core/src/main/java/jadx/core/utils/DebugChecks.java b/jadx-core/src/main/java/jadx/core/utils/DebugChecks.java index 3a1b3b28a..8ac056721 100644 --- a/jadx-core/src/main/java/jadx/core/utils/DebugChecks.java +++ b/jadx-core/src/main/java/jadx/core/utils/DebugChecks.java @@ -160,6 +160,7 @@ public class DebugChecks { InsnNode parentInsn = useArg.getParentInsn(); if (parentInsn != null && parentInsn == usedInPhi) { found = true; + break; } } if (!found) { @@ -168,5 +169,4 @@ public class DebugChecks { } } } - } diff --git a/jadx-core/src/main/java/jadx/core/utils/EncodedValueUtils.java b/jadx-core/src/main/java/jadx/core/utils/EncodedValueUtils.java index c3bac8a18..26e665372 100644 --- a/jadx-core/src/main/java/jadx/core/utils/EncodedValueUtils.java +++ b/jadx-core/src/main/java/jadx/core/utils/EncodedValueUtils.java @@ -41,6 +41,7 @@ public class EncodedValueUtils { case ENCODED_DOUBLE: return InsnArg.lit(Double.doubleToLongBits((Double) value), ArgType.DOUBLE); case ENCODED_STRING: + // noinspection RedundantCast return (String) value; case ENCODED_TYPE: diff --git a/jadx-core/src/main/java/jadx/core/utils/ImmutableList.java b/jadx-core/src/main/java/jadx/core/utils/ImmutableList.java index 70f226241..ffb6ecb8b 100644 --- a/jadx-core/src/main/java/jadx/core/utils/ImmutableList.java +++ b/jadx-core/src/main/java/jadx/core/utils/ImmutableList.java @@ -88,8 +88,8 @@ public final class ImmutableList implements List, RandomAccess { @Override public Iterator iterator() { return new Iterator() { + private final int len = arr.length; private int index = 0; - private int len = arr.length; @Override public boolean hasNext() { diff --git a/jadx-core/src/main/java/jadx/core/utils/android/ExtDataInput.java b/jadx-core/src/main/java/jadx/core/utils/android/ExtDataInput.java index 83fd14aae..351fc0c82 100644 --- a/jadx-core/src/main/java/jadx/core/utils/android/ExtDataInput.java +++ b/jadx-core/src/main/java/jadx/core/utils/android/ExtDataInput.java @@ -84,7 +84,7 @@ public class ExtDataInput extends DataInputDelegate { @SuppressWarnings("InnerAssignment") public final int skipBytes(int n) throws IOException { int total = 0; - int cur = 0; + int cur; while ((total < n) && ((cur = super.skipBytes(n - total)) > 0)) { total += cur; diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/BinaryXMLParser.java b/jadx-core/src/main/java/jadx/core/xmlgen/BinaryXMLParser.java index 3a1adc0c5..cc0df2318 100644 --- a/jadx-core/src/main/java/jadx/core/xmlgen/BinaryXMLParser.java +++ b/jadx-core/src/main/java/jadx/core/xmlgen/BinaryXMLParser.java @@ -56,7 +56,7 @@ public class BinaryXMLParser extends CommonBinaryParser { private int namespaceDepth = 0; private int[] resourceIds; - private RootNode rootNode; + private final RootNode rootNode; private String appPackageName; public BinaryXMLParser(RootNode rootNode) { diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/ResourcesSaver.java b/jadx-core/src/main/java/jadx/core/xmlgen/ResourcesSaver.java index 1fe23b4dd..2583e57be 100644 --- a/jadx-core/src/main/java/jadx/core/xmlgen/ResourcesSaver.java +++ b/jadx-core/src/main/java/jadx/core/xmlgen/ResourcesSaver.java @@ -20,7 +20,7 @@ public class ResourcesSaver implements Runnable { private static final Logger LOG = LoggerFactory.getLogger(ResourcesSaver.class); private final ResourceFile resourceFile; - private File outDir; + private final File outDir; public ResourcesSaver(File outDir, ResourceFile resourceFile) { this.resourceFile = resourceFile;