From d586c84b5632be0bca22250a7081506136e8a85e Mon Sep 17 00:00:00 2001 From: Skylot Date: Sat, 27 May 2017 19:15:55 +0300 Subject: [PATCH] reformat code and fix sonar warnings --- jadx-cli/src/main/java/jadx/cli/JadxCLI.java | 8 +- .../src/main/java/jadx/cli/JadxCLIArgs.java | 21 ++- .../main/java/jadx/api/JadxDecompiler.java | 43 +++--- .../src/main/java/jadx/api/JavaClass.java | 8 +- .../src/main/java/jadx/api/ResourceFile.java | 4 +- .../main/java/jadx/api/ResourcesLoader.java | 31 ++--- jadx-core/src/main/java/jadx/core/Jadx.java | 5 +- .../src/main/java/jadx/core/ProcessClass.java | 7 +- .../src/main/java/jadx/core/clsp/ClsSet.java | 41 ++---- .../main/java/jadx/core/clsp/ClspGraph.java | 8 +- .../java/jadx/core/clsp/ConvertToClsSet.java | 2 +- .../main/java/jadx/core/codegen/ClassGen.java | 8 +- .../java/jadx/core/codegen/CodeWriter.java | 31 ++--- .../java/jadx/core/codegen/ConditionGen.java | 2 +- .../main/java/jadx/core/codegen/InsnGen.java | 2 +- .../java/jadx/core/codegen/MethodGen.java | 4 +- .../main/java/jadx/core/codegen/NameGen.java | 8 +- .../java/jadx/core/deobf/DeobfPresets.java | 8 +- .../java/jadx/core/deobf/Deobfuscator.java | 36 +++-- .../main/java/jadx/core/deobf/NameMapper.java | 2 +- .../java/jadx/core/deobf/PackageNode.java | 32 ++--- .../java/jadx/core/dex/attributes/AType.java | 40 +++--- .../jadx/core/dex/attributes/AttrList.java | 2 +- .../core/dex/attributes/AttributeStorage.java | 8 +- .../jadx/core/dex/attributes/IAttribute.java | 4 +- .../annotations/AnnotationsList.java | 2 +- .../annotations/MethodParameters.java | 2 +- .../nodes/DeclareVariablesAttr.java | 2 +- .../dex/attributes/nodes/EnumClassAttr.java | 2 +- .../dex/attributes/nodes/EnumMapAttr.java | 4 +- .../dex/attributes/nodes/IgnoreEdgeAttr.java | 2 +- .../core/dex/attributes/nodes/LoopInfo.java | 4 +- .../dex/attributes/nodes/PhiListAttr.java | 2 +- .../java/jadx/core/dex/info/ClassInfo.java | 2 +- .../java/jadx/core/dex/info/ConstStorage.java | 28 ++-- .../java/jadx/core/dex/info/InfoStorage.java | 12 +- .../core/dex/instructions/FillArrayNode.java | 2 +- .../jadx/core/dex/instructions/PhiInsn.java | 2 +- .../core/dex/instructions/args/ArgType.java | 20 +-- .../core/dex/instructions/args/FieldArg.java | 5 +- .../core/dex/instructions/args/InsnArg.java | 2 +- .../dex/instructions/args/RegisterArg.java | 21 +-- .../core/dex/instructions/args/SSAVar.java | 2 +- .../java/jadx/core/dex/nodes/BlockNode.java | 12 +- .../java/jadx/core/dex/nodes/ClassNode.java | 12 +- .../java/jadx/core/dex/nodes/DexNode.java | 9 +- .../java/jadx/core/dex/nodes/ILoadable.java | 3 - .../java/jadx/core/dex/nodes/InsnNode.java | 2 +- .../java/jadx/core/dex/nodes/MethodNode.java | 24 ++-- .../java/jadx/core/dex/nodes/RootNode.java | 10 +- .../dex/nodes/parser/AnnotationsParser.java | 4 +- .../core/dex/nodes/parser/EncValueParser.java | 2 +- .../dex/nodes/parser/SignatureParser.java | 8 +- .../java/jadx/core/dex/regions/Region.java | 2 +- .../jadx/core/dex/regions/SwitchRegion.java | 8 +- .../core/dex/regions/SynchronizedRegion.java | 2 +- .../jadx/core/dex/regions/TryCatchRegion.java | 4 +- .../dex/regions/conditions/IfCondition.java | 8 +- .../core/dex/regions/conditions/IfRegion.java | 4 +- .../core/dex/regions/loops/LoopRegion.java | 2 +- .../core/dex/trycatch/ExceptionHandler.java | 2 +- .../jadx/core/dex/trycatch/TryCatchBlock.java | 11 +- .../core/dex/visitors/AbstractVisitor.java | 4 +- .../jadx/core/dex/visitors/CodeShrinker.java | 6 +- .../core/dex/visitors/ConstInlineVisitor.java | 4 +- .../core/dex/visitors/DebugInfoVisitor.java | 8 +- .../core/dex/visitors/DotGraphVisitor.java | 14 +- .../jadx/core/dex/visitors/EnumVisitor.java | 4 +- .../core/dex/visitors/ExtractFieldInit.java | 12 +- .../core/dex/visitors/IDexTreeVisitor.java | 3 - .../jadx/core/dex/visitors/ModVisitor.java | 17 ++- .../jadx/core/dex/visitors/ReSugarCode.java | 19 +-- .../jadx/core/dex/visitors/RenameVisitor.java | 12 +- .../core/dex/visitors/SimplifyVisitor.java | 2 +- .../blocksmaker/BlockFinallyExtract.java | 32 +++-- .../dex/visitors/blocksmaker/BlockFinish.java | 2 +- .../visitors/blocksmaker/BlockProcessor.java | 2 +- .../visitors/blocksmaker/BlockSplitter.java | 2 +- .../blocksmaker/helpers/BlocksRemoveInfo.java | 6 +- .../dex/visitors/regions/CheckRegions.java | 2 +- .../dex/visitors/regions/IfMakerHelper.java | 4 +- .../dex/visitors/regions/IfRegionVisitor.java | 2 +- .../visitors/regions/LoopRegionVisitor.java | 4 +- .../regions/ProcessTryCatchRegions.java | 4 +- .../visitors/regions/ProcessVariables.java | 10 +- .../dex/visitors/regions/RegionMaker.java | 49 ++++--- .../visitors/regions/RegionMakerVisitor.java | 4 +- .../dex/visitors/regions/RegionStack.java | 6 +- .../core/dex/visitors/regions/TernaryMod.java | 2 +- .../visitors/regions/TracedRegionVisitor.java | 2 +- .../core/dex/visitors/ssa/SSATransform.java | 15 +- .../typeinference/PostTypeInference.java | 1 - .../jadx/core/export/ExportGradleProject.java | 2 +- .../java/jadx/core/export/TemplateFile.java | 16 +-- .../main/java/jadx/core/utils/AsmUtils.java | 11 +- .../main/java/jadx/core/utils/BlockUtils.java | 49 ++++--- .../main/java/jadx/core/utils/DebugUtils.java | 15 +- .../java/jadx/core/utils/EmptyBitSet.java | 5 - .../java/jadx/core/utils/ErrorsCounter.java | 4 +- .../main/java/jadx/core/utils/InsnUtils.java | 26 ++-- .../jadx/core/utils/InstructionRemover.java | 2 +- .../java/jadx/core/utils/RegionUtils.java | 2 +- .../java/jadx/core/utils/StringUtils.java | 128 ++++++++++++------ .../java/jadx/core/utils/files/DexFile.java | 2 +- .../java/jadx/core/utils/files/FileUtils.java | 121 +++++++---------- .../java/jadx/core/utils/files/InputFile.java | 85 ++++++------ .../java/jadx/core/utils/files/JavaToDex.java | 4 +- .../jadx/core/xmlgen/BinaryXMLParser.java | 57 +++----- .../jadx/core/xmlgen/ManifestAttributes.java | 37 ++--- .../jadx/core/xmlgen/ParserConstants.java | 55 ++++---- .../java/jadx/core/xmlgen/ResContainer.java | 17 +++ .../java/jadx/core/xmlgen/ResTableParser.java | 12 +- .../main/java/jadx/core/xmlgen/ResXmlGen.java | 10 +- .../jadx/core/xmlgen/ResourceStorage.java | 4 +- .../jadx/core/xmlgen/entry/ValuesParser.java | 16 +-- .../java/jadx/tests/api/IntegrationTest.java | 32 ++--- .../test/java/jadx/tests/api/SmaliTest.java | 8 +- .../tests/api/compiler/ClassFileManager.java | 4 +- .../tests/api/compiler/DynamicCompiler.java | 6 +- .../tests/api/compiler/StaticCompiler.java | 10 +- .../jadx/tests/api/utils/JadxMatchers.java | 4 +- .../java/jadx/tests/api/utils/TestUtils.java | 6 +- .../tests/functional/JadxClasspathTest.java | 10 +- .../functional/JadxVisitorsOrderTest.java | 16 +-- .../tests/functional/TemplateFileTest.java | 4 +- .../tests/functional/TestIfCondition.java | 4 +- .../jadx/tests/functional/TypeMergeTest.java | 10 +- .../jadx/tests/integration/TestArgInline.java | 4 +- .../jadx/tests/integration/TestClassGen.java | 4 +- .../tests/integration/TestDuplicateCast.java | 8 +- .../tests/integration/TestFloatValue.java | 4 +- .../integration/TestRedundantBrackets.java | 4 +- .../integration/TestRedundantReturn.java | 4 +- .../tests/integration/TestReturnWrapping.java | 4 +- .../integration/TestStaticFieldsInit.java | 4 +- .../tests/integration/TestStaticMethod.java | 4 +- .../TestStringBuilderElimination.java | 4 +- .../jadx/tests/integration/TestWrongCode.java | 4 +- .../annotations/TestAnnotations.java | 4 +- .../annotations/TestAnnotations2.java | 6 +- .../annotations/TestParamAnnotations.java | 6 +- .../tests/integration/arith/TestArith.java | 4 +- .../tests/integration/arith/TestArith3.java | 4 +- .../integration/arith/TestFieldIncrement.java | 4 +- .../arith/TestFieldIncrement2.java | 4 +- .../arith/TestFieldIncrement3.java | 6 +- .../integration/arith/TestSpecialValues.java | 4 +- .../integration/arrays/TestArrayFill.java | 4 +- .../integration/arrays/TestArrayFill2.java | 4 +- .../arrays/TestArrayFillConstReplace.java | 4 +- .../tests/integration/arrays/TestArrays.java | 4 +- .../tests/integration/arrays/TestArrays2.java | 4 +- .../tests/integration/arrays/TestArrays3.java | 4 +- .../integration/conditions/TestCmpOp.java | 4 +- .../integration/conditions/TestCmpOp2.java | 4 +- .../conditions/TestConditions.java | 4 +- .../conditions/TestConditions10.java | 4 +- .../conditions/TestConditions11.java | 4 +- .../conditions/TestConditions12.java | 4 +- .../conditions/TestConditions13.java | 4 +- .../conditions/TestConditions14.java | 4 +- .../conditions/TestConditions15.java | 4 +- .../conditions/TestConditions16.java | 4 +- .../conditions/TestConditions2.java | 4 +- .../conditions/TestConditions3.java | 6 +- .../conditions/TestConditions4.java | 4 +- .../conditions/TestConditions5.java | 4 +- .../conditions/TestConditions6.java | 6 +- .../conditions/TestConditions7.java | 4 +- .../conditions/TestConditions8.java | 4 +- .../conditions/TestConditions9.java | 4 +- .../integration/conditions/TestElseIf.java | 4 +- .../integration/conditions/TestNestedIf.java | 4 +- .../integration/conditions/TestNestedIf2.java | 4 +- .../conditions/TestSimpleConditions.java | 4 +- .../integration/conditions/TestTernary.java | 4 +- .../integration/conditions/TestTernary2.java | 4 +- .../integration/conditions/TestTernary3.java | 4 +- .../conditions/TestTernaryInIf.java | 4 +- .../debuginfo/TestLineNumbers.java | 4 +- .../debuginfo/TestLineNumbers2.java | 10 +- .../debuginfo/TestReturnSourceLine.java | 4 +- .../tests/integration/enums/TestEnums.java | 4 +- .../tests/integration/enums/TestEnums2.java | 4 +- .../tests/integration/enums/TestEnums3.java | 4 +- .../tests/integration/enums/TestEnums4.java | 4 +- .../integration/enums/TestEnumsInterface.java | 3 +- .../enums/TestEnumsWithConsts.java | 4 +- .../integration/enums/TestSwitchOverEnum.java | 4 +- .../enums/TestSwitchOverEnum2.java | 4 +- .../fallback/TestFallbackMode.java | 4 +- .../integration/generics/TestGenerics.java | 6 +- .../integration/generics/TestGenerics2.java | 6 +- .../integration/generics/TestGenerics3.java | 6 +- .../integration/generics/TestGenerics4.java | 4 +- .../integration/generics/TestGenerics6.java | 6 +- .../tests/integration/inline/TestInline.java | 4 +- .../tests/integration/inline/TestInline2.java | 4 +- .../tests/integration/inline/TestInline3.java | 4 +- .../tests/integration/inline/TestInline6.java | 4 +- .../integration/inline/TestInlineInLoop.java | 4 +- .../tests/integration/inline/TestIssue86.java | 8 +- .../inline/TestSyntheticInline.java | 4 +- .../integration/inner/TestAnonymousClass.java | 6 +- .../inner/TestAnonymousClass10.java | 6 +- .../inner/TestAnonymousClass11.java | 6 +- .../inner/TestAnonymousClass12.java | 4 +- .../inner/TestAnonymousClass2.java | 4 +- .../inner/TestAnonymousClass3.java | 4 +- .../inner/TestAnonymousClass4.java | 4 +- .../inner/TestAnonymousClass5.java | 8 +- .../inner/TestAnonymousClass6.java | 4 +- .../inner/TestAnonymousClass7.java | 4 +- .../inner/TestAnonymousClass8.java | 4 +- .../inner/TestAnonymousClass9.java | 6 +- .../integration/inner/TestInnerClass.java | 4 +- .../integration/inner/TestInnerClass2.java | 6 +- .../integration/inner/TestInnerClass3.java | 4 +- .../integration/inner/TestInnerClass4.java | 4 +- .../integration/inner/TestInnerClass5.java | 4 +- .../integration/inner/TestRFieldAccess.java | 4 +- .../integration/inner/TestRFieldRestore.java | 8 +- .../integration/inner/TestRFieldRestore2.java | 8 +- .../invoke/TestConstructorInvoke.java | 4 +- .../tests/integration/invoke/TestInvoke1.java | 6 +- .../integration/invoke/TestInvokeInCatch.java | 6 +- .../invoke/TestOverloadedMethodInvoke.java | 4 +- .../integration/invoke/TestSuperInvoke.java | 4 +- .../tests/integration/invoke/TestVarArg.java | 4 +- .../integration/loops/TestArrayForEach.java | 4 +- .../integration/loops/TestArrayForEach2.java | 4 +- .../loops/TestArrayForEachNegative.java | 4 +- .../loops/TestBreakInComplexIf.java | 8 +- .../loops/TestBreakInComplexIf2.java | 6 +- .../integration/loops/TestBreakInLoop.java | 4 +- .../integration/loops/TestBreakInLoop2.java | 6 +- .../integration/loops/TestBreakWithLabel.java | 6 +- .../integration/loops/TestContinueInLoop.java | 4 +- .../loops/TestContinueInLoop2.java | 4 +- .../integration/loops/TestDoWhileBreak.java | 4 +- .../integration/loops/TestIfInLoop2.java | 4 +- .../integration/loops/TestIfInLoop3.java | 4 +- .../integration/loops/TestIndexForLoop.java | 4 +- .../loops/TestIterableForEach.java | 4 +- .../loops/TestIterableForEach2.java | 6 +- .../loops/TestIterableForEach3.java | 6 +- .../integration/loops/TestLoopCondition.java | 4 +- .../integration/loops/TestLoopCondition2.java | 4 +- .../integration/loops/TestLoopCondition3.java | 4 +- .../integration/loops/TestLoopCondition4.java | 4 +- .../loops/TestLoopConditionInvoke.java | 4 +- .../integration/loops/TestLoopDetection.java | 4 +- .../integration/loops/TestLoopDetection2.java | 4 +- .../integration/loops/TestLoopDetection3.java | 4 +- .../integration/loops/TestLoopDetection4.java | 6 +- .../integration/loops/TestNestedLoops.java | 6 +- .../integration/loops/TestNestedLoops2.java | 6 +- .../integration/loops/TestNestedLoops3.java | 4 +- .../loops/TestSequentialLoops.java | 4 +- .../integration/loops/TestTryCatchInLoop.java | 4 +- .../loops/TestTryCatchInLoop2.java | 8 +- .../integration/names/TestNameAssign2.java | 14 +- .../names/TestSameMethodsNames.java | 4 +- .../integration/others/TestFieldInit.java | 8 +- .../integration/others/TestFieldInit2.java | 4 +- .../others/TestFieldInitInTryCatch.java | 6 +- .../tests/integration/others/TestIfInTry.java | 6 +- .../integration/others/TestIfTryInCatch.java | 4 +- .../integration/others/TestIssue13a.java | 10 +- .../integration/others/TestIssue13b.java | 6 +- .../integration/others/TestLoopInTry.java | 4 +- .../integration/others/TestLoopInTry2.java | 15 +- .../integration/switches/TestSwitch.java | 4 +- .../integration/switches/TestSwitch2.java | 4 +- .../integration/switches/TestSwitch3.java | 4 +- .../integration/switches/TestSwitchBreak.java | 4 +- .../switches/TestSwitchContinue.java | 4 +- .../switches/TestSwitchInLoop.java | 4 +- .../switches/TestSwitchLabels.java | 4 +- .../switches/TestSwitchNoDefault.java | 4 +- .../switches/TestSwitchReturnFromCase.java | 4 +- .../switches/TestSwitchSimple.java | 4 +- .../TestSwitchWithFallThroughCase.java | 4 +- .../TestSwitchWithFallThroughCase2.java | 4 +- .../switches/TestSwitchWithTryCatch.java | 4 +- .../synchronize/TestSynchronized.java | 4 +- .../synchronize/TestSynchronized2.java | 4 +- .../synchronize/TestSynchronized3.java | 4 +- .../integration/trycatch/TestFinally.java | 4 +- .../integration/trycatch/TestFinally2.java | 6 +- .../trycatch/TestFinallyExtract.java | 6 +- .../trycatch/TestInlineInCatch.java | 6 +- .../trycatch/TestNestedTryCatch.java | 4 +- .../integration/trycatch/TestTryCatch.java | 4 +- .../integration/trycatch/TestTryCatch2.java | 4 +- .../integration/trycatch/TestTryCatch3.java | 4 +- .../integration/trycatch/TestTryCatch4.java | 6 +- .../integration/trycatch/TestTryCatch5.java | 6 +- .../integration/trycatch/TestTryCatch6.java | 6 +- .../integration/trycatch/TestTryCatch7.java | 4 +- .../integration/trycatch/TestTryCatch8.java | 8 +- .../trycatch/TestTryCatchFinally.java | 4 +- .../trycatch/TestTryCatchFinally2.java | 8 +- .../trycatch/TestTryCatchFinally3.java | 10 +- .../trycatch/TestTryCatchFinally4.java | 6 +- .../trycatch/TestTryCatchFinally5.java | 8 +- .../trycatch/TestTryCatchFinally6.java | 6 +- .../trycatch/TestTryCatchInIf.java | 4 +- .../integration/types/TestTypeResolver.java | 4 +- .../integration/types/TestTypeResolver2.java | 6 +- .../integration/types/TestTypeResolver3.java | 4 +- .../integration/types/TestTypeResolver4.java | 6 +- .../integration/usethis/TestInlineThis.java | 4 +- .../integration/variables/TestVariables2.java | 4 +- .../integration/variables/TestVariables3.java | 4 +- .../integration/variables/TestVariables4.java | 6 +- .../integration/variables/TestVariables5.java | 4 +- .../variables/TestVariablesDefinitions.java | 10 +- .../java/jadx/tests/smali/TestArithConst.java | 4 +- .../jadx/tests/smali/TestConstructor.java | 4 +- .../jadx/tests/smali/TestInlineVarArg.java | 4 +- .../test/java/jadx/tests/smali/TestN21.java | 4 +- jadx-gui/src/main/java/jadx/gui/JadxGUI.java | 11 +- .../src/main/java/jadx/gui/JadxWrapper.java | 17 +-- .../java/jadx/gui/jobs/BackgroundJob.java | 6 +- .../java/jadx/gui/jobs/BackgroundWorker.java | 13 +- .../src/main/java/jadx/gui/jobs/IndexJob.java | 12 +- .../java/jadx/gui/settings/JadxSettings.java | 13 +- .../gui/settings/JadxSettingsAdapter.java | 9 +- .../jadx/gui/settings/JadxSettingsWindow.java | 38 ++---- .../java/jadx/gui/treemodel/CodeNode.java | 10 +- .../main/java/jadx/gui/treemodel/JClass.java | 16 +-- .../main/java/jadx/gui/treemodel/JField.java | 9 +- .../main/java/jadx/gui/treemodel/JMethod.java | 11 +- .../main/java/jadx/gui/treemodel/JNode.java | 8 +- .../java/jadx/gui/treemodel/JPackage.java | 17 ++- .../java/jadx/gui/treemodel/JResource.java | 64 +++++---- .../main/java/jadx/gui/treemodel/JRoot.java | 10 +- .../java/jadx/gui/treemodel/JSources.java | 19 ++- .../java/jadx/gui/treemodel/TextNode.java | 2 +- .../main/java/jadx/gui/ui/AboutDialog.java | 19 +-- .../src/main/java/jadx/gui/ui/CodeArea.java | 37 ++--- .../src/main/java/jadx/gui/ui/CodePanel.java | 14 +- .../java/jadx/gui/ui/CommonSearchDialog.java | 94 +++++++------ .../main/java/jadx/gui/ui/ContentPanel.java | 6 +- .../src/main/java/jadx/gui/ui/ImagePanel.java | 10 +- .../main/java/jadx/gui/ui/LineNumbers.java | 27 ++-- .../src/main/java/jadx/gui/ui/LogViewer.java | 30 ++-- .../src/main/java/jadx/gui/ui/MainWindow.java | 109 ++++++--------- .../main/java/jadx/gui/ui/ProgressPanel.java | 15 +- .../src/main/java/jadx/gui/ui/SearchBar.java | 17 +-- .../main/java/jadx/gui/ui/SearchDialog.java | 42 +----- .../src/main/java/jadx/gui/ui/TabbedPane.java | 41 +++--- .../main/java/jadx/gui/ui/UsageDialog.java | 36 +---- .../main/java/jadx/gui/update/JadxUpdate.java | 9 +- .../main/java/jadx/gui/utils/CacheObject.java | 4 +- .../java/jadx/gui/utils/CodeLinesInfo.java | 10 +- .../java/jadx/gui/utils/CodeUsageInfo.java | 16 +-- .../main/java/jadx/gui/utils/JNodeCache.java | 8 +- .../main/java/jadx/gui/utils/JumpManager.java | 2 +- .../src/main/java/jadx/gui/utils/Link.java | 14 +- .../java/jadx/gui/utils/LogCollector.java | 1 - .../main/java/jadx/gui/utils/OverlayIcon.java | 7 +- .../jadx/gui/utils/TextStandardActions.java | 7 +- .../src/main/java/jadx/gui/utils/Utils.java | 10 +- .../java/jadx/gui/utils/search/CodeIndex.java | 8 +- .../jadx/gui/utils/search/SearchIndex.java | 16 +-- .../jadx/gui/utils/search/SimpleIndex.java | 18 ++- .../java/jadx/gui/utils/search/StringRef.java | 2 +- .../gui/utils/search/TextSearchIndex.java | 24 ++-- .../resources/i18n/Messages_en_US.properties | 2 + jadx-gui/src/test/java/jadx/api/Factory.java | 4 +- .../java/jadx/gui/treemodel/JSourcesTest.java | 12 +- .../src/main/java/jadx/samples/RunTests.java | 2 +- .../src/main/java/jadx/samples/TestCF3.java | 4 +- .../src/main/java/jadx/samples/TestEnum.java | 2 +- .../main/java/jadx/samples/TestGenerics.java | 12 +- .../main/java/jadx/samples/TestUnicode.java | 2 +- 378 files changed, 1686 insertions(+), 1894 deletions(-) diff --git a/jadx-cli/src/main/java/jadx/cli/JadxCLI.java b/jadx-cli/src/main/java/jadx/cli/JadxCLI.java index ceca627d8..d67d7183e 100644 --- a/jadx-cli/src/main/java/jadx/cli/JadxCLI.java +++ b/jadx-cli/src/main/java/jadx/cli/JadxCLI.java @@ -1,13 +1,13 @@ package jadx.cli; -import jadx.api.JadxDecompiler; -import jadx.core.utils.exceptions.JadxException; - import java.io.File; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jadx.api.JadxDecompiler; +import jadx.core.utils.exceptions.JadxException; + public class JadxCLI { private static final Logger LOG = LoggerFactory.getLogger(JadxCLI.class); @@ -17,7 +17,7 @@ public class JadxCLI { if (processArgs(jadxArgs, args)) { processAndSave(jadxArgs); } - } catch (Throwable e) { + } catch (Exception e) { LOG.error("jadx error: {}", e.getMessage(), e); System.exit(1); } diff --git a/jadx-cli/src/main/java/jadx/cli/JadxCLIArgs.java b/jadx-cli/src/main/java/jadx/cli/JadxCLIArgs.java index 60d12c02d..488def2fb 100644 --- a/jadx-cli/src/main/java/jadx/cli/JadxCLIArgs.java +++ b/jadx-cli/src/main/java/jadx/cli/JadxCLIArgs.java @@ -1,11 +1,5 @@ package jadx.cli; -import ch.qos.logback.classic.spi.ILoggingEvent; -import ch.qos.logback.core.Appender; -import jadx.api.IJadxArgs; -import jadx.api.JadxDecompiler; -import jadx.core.utils.exceptions.JadxException; - import java.io.File; import java.io.PrintStream; import java.lang.reflect.Field; @@ -14,14 +8,19 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.core.Appender; import com.beust.jcommander.IStringConverter; import com.beust.jcommander.JCommander; import com.beust.jcommander.Parameter; import com.beust.jcommander.ParameterDescription; import com.beust.jcommander.ParameterException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import jadx.api.IJadxArgs; +import jadx.api.JadxDecompiler; +import jadx.core.utils.exceptions.JadxException; public class JadxCLIArgs implements IJadxArgs { @@ -85,7 +84,7 @@ public class JadxCLIArgs implements IJadxArgs { @Parameter(names = {"-h", "--help"}, description = "print this help", help = true) protected boolean printHelp = false; - private final List input = new ArrayList(1); + private final List input = new ArrayList<>(1); private File outputDir; public boolean processArgs(String[] args) { @@ -156,7 +155,7 @@ public class JadxCLIArgs implements IJadxArgs { out.println("options:"); List params = jc.getParameters(); - Map paramsMap = new LinkedHashMap(params.size()); + Map paramsMap = new LinkedHashMap<>(params.size()); int maxNamesLen = 0; for (ParameterDescription p : params) { paramsMap.put(p.getParameterized().getName(), p); diff --git a/jadx-core/src/main/java/jadx/api/JadxDecompiler.java b/jadx-core/src/main/java/jadx/api/JadxDecompiler.java index 36afb4f06..680e9b977 100644 --- a/jadx-core/src/main/java/jadx/api/JadxDecompiler.java +++ b/jadx-core/src/main/java/jadx/api/JadxDecompiler.java @@ -1,6 +1,5 @@ package jadx.api; -import java.util.concurrent.ConcurrentHashMap; import jadx.core.Jadx; import jadx.core.ProcessClass; import jadx.core.codegen.CodeGen; @@ -27,6 +26,7 @@ import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; @@ -54,7 +54,7 @@ public final class JadxDecompiler { private static final Logger LOG = LoggerFactory.getLogger(JadxDecompiler.class); private final IJadxArgs args; - private final List inputFiles = new ArrayList(); + private final List inputFiles = new ArrayList<>(); private File outDir; @@ -140,12 +140,13 @@ public final class JadxDecompiler { } private void save(boolean saveSources, boolean saveResources) { + ExecutorService ex = getSaveExecutor(saveSources, saveResources); + ex.shutdown(); try { - ExecutorService ex = getSaveExecutor(saveSources, saveResources); - ex.shutdown(); ex.awaitTermination(1, TimeUnit.DAYS); } catch (InterruptedException e) { - throw new JadxRuntimeException("Save interrupted", e); + LOG.error("Save interrupted", e); + Thread.currentThread().interrupt(); } } @@ -189,17 +190,14 @@ public final class JadxDecompiler { } } - private void appendSourcesSave(ExecutorService executor, final File outDir) { - for (final JavaClass cls : getClasses()) { + private void appendSourcesSave(ExecutorService executor, File outDir) { + for (JavaClass cls : getClasses()) { if (cls.getClassNode().contains(AFlag.DONT_GENERATE)) { continue; } - executor.execute(new Runnable() { - @Override - public void run() { - cls.decompile(); - SaveCode.save(outDir, args, cls.getClassNode()); - } + executor.execute(() -> { + cls.decompile(); + SaveCode.save(outDir, args, cls.getClassNode()); }); } } @@ -210,7 +208,7 @@ public final class JadxDecompiler { } if (classes == null) { List classNodeList = root.getClasses(false); - List clsList = new ArrayList(classNodeList.size()); + List clsList = new ArrayList<>(classNodeList.size()); classesMap.clear(); for (ClassNode classNode : classNodeList) { JavaClass javaClass = new JavaClass(classNode, this); @@ -237,28 +235,19 @@ public final class JadxDecompiler { if (classList.isEmpty()) { return Collections.emptyList(); } - Map> map = new HashMap>(); + Map> map = new HashMap<>(); for (JavaClass javaClass : classList) { String pkg = javaClass.getPackage(); - List clsList = map.get(pkg); - if (clsList == null) { - clsList = new ArrayList(); - map.put(pkg, clsList); - } + List clsList = map.computeIfAbsent(pkg, k -> new ArrayList<>()); clsList.add(javaClass); } - List packages = new ArrayList(map.size()); + List packages = new ArrayList<>(map.size()); for (Map.Entry> entry : map.entrySet()) { packages.add(new JavaPackage(entry.getKey(), entry.getValue())); } Collections.sort(packages); for (JavaPackage pkg : packages) { - Collections.sort(pkg.getClasses(), new Comparator() { - @Override - public int compare(JavaClass o1, JavaClass o2) { - return o1.getName().compareTo(o2.getName()); - } - }); + pkg.getClasses().sort(Comparator.comparing(JavaClass::getName)); } return Collections.unmodifiableList(packages); } diff --git a/jadx-core/src/main/java/jadx/api/JavaClass.java b/jadx-core/src/main/java/jadx/api/JavaClass.java index 4c48d81d0..e4ef762b0 100644 --- a/jadx-core/src/main/java/jadx/api/JavaClass.java +++ b/jadx-core/src/main/java/jadx/api/JavaClass.java @@ -72,7 +72,7 @@ public final class JavaClass implements JavaNode { JadxDecompiler rootDecompiler = getRootDecompiler(); int inClsCount = cls.getInnerClasses().size(); if (inClsCount != 0) { - List list = new ArrayList(inClsCount); + List list = new ArrayList<>(inClsCount); for (ClassNode inner : cls.getInnerClasses()) { if (!inner.contains(AFlag.DONT_GENERATE)) { JavaClass javaClass = new JavaClass(inner, this); @@ -86,7 +86,7 @@ public final class JavaClass implements JavaNode { int fieldsCount = cls.getFields().size(); if (fieldsCount != 0) { - List flds = new ArrayList(fieldsCount); + List flds = new ArrayList<>(fieldsCount); for (FieldNode f : cls.getFields()) { if (!f.contains(AFlag.DONT_GENERATE)) { JavaField javaField = new JavaField(f, this); @@ -99,7 +99,7 @@ public final class JavaClass implements JavaNode { int methodsCount = cls.getMethods().size(); if (methodsCount != 0) { - List mths = new ArrayList(methodsCount); + List mths = new ArrayList<>(methodsCount); for (MethodNode m : cls.getMethods()) { if (!m.contains(AFlag.DONT_GENERATE)) { JavaMethod javaMethod = new JavaMethod(this, m); @@ -134,7 +134,7 @@ public final class JavaClass implements JavaNode { if (map.isEmpty() || decompiler == null) { return Collections.emptyMap(); } - Map resultMap = new HashMap(map.size()); + Map resultMap = new HashMap<>(map.size()); for (Map.Entry entry : map.entrySet()) { CodePosition codePosition = entry.getKey(); Object obj = entry.getValue(); diff --git a/jadx-core/src/main/java/jadx/api/ResourceFile.java b/jadx-core/src/main/java/jadx/api/ResourceFile.java index 03870f42b..182fb4f22 100644 --- a/jadx-core/src/main/java/jadx/api/ResourceFile.java +++ b/jadx-core/src/main/java/jadx/api/ResourceFile.java @@ -1,9 +1,9 @@ package jadx.api; -import java.io.File; - import jadx.core.xmlgen.ResContainer; +import java.io.File; + public class ResourceFile { public static final class ZipRef { diff --git a/jadx-core/src/main/java/jadx/api/ResourcesLoader.java b/jadx-core/src/main/java/jadx/api/ResourcesLoader.java index b173098ea..7ed567032 100644 --- a/jadx-core/src/main/java/jadx/api/ResourcesLoader.java +++ b/jadx-core/src/main/java/jadx/api/ResourcesLoader.java @@ -1,7 +1,12 @@ package jadx.api; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import jadx.api.ResourceFile.ZipRef; +import jadx.core.codegen.CodeWriter; +import jadx.core.utils.Utils; +import jadx.core.utils.exceptions.JadxException; +import jadx.core.utils.files.InputFile; +import jadx.core.xmlgen.ResContainer; +import jadx.core.xmlgen.ResTableParser; import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; @@ -15,13 +20,8 @@ import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; -import jadx.api.ResourceFile.ZipRef; -import jadx.core.codegen.CodeWriter; -import jadx.core.utils.Utils; -import jadx.core.utils.exceptions.JadxException; -import jadx.core.utils.files.InputFile; -import jadx.core.xmlgen.ResContainer; -import jadx.core.xmlgen.ResTableParser; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import static jadx.core.utils.files.FileUtils.READ_BUFFER_SIZE; import static jadx.core.utils.files.FileUtils.close; @@ -40,7 +40,7 @@ public final class ResourcesLoader { } List load(List inputFiles) { - List list = new ArrayList(inputFiles.size()); + List list = new ArrayList<>(inputFiles.size()); for (InputFile file : inputFiles) { loadFile(list, file.getFile()); } @@ -54,7 +54,7 @@ public final class ResourcesLoader { public static ResContainer decodeStream(ResourceFile rf, ResourceDecoder decoder) throws JadxException { ZipFile zipFile = null; InputStream inputStream = null; - ResContainer result = null; + ResContainer result; try { long size; ZipRef zipRef = rf.getZipRef(); @@ -87,14 +87,9 @@ public final class ResourcesLoader { return result; } - static ResContainer loadContent(final JadxDecompiler jadxRef, final ResourceFile rf) { + static ResContainer loadContent(JadxDecompiler jadxRef, ResourceFile rf) { try { - return decodeStream(rf, new ResourceDecoder() { - @Override - public ResContainer decode(long size, InputStream is) throws IOException { - return loadContent(jadxRef, rf, is, size); - } - }); + return decodeStream(rf, (size, is) -> loadContent(jadxRef, rf, is, size)); } catch (JadxException e) { LOG.error("Decode error", e); CodeWriter cw = new CodeWriter(); diff --git a/jadx-core/src/main/java/jadx/core/Jadx.java b/jadx-core/src/main/java/jadx/core/Jadx.java index 739888e25..aba779605 100644 --- a/jadx-core/src/main/java/jadx/core/Jadx.java +++ b/jadx-core/src/main/java/jadx/core/Jadx.java @@ -46,6 +46,9 @@ import org.slf4j.LoggerFactory; public class Jadx { private static final Logger LOG = LoggerFactory.getLogger(Jadx.class); + private Jadx() { + } + static { if (Consts.DEBUG) { LOG.info("debug enabled"); @@ -53,7 +56,7 @@ public class Jadx { } public static List getPassesList(IJadxArgs args, File outDir) { - List passes = new ArrayList(); + List passes = new ArrayList<>(); if (args.isFallbackMode()) { passes.add(new FallbackModeVisitor()); } else { diff --git a/jadx-core/src/main/java/jadx/core/ProcessClass.java b/jadx-core/src/main/java/jadx/core/ProcessClass.java index 868899e09..c62816230 100644 --- a/jadx-core/src/main/java/jadx/core/ProcessClass.java +++ b/jadx-core/src/main/java/jadx/core/ProcessClass.java @@ -9,8 +9,6 @@ import jadx.core.utils.ErrorsCounter; import java.util.List; import org.jetbrains.annotations.Nullable; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import static jadx.core.dex.nodes.ProcessState.GENERATED; import static jadx.core.dex.nodes.ProcessState.NOT_LOADED; @@ -19,7 +17,6 @@ import static jadx.core.dex.nodes.ProcessState.STARTED; import static jadx.core.dex.nodes.ProcessState.UNLOADED; public final class ProcessClass { - private static final Logger LOG = LoggerFactory.getLogger(ProcessClass.class); private ProcessClass() { } @@ -28,7 +25,7 @@ public final class ProcessClass { if (codeGen == null && cls.getState() == PROCESSED) { return; } - synchronized (cls) { + synchronized (cls.getClassInfo()) { try { if (cls.getState() == NOT_LOADED) { cls.load(); @@ -54,7 +51,7 @@ public final class ProcessClass { } } - static void processDependencies(ClassNode cls, List passes) { + private static void processDependencies(ClassNode cls, List passes) { for (ClassNode depCls : cls.getDependencies()) { process(depCls, passes, null); } diff --git a/jadx-core/src/main/java/jadx/core/clsp/ClsSet.java b/jadx-core/src/main/java/jadx/core/clsp/ClsSet.java index bb9ab61f8..ae6e94e58 100644 --- a/jadx-core/src/main/java/jadx/core/clsp/ClsSet.java +++ b/jadx-core/src/main/java/jadx/core/clsp/ClsSet.java @@ -48,7 +48,7 @@ public class ClsSet { public void load(RootNode root) { List list = root.getClasses(true); - Map names = new HashMap(list.size()); + Map names = new HashMap<>(list.size()); int k = 0; for (ClassNode cls : list) { String clsRawName = cls.getRawName(); @@ -78,7 +78,7 @@ public class ClsSet { } public static NClass[] makeParentsArray(ClassNode cls, Map names) { - List parents = new ArrayList(1 + cls.getInterfaces().size()); + List parents = new ArrayList<>(1 + cls.getInterfaces().size()); ArgType superClass = cls.getSuperClass(); if (superClass != null) { NClass c = getCls(superClass.getObject(), names); @@ -105,9 +105,7 @@ public class ClsSet { void save(File output) throws IOException { FileUtils.makeDirsForFile(output); - - BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(output)); - try { + try (BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(output))) { String outputName = output.getName(); if (outputName.endsWith(CLST_EXTENSION)) { save(outputStream); @@ -122,14 +120,11 @@ public class ClsSet { } else { throw new JadxRuntimeException("Unknown file format: " + outputName); } - } finally { - close(outputStream); } } public void save(OutputStream output) throws IOException { - DataOutputStream out = new DataOutputStream(output); - try { + try (DataOutputStream out = new DataOutputStream(output)) { out.writeBytes(JADX_CLS_SET_HEADER); out.writeByte(VERSION); @@ -145,32 +140,25 @@ public class ClsSet { out.writeInt(parent.getId()); } } - } finally { - close(out); } } public void load() throws IOException, DecodeException { - InputStream input = getClass().getResourceAsStream(CLST_FILENAME); - if (input == null) { - throw new JadxRuntimeException("Can't load classpath file: " + CLST_FILENAME); - } - try { + try (InputStream input = getClass().getResourceAsStream(CLST_FILENAME)) { + if (input == null) { + throw new JadxRuntimeException("Can't load classpath file: " + CLST_FILENAME); + } load(input); - } finally { - close(input); } } public void load(File input) throws IOException, DecodeException { String name = input.getName(); - InputStream inputStream = new FileInputStream(input); - try { + try (InputStream inputStream = new FileInputStream(input)) { if (name.endsWith(CLST_EXTENSION)) { load(inputStream); } else if (name.endsWith(".jar")) { - ZipInputStream in = new ZipInputStream(inputStream); - try { + try (ZipInputStream in = new ZipInputStream(inputStream)) { ZipEntry entry = in.getNextEntry(); while (entry != null) { if (entry.getName().endsWith(CLST_EXTENSION)) { @@ -178,20 +166,15 @@ public class ClsSet { } entry = in.getNextEntry(); } - } finally { - close(in); } } else { throw new JadxRuntimeException("Unknown file format: " + name); } - } finally { - close(inputStream); } } public void load(InputStream input) throws IOException, DecodeException { - DataInputStream in = new DataInputStream(input); - try { + try (DataInputStream in = new DataInputStream(input)) { byte[] header = new byte[JADX_CLS_SET_HEADER.length()]; int readHeaderLength = in.read(header); int version = in.readByte(); @@ -214,8 +197,6 @@ public class ClsSet { } classes[i].setParents(parents); } - } finally { - close(in); } } diff --git a/jadx-core/src/main/java/jadx/core/clsp/ClspGraph.java b/jadx-core/src/main/java/jadx/core/clsp/ClspGraph.java index 674250fde..168cc74d5 100644 --- a/jadx-core/src/main/java/jadx/core/clsp/ClspGraph.java +++ b/jadx-core/src/main/java/jadx/core/clsp/ClspGraph.java @@ -26,7 +26,7 @@ public class ClspGraph { private final Map> ancestorCache = Collections.synchronizedMap(new WeakHashMap>()); private Map nameMap; - private final Set missingClasses = new HashSet(); + private final Set missingClasses = new HashSet<>(); public void load() throws IOException, DecodeException { ClsSet set = new ClsSet(); @@ -36,7 +36,7 @@ public class ClspGraph { public void addClasspath(ClsSet set) { if (nameMap == null) { - nameMap = new HashMap(set.getClassesCount()); + nameMap = new HashMap<>(set.getClassesCount()); set.addToMap(nameMap); } else { throw new JadxRuntimeException("Classpath already loaded"); @@ -110,7 +110,7 @@ public class ClspGraph { missingClasses.add(clsName); return Collections.emptySet(); } - result = new HashSet(); + result = new HashSet<>(); addAncestorsNames(cls, result); if (result.isEmpty()) { result = Collections.emptySet(); @@ -133,7 +133,7 @@ public class ClspGraph { } LOG.warn("Found {} references to unknown classes", count); if (LOG.isDebugEnabled()) { - List clsNames = new ArrayList(missingClasses); + List clsNames = new ArrayList<>(missingClasses); Collections.sort(clsNames); for (String cls : clsNames) { LOG.debug(" {}", cls); diff --git a/jadx-core/src/main/java/jadx/core/clsp/ConvertToClsSet.java b/jadx-core/src/main/java/jadx/core/clsp/ConvertToClsSet.java index 2d4485fd2..0b257a250 100644 --- a/jadx-core/src/main/java/jadx/core/clsp/ConvertToClsSet.java +++ b/jadx-core/src/main/java/jadx/core/clsp/ConvertToClsSet.java @@ -30,7 +30,7 @@ public class ConvertToClsSet { } File output = new File(args[0]); - List inputFiles = new ArrayList(args.length - 1); + List inputFiles = new ArrayList<>(args.length - 1); for (int i = 1; i < args.length; i++) { File f = new File(args[i]); if (f.isDirectory()) { 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 96f16665c..0216d24cd 100644 --- a/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java @@ -54,7 +54,7 @@ public class ClassGen { private final boolean fallback; private final boolean showInconsistentCode; - private final Set imports = new HashSet(); + private final Set imports = new HashSet<>(); private int clsDeclLine; public ClassGen(ClassNode cls, IJadxArgs jadxArgs) { @@ -89,7 +89,7 @@ public class ClassGen { } int importsCount = imports.size(); if (importsCount != 0) { - List sortImports = new ArrayList(importsCount); + List sortImports = new ArrayList<>(importsCount); for (ClassInfo ic : imports) { sortImports.add(ic.getAlias().getFullName()); } @@ -273,7 +273,7 @@ public class ClassGen { } private static List sortMethodsByLine(List methods) { - List out = new ArrayList(methods); + List out = new ArrayList<>(methods); Collections.sort(out, METHOD_LINE_COMPARATOR); return out; } @@ -340,7 +340,7 @@ public class ClassGen { } annotationGen.addForField(code, f); - if(f.getFieldInfo().isRenamed()) { + if (f.getFieldInfo().isRenamed()) { code.startLine("/* renamed from: ").add(f.getName()).add(" */"); } code.startLine(f.getAccessFlags().makeString()); 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 3fb1e9150..1db7a9146 100644 --- a/jadx-core/src/main/java/jadx/core/codegen/CodeWriter.java +++ b/jadx-core/src/main/java/jadx/core/codegen/CodeWriter.java @@ -16,23 +16,21 @@ import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import static jadx.core.utils.files.FileUtils.close; - public class CodeWriter { private static final Logger LOG = LoggerFactory.getLogger(CodeWriter.class); public static final String NL = System.getProperty("line.separator"); - public static final String INDENT = " "; + public static final String INDENT_STR = " "; private static final boolean ADD_LINE_NUMBERS = false; private static final String[] INDENT_CACHE = { "", - INDENT, - INDENT + INDENT, - INDENT + INDENT + INDENT, - INDENT + INDENT + INDENT + INDENT, - INDENT + INDENT + INDENT + INDENT + INDENT, + INDENT_STR, + INDENT_STR + INDENT_STR, + INDENT_STR + INDENT_STR + INDENT_STR, + INDENT_STR + INDENT_STR + INDENT_STR + INDENT_STR, + INDENT_STR + INDENT_STR + INDENT_STR + INDENT_STR + INDENT_STR, }; private StringBuilder buf = new StringBuilder(); @@ -127,7 +125,7 @@ public class CodeWriter { } public CodeWriter addIndent() { - add(INDENT); + add(INDENT_STR); return this; } @@ -148,9 +146,9 @@ public class CodeWriter { if (curIndent < INDENT_CACHE.length) { this.indentStr = INDENT_CACHE[curIndent]; } else { - StringBuilder s = new StringBuilder(curIndent * INDENT.length()); + StringBuilder s = new StringBuilder(curIndent * INDENT_STR.length()); for (int i = 0; i < curIndent; i++) { - s.append(INDENT); + s.append(INDENT_STR); } this.indentStr = s.toString(); } @@ -209,7 +207,7 @@ public class CodeWriter { private Object attachAnnotation(Object obj, CodePosition pos) { if (annotations.isEmpty()) { - annotations = new HashMap(); + annotations = new HashMap<>(); } return annotations.put(pos, obj); } @@ -227,7 +225,7 @@ public class CodeWriter { private void attachSourceLine(int decompiledLine, int sourceLine) { if (lineMap.isEmpty()) { - lineMap = new TreeMap(); + lineMap = new TreeMap<>(); } lineMap.put(decompiledLine, sourceLine); } @@ -286,15 +284,10 @@ public class CodeWriter { finish(); } File outFile = FileUtils.prepareFile(file); - PrintWriter out = null; - try { - out = new PrintWriter(outFile, "UTF-8"); + try (PrintWriter out = new PrintWriter(outFile, "UTF-8")) { out.println(code); } catch (Exception e) { LOG.error("Save file error", e); - } finally { - close(out); } } - } diff --git a/jadx-core/src/main/java/jadx/core/codegen/ConditionGen.java b/jadx-core/src/main/java/jadx/core/codegen/ConditionGen.java index 6f1f5e9b0..b9c66395f 100644 --- a/jadx-core/src/main/java/jadx/core/codegen/ConditionGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/ConditionGen.java @@ -26,7 +26,7 @@ public class ConditionGen extends InsnGen { private static final Logger LOG = LoggerFactory.getLogger(ConditionGen.class); private static class CondStack { - private final Queue stack = new LinkedList(); + private final Queue stack = new LinkedList<>(); public Queue getStack() { return stack; diff --git a/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java b/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java index 471834eea..31f58a15e 100644 --- a/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java @@ -752,7 +752,7 @@ public class InsnGen { } // replace args InsnNode inlCopy = inl.copy(); - List inlArgs = new ArrayList(); + List inlArgs = new ArrayList<>(); inlCopy.getRegisterArgs(inlArgs); for (RegisterArg r : inlArgs) { int regNum = r.getRegNum(); diff --git a/jadx-core/src/main/java/jadx/core/codegen/MethodGen.java b/jadx-core/src/main/java/jadx/core/codegen/MethodGen.java index 152388fef..0d6dad9d2 100644 --- a/jadx-core/src/main/java/jadx/core/codegen/MethodGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/MethodGen.java @@ -81,7 +81,7 @@ public class MethodGen { ai = ai.remove(AccessFlags.ACC_PUBLIC); } - if(mth.getMethodInfo().isRenamed()) { + if (mth.getMethodInfo().isRenamed()) { code.startLine("/* renamed from: ").add(mth.getName()).add(" */"); } code.startLineWithNum(mth.getSourceLine()); @@ -133,7 +133,7 @@ public class MethodGen { annotationGen.addForParameter(argsCode, paramsAnnotation, i); } SSAVar argSVar = arg.getSVar(); - if (argSVar!= null && argSVar.contains(AFlag.FINAL)) { + if (argSVar != null && argSVar.contains(AFlag.FINAL)) { argsCode.add("final "); } if (!it.hasNext() && mth.getAccessFlags().isVarArgs()) { diff --git a/jadx-core/src/main/java/jadx/core/codegen/NameGen.java b/jadx-core/src/main/java/jadx/core/codegen/NameGen.java index 2cf869f66..535d9007c 100644 --- a/jadx-core/src/main/java/jadx/core/codegen/NameGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/NameGen.java @@ -26,12 +26,12 @@ public class NameGen { private static final Map OBJ_ALIAS; - private final Set varNames = new HashSet(); + private final Set varNames = new HashSet<>(); private final MethodNode mth; private final boolean fallback; static { - OBJ_ALIAS = new HashMap(); + OBJ_ALIAS = new HashMap<>(); OBJ_ALIAS.put(Consts.CLASS_STRING, "str"); OBJ_ALIAS.put(Consts.CLASS_CLASS, "cls"); OBJ_ALIAS.put(Consts.CLASS_THROWABLE, "th"); @@ -164,7 +164,9 @@ public class NameGen { if (vName != null) { return vName; } - return StringUtils.escape(shortName.toLowerCase()); + if (shortName != null) { + return StringUtils.escape(shortName.toLowerCase()); + } } return StringUtils.escape(type.toString()); } diff --git a/jadx-core/src/main/java/jadx/core/deobf/DeobfPresets.java b/jadx-core/src/main/java/jadx/core/deobf/DeobfPresets.java index 5918204ed..81af0224b 100644 --- a/jadx-core/src/main/java/jadx/core/deobf/DeobfPresets.java +++ b/jadx-core/src/main/java/jadx/core/deobf/DeobfPresets.java @@ -24,9 +24,9 @@ class DeobfPresets { private final Deobfuscator deobfuscator; private final File deobfMapFile; - private final Map clsPresetMap = new HashMap(); - private final Map fldPresetMap = new HashMap(); - private final Map mthPresetMap = new HashMap(); + private final Map clsPresetMap = new HashMap<>(); + private final Map fldPresetMap = new HashMap<>(); + private final Map mthPresetMap = new HashMap<>(); public DeobfPresets(Deobfuscator deobfuscator, File deobfMapFile) { this.deobfuscator = deobfuscator; @@ -98,7 +98,7 @@ class DeobfPresets { * Saves DefaultDeobfuscator presets */ private void dumpMapping() throws IOException { - List list = new ArrayList(); + List list = new ArrayList<>(); // packages for (PackageNode p : deobfuscator.getRootPackage().getInnerPackages()) { for (PackageNode pp : p.getInnerPackages()) { 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 629f335c2..a01f7be4f 100644 --- a/jadx-core/src/main/java/jadx/core/deobf/Deobfuscator.java +++ b/jadx-core/src/main/java/jadx/core/deobf/Deobfuscator.java @@ -39,15 +39,15 @@ public class Deobfuscator { private final List dexNodes; private final DeobfPresets deobfPresets; - private final Map clsMap = new HashMap(); - private final Map fldMap = new HashMap(); - private final Map mthMap = new HashMap(); + private final Map clsMap = new HashMap<>(); + private final Map fldMap = new HashMap<>(); + private final Map mthMap = new HashMap<>(); - private final Map ovrdMap = new HashMap(); - private final List ovrd = new ArrayList(); + private final Map ovrdMap = new HashMap<>(); + private final List ovrd = new ArrayList<>(); private final PackageNode rootPackage = new PackageNode(""); - private final Set pkgSet = new TreeSet(); + private final Set pkgSet = new TreeSet<>(); private final int maxLength; private final int minLength; @@ -112,14 +112,14 @@ public class Deobfuscator { for (OverridedMethodsNode o : ovrd) { boolean aliasFromPreset = false; String aliasToUse = null; - for(MethodInfo mth : o.getMethods()){ - if(mth.isAliasFromPreset()) { + for (MethodInfo mth : o.getMethods()) { + if (mth.isAliasFromPreset()) { aliasToUse = mth.getAlias(); aliasFromPreset = true; } } - for(MethodInfo mth : o.getMethods()){ - if(aliasToUse == null) { + for (MethodInfo mth : o.getMethods()) { + if (aliasToUse == null) { if (mth.isRenamed() && !mth.isAliasFromPreset()) { mth.setAlias(String.format("mo%d%s", id, makeName(mth.getName()))); } @@ -201,9 +201,8 @@ public class Deobfuscator { } private void resolveOverriding(DexNode dex, ClassNode cls, MethodNode mth) { - Set overrideSet = new HashSet(); + Set overrideSet = new HashSet<>(); resolveOverridingInternal(dex, cls, mth.getMethodInfo().makeSignature(false), overrideSet, cls); - if (overrideSet.size() > 1) { OverridedMethodsNode overrideNode = null; for (MethodInfo _mth : overrideSet) { @@ -212,12 +211,10 @@ public class Deobfuscator { break; } } - if (overrideNode == null) { overrideNode = new OverridedMethodsNode(overrideSet); ovrd.add(overrideNode); } - for (MethodInfo _mth : overrideSet) { if (!ovrdMap.containsKey(_mth)) { ovrdMap.put(_mth, overrideNode); @@ -228,7 +225,6 @@ public class Deobfuscator { } } else { overrideSet.clear(); - overrideSet = null; } } @@ -442,9 +438,9 @@ public class Deobfuscator { parentPkg = parentPkg.getParentPackage(); } - final String pkgName = pkg.getName(); + String pkgName = pkg.getName(); if (!pkg.hasAlias() && shouldRename(pkgName)) { - final String pkgAlias = String.format("p%03d%s", pkgIndex++, makeName(pkgName)); + String pkgAlias = String.format("p%03d%s", pkgIndex++, makeName(pkgName)); pkg.setAlias(pkgAlias); } } @@ -501,7 +497,7 @@ public class Deobfuscator { } private String getPackageName(String packageName) { - final PackageNode pkg = getPackageNode(packageName, false); + PackageNode pkg = getPackageNode(packageName, false); if (pkg != null) { return pkg.getFullAlias(); } @@ -509,7 +505,7 @@ public class Deobfuscator { } private String getClassName(ClassInfo clsInfo) { - final DeobfClsInfo deobfClsInfo = clsMap.get(clsInfo); + DeobfClsInfo deobfClsInfo = clsMap.get(clsInfo); if (deobfClsInfo != null) { return deobfClsInfo.makeNameWithoutPkg(); } @@ -521,7 +517,7 @@ public class Deobfuscator { } private String getClassFullName(ClassInfo clsInfo) { - final DeobfClsInfo deobfClsInfo = clsMap.get(clsInfo); + DeobfClsInfo deobfClsInfo = clsMap.get(clsInfo); if (deobfClsInfo != null) { return deobfClsInfo.getFullName(); } diff --git a/jadx-core/src/main/java/jadx/core/deobf/NameMapper.java b/jadx-core/src/main/java/jadx/core/deobf/NameMapper.java index 1571a3604..b71d2058e 100644 --- a/jadx-core/src/main/java/jadx/core/deobf/NameMapper.java +++ b/jadx-core/src/main/java/jadx/core/deobf/NameMapper.java @@ -13,7 +13,7 @@ public class NameMapper { private static final Pattern VALID_JAVA_FULL_IDENTIFIER = Pattern.compile( "(" + VALID_JAVA_IDENTIFIER + "\\.)*" + VALID_JAVA_IDENTIFIER); - private static final Set RESERVED_NAMES = new HashSet( + private static final Set RESERVED_NAMES = new HashSet<>( Arrays.asList(new String[]{ "abstract", "assert", diff --git a/jadx-core/src/main/java/jadx/core/deobf/PackageNode.java b/jadx-core/src/main/java/jadx/core/deobf/PackageNode.java index cb0a0dfe6..afb2fbcfb 100644 --- a/jadx-core/src/main/java/jadx/core/deobf/PackageNode.java +++ b/jadx-core/src/main/java/jadx/core/deobf/PackageNode.java @@ -1,9 +1,10 @@ package jadx.core.deobf; +import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Collections; +import java.util.Deque; import java.util.List; -import java.util.Stack; public class PackageNode { @@ -29,11 +30,11 @@ public class PackageNode { public String getFullName() { if (cachedPackageFullName == null) { - Stack pp = getParentPackages(); + Deque pp = getParentPackages(); StringBuilder result = new StringBuilder(); result.append(pp.pop().getName()); - while (pp.size() > 0) { + while (!pp.isEmpty()) { result.append(SEPARATOR_CHAR); result.append(pp.pop().getName()); } @@ -59,12 +60,12 @@ public class PackageNode { public String getFullAlias() { if (cachedPackageFullAlias == null) { - Stack pp = getParentPackages(); + Deque pp = getParentPackages(); StringBuilder result = new StringBuilder(); - if (pp.size() > 0) { + if (!pp.isEmpty()) { result.append(pp.pop().getAlias()); - while (pp.size() > 0) { + while (!pp.isEmpty()) { result.append(SEPARATOR_CHAR); result.append(pp.pop().getAlias()); } @@ -86,7 +87,7 @@ public class PackageNode { public void addInnerPackage(PackageNode pkg) { if (innerPackages.isEmpty()) { - innerPackages = new ArrayList(); + innerPackages = new ArrayList<>(); } innerPackages.add(pkg); pkg.parentPackage = this; @@ -114,16 +115,15 @@ public class PackageNode { * * @return stack with parent packages */ - private Stack getParentPackages() { - Stack pp = new Stack(); + private Deque getParentPackages() { + Deque pp = new ArrayDeque<>(); - PackageNode currentP = this; - PackageNode parentP = currentP.getParentPackage(); - - while (currentP != parentP) { - pp.push(currentP); - currentP = parentP; - parentP = currentP.getParentPackage(); + PackageNode currentPkg = this; + PackageNode parentPkg = currentPkg.getParentPackage(); + while (currentPkg != parentPkg) { + pp.push(currentPkg); + currentPkg = parentPkg; + parentPkg = currentPkg.getParentPackage(); } return pp; } diff --git a/jadx-core/src/main/java/jadx/core/dex/attributes/AType.java b/jadx-core/src/main/java/jadx/core/dex/attributes/AType.java index 1ad75335e..ca024e0ac 100644 --- a/jadx-core/src/main/java/jadx/core/dex/attributes/AType.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/AType.java @@ -29,25 +29,25 @@ import jadx.core.dex.trycatch.SplitterBlockAttr; */ public class AType { - public static final AType> JUMP = new AType>(); - public static final AType> LOOP = new AType>(); - public static final AType> EDGE_INSN = new AType>(); + public static final AType> JUMP = new AType<>(); + public static final AType> LOOP = new AType<>(); + public static final AType> EDGE_INSN = new AType<>(); - public static final AType EXC_HANDLER = new AType(); - public static final AType CATCH_BLOCK = new AType(); - public static final AType SPLITTER_BLOCK = new AType(); - public static final AType FORCE_RETURN = new AType(); - public static final AType FIELD_INIT = new AType(); - public static final AType FIELD_REPLACE = new AType(); - public static final AType JADX_ERROR = new AType(); - public static final AType METHOD_INLINE = new AType(); - public static final AType ENUM_CLASS = new AType(); - public static final AType ENUM_MAP = new AType(); - public static final AType ANNOTATION_LIST = new AType(); - public static final AType ANNOTATION_MTH_PARAMETERS = new AType(); - public static final AType PHI_LIST = new AType(); - public static final AType SOURCE_FILE = new AType(); - public static final AType DECLARE_VARIABLES = new AType(); - public static final AType LOOP_LABEL = new AType(); - public static final AType IGNORE_EDGE = new AType(); + public static final AType EXC_HANDLER = new AType<>(); + public static final AType CATCH_BLOCK = new AType<>(); + public static final AType SPLITTER_BLOCK = new AType<>(); + public static final AType FORCE_RETURN = new AType<>(); + public static final AType FIELD_INIT = new AType<>(); + public static final AType FIELD_REPLACE = new AType<>(); + public static final AType JADX_ERROR = new AType<>(); + public static final AType METHOD_INLINE = new AType<>(); + public static final AType ENUM_CLASS = new AType<>(); + public static final AType ENUM_MAP = new AType<>(); + public static final AType ANNOTATION_LIST = new AType<>(); + public static final AType ANNOTATION_MTH_PARAMETERS = new AType<>(); + public static final AType PHI_LIST = new AType<>(); + public static final AType SOURCE_FILE = new AType<>(); + public static final AType DECLARE_VARIABLES = new AType<>(); + public static final AType LOOP_LABEL = new AType<>(); + public static final AType IGNORE_EDGE = new AType<>(); } diff --git a/jadx-core/src/main/java/jadx/core/dex/attributes/AttrList.java b/jadx-core/src/main/java/jadx/core/dex/attributes/AttrList.java index eeabbfea8..30fa1e4f6 100644 --- a/jadx-core/src/main/java/jadx/core/dex/attributes/AttrList.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/AttrList.java @@ -8,7 +8,7 @@ import java.util.List; public class AttrList implements IAttribute { private final AType> type; - private final List list = new LinkedList(); + private final List list = new LinkedList<>(); public AttrList(AType> type) { this.type = type; diff --git a/jadx-core/src/main/java/jadx/core/dex/attributes/AttributeStorage.java b/jadx-core/src/main/java/jadx/core/dex/attributes/AttributeStorage.java index 2b3595814..4184c4d7a 100644 --- a/jadx-core/src/main/java/jadx/core/dex/attributes/AttributeStorage.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/AttributeStorage.java @@ -24,7 +24,7 @@ public class AttributeStorage { public AttributeStorage() { flags = EnumSet.noneOf(AFlag.class); - attributes = new IdentityHashMap, IAttribute>(); + attributes = new IdentityHashMap<>(); } public void add(AFlag flag) { @@ -38,7 +38,7 @@ public class AttributeStorage { public void add(AType> type, T obj) { AttrList list = get(type); if (list == null) { - list = new AttrList(type); + list = new AttrList<>(type); add(list); } list.getList().add(obj); @@ -84,7 +84,7 @@ public class AttributeStorage { } public void remove(IAttribute attr) { - AType type = attr.getType(); + AType type = attr.getType(); IAttribute a = attributes.get(type); if (a == attr) { attributes.remove(type); @@ -101,7 +101,7 @@ public class AttributeStorage { if (size == 0) { return Collections.emptyList(); } - List list = new ArrayList(size); + List list = new ArrayList<>(size); for (AFlag a : flags) { list.add(a.toString()); } diff --git a/jadx-core/src/main/java/jadx/core/dex/attributes/IAttribute.java b/jadx-core/src/main/java/jadx/core/dex/attributes/IAttribute.java index 18bb476b6..cac361c26 100644 --- a/jadx-core/src/main/java/jadx/core/dex/attributes/IAttribute.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/IAttribute.java @@ -1,7 +1,5 @@ package jadx.core.dex.attributes; public interface IAttribute { - - AType getType(); - + AType getType(); } diff --git a/jadx-core/src/main/java/jadx/core/dex/attributes/annotations/AnnotationsList.java b/jadx-core/src/main/java/jadx/core/dex/attributes/annotations/AnnotationsList.java index e2d075006..85c8e8f6b 100644 --- a/jadx-core/src/main/java/jadx/core/dex/attributes/annotations/AnnotationsList.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/annotations/AnnotationsList.java @@ -17,7 +17,7 @@ public class AnnotationsList implements IAttribute { private final Map map; public AnnotationsList(List anList) { - map = new HashMap(anList.size()); + map = new HashMap<>(anList.size()); for (Annotation a : anList) { map.put(a.getAnnotationClass(), a); } diff --git a/jadx-core/src/main/java/jadx/core/dex/attributes/annotations/MethodParameters.java b/jadx-core/src/main/java/jadx/core/dex/attributes/annotations/MethodParameters.java index 28778f9b5..acfb66c5f 100644 --- a/jadx-core/src/main/java/jadx/core/dex/attributes/annotations/MethodParameters.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/annotations/MethodParameters.java @@ -12,7 +12,7 @@ public class MethodParameters implements IAttribute { private final List paramList; public MethodParameters(int paramCount) { - paramList = new ArrayList(paramCount); + paramList = new ArrayList<>(paramCount); } public List getParamList() { diff --git a/jadx-core/src/main/java/jadx/core/dex/attributes/nodes/DeclareVariablesAttr.java b/jadx-core/src/main/java/jadx/core/dex/attributes/nodes/DeclareVariablesAttr.java index a06a704a7..9780770c3 100644 --- a/jadx-core/src/main/java/jadx/core/dex/attributes/nodes/DeclareVariablesAttr.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/nodes/DeclareVariablesAttr.java @@ -13,7 +13,7 @@ import java.util.List; */ public class DeclareVariablesAttr implements IAttribute { - private final List vars = new LinkedList(); + private final List vars = new LinkedList<>(); public Iterable getVars() { return vars; diff --git a/jadx-core/src/main/java/jadx/core/dex/attributes/nodes/EnumClassAttr.java b/jadx-core/src/main/java/jadx/core/dex/attributes/nodes/EnumClassAttr.java index b5ab0157f..a0530a4ef 100644 --- a/jadx-core/src/main/java/jadx/core/dex/attributes/nodes/EnumClassAttr.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/nodes/EnumClassAttr.java @@ -54,7 +54,7 @@ public class EnumClassAttr implements IAttribute { private MethodNode staticMethod; public EnumClassAttr(int fieldsCount) { - this.fields = new ArrayList(fieldsCount); + this.fields = new ArrayList<>(fieldsCount); } public List getFields() { diff --git a/jadx-core/src/main/java/jadx/core/dex/attributes/nodes/EnumMapAttr.java b/jadx-core/src/main/java/jadx/core/dex/attributes/nodes/EnumMapAttr.java index 20efada1b..9221da8aa 100644 --- a/jadx-core/src/main/java/jadx/core/dex/attributes/nodes/EnumMapAttr.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/nodes/EnumMapAttr.java @@ -10,7 +10,7 @@ import java.util.Map; public class EnumMapAttr implements IAttribute { public static class KeyValueMap { - private final Map map = new HashMap(); + private final Map map = new HashMap<>(); public Object get(Object key) { return map.get(key); @@ -21,7 +21,7 @@ public class EnumMapAttr implements IAttribute { } } - private final Map fieldsMap = new HashMap(); + private final Map fieldsMap = new HashMap<>(); public KeyValueMap getMap(FieldNode field) { return fieldsMap.get(field); diff --git a/jadx-core/src/main/java/jadx/core/dex/attributes/nodes/IgnoreEdgeAttr.java b/jadx-core/src/main/java/jadx/core/dex/attributes/nodes/IgnoreEdgeAttr.java index c43afa6f1..7f8b4ccc9 100644 --- a/jadx-core/src/main/java/jadx/core/dex/attributes/nodes/IgnoreEdgeAttr.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/nodes/IgnoreEdgeAttr.java @@ -10,7 +10,7 @@ import java.util.Set; public class IgnoreEdgeAttr implements IAttribute { - private final Set blocks = new HashSet(3); + private final Set blocks = new HashSet<>(3); public Set getBlocks() { return blocks; diff --git a/jadx-core/src/main/java/jadx/core/dex/attributes/nodes/LoopInfo.java b/jadx-core/src/main/java/jadx/core/dex/attributes/nodes/LoopInfo.java index 3cdd007c2..b11178f55 100644 --- a/jadx-core/src/main/java/jadx/core/dex/attributes/nodes/LoopInfo.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/nodes/LoopInfo.java @@ -43,7 +43,7 @@ public class LoopInfo { * Exit nodes belongs to loop (contains in {@code loopBlocks}) */ public Set getExitNodes() { - Set nodes = new HashSet(); + Set nodes = new HashSet<>(); Set blocks = getLoopBlocks(); for (BlockNode block : blocks) { // exit: successor node not from this loop, (don't change to getCleanSuccessors) @@ -60,7 +60,7 @@ public class LoopInfo { * Return loop exit edges. */ public List getExitEdges() { - List edges = new LinkedList(); + List edges = new LinkedList<>(); Set blocks = getLoopBlocks(); for (BlockNode block : blocks) { for (BlockNode s : block.getSuccessors()) { diff --git a/jadx-core/src/main/java/jadx/core/dex/attributes/nodes/PhiListAttr.java b/jadx-core/src/main/java/jadx/core/dex/attributes/nodes/PhiListAttr.java index 4487ddd04..f1f0e58ad 100644 --- a/jadx-core/src/main/java/jadx/core/dex/attributes/nodes/PhiListAttr.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/nodes/PhiListAttr.java @@ -9,7 +9,7 @@ import java.util.List; public class PhiListAttr implements IAttribute { - private final List list = new LinkedList(); + private final List list = new LinkedList<>(); @Override public AType getType() { diff --git a/jadx-core/src/main/java/jadx/core/dex/info/ClassInfo.java b/jadx-core/src/main/java/jadx/core/dex/info/ClassInfo.java index 522c558df..4bc79d807 100644 --- a/jadx-core/src/main/java/jadx/core/dex/info/ClassInfo.java +++ b/jadx-core/src/main/java/jadx/core/dex/info/ClassInfo.java @@ -89,7 +89,7 @@ public final class ClassInfo { int sep = clsName.lastIndexOf('$'); if (canBeInner && sep > 0 && sep != clsName.length() - 1) { String parClsName = pkg + "." + clsName.substring(0, sep); - if(pkg.length() == 0) { + if (pkg.isEmpty()) { parClsName = clsName.substring(0, sep); } diff --git a/jadx-core/src/main/java/jadx/core/dex/info/ConstStorage.java b/jadx-core/src/main/java/jadx/core/dex/info/ConstStorage.java index 9697c4248..89bf84356 100644 --- a/jadx-core/src/main/java/jadx/core/dex/info/ConstStorage.java +++ b/jadx-core/src/main/java/jadx/core/dex/info/ConstStorage.java @@ -20,9 +20,9 @@ import org.jetbrains.annotations.Nullable; public class ConstStorage { - private static final class Values { - private final Map values = new HashMap(); - private final Set duplicates = new HashSet(); + private static final class ValueStorage { + private final Map values = new HashMap<>(); + private final Set duplicates = new HashSet<>(); public Map getValues() { return values; @@ -55,10 +55,10 @@ public class ConstStorage { } private final boolean replaceEnabled; - private final Values globalValues = new Values(); - private final Map classes = new HashMap(); + private final ValueStorage globalValues = new ValueStorage(); + private final Map classes = new HashMap<>(); - private Map resourcesNames = new HashMap(); + private Map resourcesNames = new HashMap<>(); public ConstStorage(IJadxArgs args) { this.replaceEnabled = args.isReplaceConsts(); @@ -90,10 +90,10 @@ public class ConstStorage { } } - private Values getClsValues(ClassNode cls) { - Values classValues = classes.get(cls); + private ValueStorage getClsValues(ClassNode cls) { + ValueStorage classValues = classes.get(cls); if (classValues == null) { - classValues = new Values(); + classValues = new ValueStorage(); classes.put(cls, classValues); } return classValues; @@ -117,7 +117,7 @@ public class ConstStorage { } ClassNode current = cls; while (current != null) { - Values classValues = classes.get(current); + ValueStorage classValues = classes.get(current); if (classValues != null) { FieldNode field = classValues.get(value); if (field != null) { @@ -161,12 +161,14 @@ public class ConstStorage { return getConstField(cls, literal, Math.abs(literal) > 1000); case FLOAT: float f = Float.intBitsToFloat((int) literal); - return getConstField(cls, f, f != 0.0); + return getConstField(cls, f, Float.compare(f, 0) == 0); case DOUBLE: double d = Double.longBitsToDouble(literal); - return getConstField(cls, d, d != 0); + return getConstField(cls, d, Double.compare(d, 0) == 0); + + default: + return null; } - return null; } public void setResourcesNames(Map resourcesNames) { diff --git a/jadx-core/src/main/java/jadx/core/dex/info/InfoStorage.java b/jadx-core/src/main/java/jadx/core/dex/info/InfoStorage.java index 34ad24fcb..32976fa76 100644 --- a/jadx-core/src/main/java/jadx/core/dex/info/InfoStorage.java +++ b/jadx-core/src/main/java/jadx/core/dex/info/InfoStorage.java @@ -8,9 +8,9 @@ import java.util.Map; public class InfoStorage { - private final Map classes = new HashMap(); - private final Map methods = new HashMap(); - private final Map fields = new HashMap(); + private final Map classes = new HashMap<>(); + private final Map methods = new HashMap<>(); + private final Map fields = new HashMap<>(); public ClassInfo getCls(ArgType type) { return classes.get(type); @@ -24,16 +24,16 @@ public class InfoStorage { } private int generateMethodLookupId(DexNode dex, int mthId) { - return (dex.getDexId()<<16)|mthId; + return dex.getDexId() << 16 | mthId; } public MethodInfo getMethod(DexNode dex, int mtdId) { - return methods.get(generateMethodLookupId(dex,mtdId)); + return methods.get(generateMethodLookupId(dex, mtdId)); } public MethodInfo putMethod(DexNode dex, int mthId, MethodInfo mth) { synchronized (methods) { - MethodInfo prev = methods.put(generateMethodLookupId(dex,mthId), mth); + MethodInfo prev = methods.put(generateMethodLookupId(dex, mthId), mth); return prev == null ? mth : prev; } } diff --git a/jadx-core/src/main/java/jadx/core/dex/instructions/FillArrayNode.java b/jadx-core/src/main/java/jadx/core/dex/instructions/FillArrayNode.java index 82df854e9..3c60c52b2 100644 --- a/jadx-core/src/main/java/jadx/core/dex/instructions/FillArrayNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/FillArrayNode.java @@ -66,7 +66,7 @@ public final class FillArrayNode extends InsnNode { } public List getLiteralArgs() { - List list = new ArrayList(size); + List list = new ArrayList<>(size); Object array = data; if (array instanceof int[]) { for (int b : (int[]) array) { diff --git a/jadx-core/src/main/java/jadx/core/dex/instructions/PhiInsn.java b/jadx-core/src/main/java/jadx/core/dex/instructions/PhiInsn.java index 753ce9f2c..6a930d75c 100644 --- a/jadx-core/src/main/java/jadx/core/dex/instructions/PhiInsn.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/PhiInsn.java @@ -21,7 +21,7 @@ public final class PhiInsn extends InsnNode { public PhiInsn(int regNum, int predecessors) { super(InsnType.PHI, predecessors); - this.blockBinds = new IdentityHashMap(predecessors); + this.blockBinds = new IdentityHashMap<>(predecessors); setResult(InsnArg.reg(regNum, ArgType.UNKNOWN)); add(AFlag.DONT_INLINE); } diff --git a/jadx-core/src/main/java/jadx/core/dex/instructions/args/ArgType.java b/jadx-core/src/main/java/jadx/core/dex/instructions/args/ArgType.java index f4a9514f5..942874ec3 100644 --- a/jadx-core/src/main/java/jadx/core/dex/instructions/args/ArgType.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/args/ArgType.java @@ -140,16 +140,16 @@ public abstract class ArgType { } private static class ObjectType extends KnownType { - private final String object; + private final String objName; public ObjectType(String obj) { - this.object = Utils.cleanObjectName(obj); - this.hash = object.hashCode(); + this.objName = Utils.cleanObjectName(obj); + this.hash = objName.hashCode(); } @Override public String getObject() { - return object; + return objName; } @Override @@ -164,12 +164,12 @@ public abstract class ArgType { @Override boolean internalEquals(Object obj) { - return object.equals(((ObjectType) obj).object); + return objName.equals(((ObjectType) obj).objName); } @Override public String toString() { - return object; + return objName; } } @@ -280,7 +280,7 @@ public abstract class ArgType { } private static final class ArrayArg extends KnownType { - public static final PrimitiveType[] ARRAY_POSSIBLES = new PrimitiveType[]{PrimitiveType.ARRAY}; + private static final PrimitiveType[] ARRAY_POSSIBLES = new PrimitiveType[]{PrimitiveType.ARRAY}; private final ArgType arrayElement; public ArrayArg(ArgType arrayElement) { @@ -495,7 +495,7 @@ public abstract class ArgType { return null; } else { // both types unknown - List types = new ArrayList(); + List types = new ArrayList<>(); for (PrimitiveType type : a.getPossibleTypes()) { if (b.contains(type)) { types.add(type); @@ -622,8 +622,10 @@ public abstract class ArgType { return DOUBLE; case 'V': return VOID; + + default: + return null; } - return null; } public int getRegCount() { diff --git a/jadx-core/src/main/java/jadx/core/dex/instructions/args/FieldArg.java b/jadx-core/src/main/java/jadx/core/dex/instructions/args/FieldArg.java index e31e63c78..63dcf5d84 100644 --- a/jadx-core/src/main/java/jadx/core/dex/instructions/args/FieldArg.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/args/FieldArg.java @@ -57,10 +57,7 @@ public final class FieldArg extends RegisterArg { if (!field.equals(fieldArg.field)) { return false; } - if (instArg != null ? !instArg.equals(fieldArg.instArg) : fieldArg.instArg != null) { - return false; - } - return true; + return instArg != null ? instArg.equals(fieldArg.instArg) : fieldArg.instArg == null; } @Override diff --git a/jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnArg.java b/jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnArg.java index 18a2f14ca..c290bc366 100644 --- a/jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnArg.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnArg.java @@ -101,7 +101,7 @@ public abstract class InsnArg extends Typed { } public static void updateParentInsn(InsnNode fromInsn, InsnNode toInsn) { - List args = new ArrayList(); + List args = new ArrayList<>(); fromInsn.getRegisterArgs(args); for (RegisterArg reg : args) { reg.setParentInsn(toInsn); diff --git a/jadx-core/src/main/java/jadx/core/dex/instructions/args/RegisterArg.java b/jadx-core/src/main/java/jadx/core/dex/instructions/args/RegisterArg.java index a0ada798d..972fcf8f6 100644 --- a/jadx-core/src/main/java/jadx/core/dex/instructions/args/RegisterArg.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/args/RegisterArg.java @@ -6,12 +6,11 @@ import jadx.core.dex.nodes.DexNode; import jadx.core.dex.nodes.InsnNode; import jadx.core.utils.InsnUtils; +import java.util.Objects; + import org.jetbrains.annotations.NotNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; public class RegisterArg extends InsnArg implements Named { - private static final Logger LOG = LoggerFactory.getLogger(RegisterArg.class); protected final int regNum; // not null after SSATransform pass @@ -151,23 +150,13 @@ public class RegisterArg extends InsnArg implements Named { if (this == obj) { return true; } - if (obj == null) { - return false; - } if (!(obj instanceof RegisterArg)) { return false; } RegisterArg other = (RegisterArg) obj; - if (regNum != other.regNum) { - return false; - } - if (!type.equals(other.type)) { - return false; - } - if (sVar != null && !sVar.equals(other.getSVar())) { - return false; - } - return true; + return regNum == other.regNum + && type.equals(other.type) + && Objects.equals(sVar, other.getSVar()); } @Override diff --git a/jadx-core/src/main/java/jadx/core/dex/instructions/args/SSAVar.java b/jadx-core/src/main/java/jadx/core/dex/instructions/args/SSAVar.java index bf2693182..edb066d34 100644 --- a/jadx-core/src/main/java/jadx/core/dex/instructions/args/SSAVar.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/args/SSAVar.java @@ -20,7 +20,7 @@ public class SSAVar extends AttrNode { @NotNull private RegisterArg assign; - private final List useList = new ArrayList(2); + private final List useList = new ArrayList<>(2); @Nullable private PhiInsn usedInPhi; diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/BlockNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/BlockNode.java index 4945e1482..55804eb39 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/BlockNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/BlockNode.java @@ -19,10 +19,10 @@ public class BlockNode extends AttrNode implements IBlock { private int id; private final int startOffset; - private final List instructions = new ArrayList(2); + private final List instructions = new ArrayList<>(2); - private List predecessors = new ArrayList(1); - private List successors = new ArrayList(1); + private List predecessors = new ArrayList<>(1); + private List successors = new ArrayList<>(1); private List cleanSuccessors; // all dominators @@ -85,7 +85,7 @@ public class BlockNode extends AttrNode implements IBlock { if (sucList.isEmpty()) { return sucList; } - List toRemove = new LinkedList(); + List toRemove = new LinkedList<>(); for (BlockNode b : sucList) { if (BlockUtils.isBlockMustBeCleared(b)) { toRemove.add(b); @@ -104,7 +104,7 @@ public class BlockNode extends AttrNode implements IBlock { if (toRemove.isEmpty()) { return sucList; } - List result = new ArrayList(sucList); + List result = new ArrayList<>(sucList); result.removeAll(toRemove); return result; } @@ -161,7 +161,7 @@ public class BlockNode extends AttrNode implements IBlock { public void addDominatesOn(BlockNode block) { if (dominatesOn.isEmpty()) { - dominatesOn = new LinkedList(); + dominatesOn = new LinkedList<>(); } dominatesOn.add(block); } diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java index fcb162c53..d246011b3 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java @@ -60,7 +60,7 @@ public class ClassNode extends LineAttrNode implements ILoadable, IDexNode { private ClassNode parentClass; private ProcessState state = ProcessState.NOT_LOADED; - private final Set dependencies = new HashSet(); + private final Set dependencies = new HashSet<>(); // cache maps private Map mthInfoMap = Collections.emptyMap(); @@ -74,7 +74,7 @@ public class ClassNode extends LineAttrNode implements ILoadable, IDexNode { } else { this.superClass = dex.getType(cls.getSupertypeIndex()); } - this.interfaces = new ArrayList(cls.getInterfaces().length); + this.interfaces = new ArrayList<>(cls.getInterfaces().length); for (short interfaceIdx : cls.getInterfaces()) { this.interfaces.add(dex.getType(interfaceIdx)); } @@ -83,8 +83,8 @@ public class ClassNode extends LineAttrNode implements ILoadable, IDexNode { int mthsCount = clsData.getDirectMethods().length + clsData.getVirtualMethods().length; int fieldsCount = clsData.getStaticFields().length + clsData.getInstanceFields().length; - methods = new ArrayList(mthsCount); - fields = new ArrayList(fieldsCount); + methods = new ArrayList<>(mthsCount); + fields = new ArrayList<>(fieldsCount); for (Method mth : clsData.getDirectMethods()) { methods.add(new MethodNode(this, mth, false)); @@ -268,7 +268,7 @@ public class ClassNode extends LineAttrNode implements ILoadable, IDexNode { } private void buildCache() { - mthInfoMap = new HashMap(methods.size()); + mthInfoMap = new HashMap<>(methods.size()); for (MethodNode mth : methods) { mthInfoMap.put(mth.getMethodInfo(), mth); } @@ -373,7 +373,7 @@ public class ClassNode extends LineAttrNode implements ILoadable, IDexNode { public void addInnerClass(ClassNode cls) { if (innerClasses.isEmpty()) { - innerClasses = new ArrayList(3); + innerClasses = new ArrayList<>(3); } innerClasses.add(cls); } diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/DexNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/DexNode.java index 4706d75a4..b58d80281 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/DexNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/DexNode.java @@ -2,7 +2,6 @@ package jadx.core.dex.nodes; import jadx.core.dex.info.ClassInfo; import jadx.core.dex.info.FieldInfo; -import jadx.core.dex.info.InfoStorage; import jadx.core.dex.info.MethodInfo; import jadx.core.dex.instructions.args.ArgType; import jadx.core.utils.exceptions.DecodeException; @@ -37,8 +36,8 @@ public class DexNode implements IDexNode { private final DexFile file; private final int dexId; - private final List classes = new ArrayList(); - private final Map clsMap = new HashMap(); + private final List classes = new ArrayList<>(); + private final Map clsMap = new HashMap<>(); public DexNode(RootNode root, DexFile input, int dexId) { this.root = root; @@ -57,7 +56,7 @@ public class DexNode implements IDexNode { void initInnerClasses() { // move inner classes - List inner = new ArrayList(); + List inner = new ArrayList<>(); for (ClassNode cls : classes) { if (cls.getClassInfo().isInner()) { inner.add(cls); @@ -185,7 +184,7 @@ public class DexNode implements IDexNode { public List readParamList(int parametersOffset) { TypeList paramList = dexBuf.readTypeList(parametersOffset); - List args = new ArrayList(paramList.getTypes().length); + List args = new ArrayList<>(paramList.getTypes().length); for (short t : paramList.getTypes()) { args.add(getType(t)); } diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/ILoadable.java b/jadx-core/src/main/java/jadx/core/dex/nodes/ILoadable.java index 2b883ecce..4a5f4a426 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/ILoadable.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/ILoadable.java @@ -6,8 +6,6 @@ public interface ILoadable { /** * On demand loading - * - * @throws DecodeException */ void load() throws DecodeException; @@ -15,5 +13,4 @@ public interface ILoadable { * Free resources */ void unload(); - } 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 7878d0b39..db9c8af17 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 @@ -42,7 +42,7 @@ public class InsnNode extends LineAttrNode { if (argsCount == 0) { this.arguments = Collections.emptyList(); } else { - this.arguments = new ArrayList(argsCount); + this.arguments = new ArrayList<>(argsCount); } } diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java index 09792e2d5..c2f87cb7a 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java @@ -118,7 +118,7 @@ public class MethodNode extends LineAttrNode implements ILoadable, IDexNode { } public void checkInstructions() { - List list = new ArrayList(); + List list = new ArrayList<>(); for (InsnNode insnNode : instructions) { if (insnNode == null) { continue; @@ -216,7 +216,7 @@ public class MethodNode extends LineAttrNode implements ILoadable, IDexNode { argsList = Collections.emptyList(); return; } - argsList = new ArrayList(args.size()); + argsList = new ArrayList<>(args.size()); for (ArgType arg : args) { argsList.add(InsnArg.typeImmutableReg(pos, arg)); pos += arg.getRegCount(); @@ -225,7 +225,7 @@ public class MethodNode extends LineAttrNode implements ILoadable, IDexNode { public List getArguments(boolean includeThis) { if (includeThis && thisArg != null) { - List list = new ArrayList(argsList.size() + 1); + List list = new ArrayList<>(argsList.size() + 1); list.add(thisArg); list.addAll(argsList); return list; @@ -259,8 +259,8 @@ public class MethodNode extends LineAttrNode implements ILoadable, IDexNode { } int hc = 0; - Set addrs = new HashSet(); - List catches = new ArrayList(catchBlocks.length); + Set addrs = new HashSet<>(); + List catches = new ArrayList<>(catchBlocks.length); for (CatchHandler handler : catchBlocks) { TryCatchBlock tcBlock = new TryCatchBlock(); @@ -399,8 +399,8 @@ public class MethodNode extends LineAttrNode implements ILoadable, IDexNode { } public void initBasicBlocks() { - blocks = new ArrayList(); - exitBlocks = new ArrayList(1); + blocks = new ArrayList<>(); + exitBlocks = new ArrayList<>(1); } public void finishBasicBlocks() { @@ -437,7 +437,7 @@ public class MethodNode extends LineAttrNode implements ILoadable, IDexNode { public void registerLoop(LoopInfo loop) { if (loops.isEmpty()) { - loops = new ArrayList(5); + loops = new ArrayList<>(5); } loop.setId(loops.size()); loops.add(loop); @@ -460,7 +460,7 @@ public class MethodNode extends LineAttrNode implements ILoadable, IDexNode { if (loops.isEmpty()) { return Collections.emptyList(); } - List list = new ArrayList(loops.size()); + List list = new ArrayList<>(loops.size()); for (LoopInfo loop : loops) { if (loop.getLoopBlocks().contains(block)) { list.add(loop); @@ -479,7 +479,7 @@ public class MethodNode extends LineAttrNode implements ILoadable, IDexNode { public ExceptionHandler addExceptionHandler(ExceptionHandler handler) { if (exceptionHandlers.isEmpty()) { - exceptionHandlers = new ArrayList(2); + exceptionHandlers = new ArrayList<>(2); } else { for (ExceptionHandler h : exceptionHandlers) { if (h == handler || h.getHandleOffset() == handler.getHandleOffset()) { @@ -528,7 +528,7 @@ public class MethodNode extends LineAttrNode implements ILoadable, IDexNode { boolean result = false; if (accFlags.isConstructor() && mthInfo.isConstructor()) { int defaultArgCount = 0; - /** workaround for non-static inner class constructor, that has synthetic argument */ + // workaround for non-static inner class constructor, that has synthetic argument if (parentClass.getClassInfo().isInner() && !parentClass.getAccessFlags().isStatic()) { ClassNode outerCls = parentClass.getParentClass(); @@ -557,7 +557,7 @@ public class MethodNode extends LineAttrNode implements ILoadable, IDexNode { public SSAVar makeNewSVar(int regNum, int version, @NotNull RegisterArg assignArg) { SSAVar var = new SSAVar(regNum, version, assignArg); if (sVars.isEmpty()) { - sVars = new ArrayList(); + sVars = new ArrayList<>(); } sVars.add(var); return var; 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 281d3c01a..4c5ff3640 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 @@ -50,7 +50,7 @@ public class RootNode { } public void load(List inputFiles) throws DecodeException { - dexNodes = new ArrayList(); + dexNodes = new ArrayList<>(); for (InputFile input : inputFiles) { for (DexFile dexFile : input.getDexFiles()) { try { @@ -80,7 +80,7 @@ public class RootNode { LOG.debug("'.arsc' file not found"); return; } - final ResTableParser parser = new ResTableParser(); + ResTableParser parser = new ResTableParser(); try { ResourcesLoader.decodeStream(arsc, new ResourcesLoader.ResourceDecoder() { @Override @@ -109,7 +109,7 @@ public class RootNode { ClspGraph clsp = new ClspGraph(); clsp.load(); - List classes = new ArrayList(); + List classes = new ArrayList<>(); for (DexNode dexNode : dexNodes) { classes.addAll(dexNode.getClasses()); } @@ -129,7 +129,7 @@ public class RootNode { } public List getClasses(boolean includeInner) { - List classes = new ArrayList(); + List classes = new ArrayList<>(); for (DexNode dex : dexNodes) { if (includeInner) { classes.addAll(dex.getClasses()); @@ -156,7 +156,7 @@ public class RootNode { } public List searchClassByShortName(String shortName) { - List list = new ArrayList(); + List list = new ArrayList<>(); for (DexNode dexNode : dexNodes) { for (ClassNode cls : dexNode.getClasses()) { if (cls.getClassInfo().getShortName().equals(shortName)) { diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/parser/AnnotationsParser.java b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/AnnotationsParser.java index d13fbaa1f..78a2df6be 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/parser/AnnotationsParser.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/AnnotationsParser.java @@ -79,7 +79,7 @@ public class AnnotationsParser { if (size == 0) { return AnnotationsList.EMPTY; } - List list = new ArrayList(size); + List list = new ArrayList<>(size); for (int i = 0; i < size; i++) { Section anSection = dex.openSection(section.readInt()); Annotation a = readAnnotation(dex, anSection, true); @@ -97,7 +97,7 @@ public class AnnotationsParser { } int typeIndex = s.readUleb128(); int size = s.readUleb128(); - Map values = new LinkedHashMap(size); + Map values = new LinkedHashMap<>(size); for (int i = 0; i < size; i++) { String name = dex.getString(s.readUleb128()); values.put(name, parser.parseValue()); diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/parser/EncValueParser.java b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/EncValueParser.java index c61344a46..d5db18448 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/parser/EncValueParser.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/EncValueParser.java @@ -83,7 +83,7 @@ public class EncValueParser { case ENCODED_ARRAY: int count = Leb128.readUnsignedLeb128(in); - List values = new ArrayList(count); + List values = new ArrayList<>(count); for (int i = 0; i < count; i++) { values.add(parseValue()); } 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 1d0dbbbc0..ed2da00eb 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 @@ -189,7 +189,7 @@ public class SignatureParser { } private ArgType[] consumeGenericArgs() { - List list = new LinkedList(); + List list = new LinkedList<>(); ArgType type; do { if (lookAhead('*')) { @@ -220,7 +220,7 @@ public class SignatureParser { if (!lookAhead('<')) { return Collections.emptyMap(); } - Map> map = new LinkedHashMap>(2); + Map> map = new LinkedHashMap<>(2); consume('<'); while (true) { if (lookAhead('>') || next() == STOP_CHAR) { @@ -251,7 +251,7 @@ public class SignatureParser { ArgType argType = consumeType(); if (!argType.equals(ArgType.OBJECT)) { if (types.isEmpty()) { - types = new LinkedList(); + types = new LinkedList<>(); } types.add(argType); } @@ -269,7 +269,7 @@ public class SignatureParser { consume(')'); return Collections.emptyList(); } - List args = new LinkedList(); + List args = new LinkedList<>(); do { args.add(consumeType()); } while (!lookAhead(')')); diff --git a/jadx-core/src/main/java/jadx/core/dex/regions/Region.java b/jadx-core/src/main/java/jadx/core/dex/regions/Region.java index 6a25ad9fb..e5c497106 100644 --- a/jadx-core/src/main/java/jadx/core/dex/regions/Region.java +++ b/jadx-core/src/main/java/jadx/core/dex/regions/Region.java @@ -12,7 +12,7 @@ public final class Region extends AbstractRegion { public Region(IRegion parent) { super(parent); - this.blocks = new ArrayList(1); + this.blocks = new ArrayList<>(1); } @Override diff --git a/jadx-core/src/main/java/jadx/core/dex/regions/SwitchRegion.java b/jadx-core/src/main/java/jadx/core/dex/regions/SwitchRegion.java index 14231085b..60ac7abe0 100644 --- a/jadx-core/src/main/java/jadx/core/dex/regions/SwitchRegion.java +++ b/jadx-core/src/main/java/jadx/core/dex/regions/SwitchRegion.java @@ -20,8 +20,8 @@ public final class SwitchRegion extends AbstractRegion implements IBranchRegion public SwitchRegion(IRegion parent, BlockNode header) { super(parent); this.header = header; - this.keys = new ArrayList>(); - this.cases = new ArrayList(); + this.keys = new ArrayList<>(); + this.cases = new ArrayList<>(); } public BlockNode getHeader() { @@ -51,7 +51,7 @@ public final class SwitchRegion extends AbstractRegion implements IBranchRegion @Override public List getSubBlocks() { - List all = new ArrayList(cases.size() + 2); + List all = new ArrayList<>(cases.size() + 2); all.add(header); all.addAll(cases); if (defCase != null) { @@ -62,7 +62,7 @@ public final class SwitchRegion extends AbstractRegion implements IBranchRegion @Override public List getBranches() { - List branches = new ArrayList(cases.size() + 1); + List branches = new ArrayList<>(cases.size() + 1); branches.addAll(cases); branches.add(defCase); return Collections.unmodifiableList(branches); diff --git a/jadx-core/src/main/java/jadx/core/dex/regions/SynchronizedRegion.java b/jadx-core/src/main/java/jadx/core/dex/regions/SynchronizedRegion.java index 72ad35122..596748731 100644 --- a/jadx-core/src/main/java/jadx/core/dex/regions/SynchronizedRegion.java +++ b/jadx-core/src/main/java/jadx/core/dex/regions/SynchronizedRegion.java @@ -10,7 +10,7 @@ import java.util.List; public final class SynchronizedRegion extends AbstractRegion { private final InsnNode enterInsn; - private final List exitInsns = new LinkedList(); + private final List exitInsns = new LinkedList<>(); private final Region region; public SynchronizedRegion(IRegion parent, InsnNode insn) { diff --git a/jadx-core/src/main/java/jadx/core/dex/regions/TryCatchRegion.java b/jadx-core/src/main/java/jadx/core/dex/regions/TryCatchRegion.java index 5fa7486d6..d6e205094 100644 --- a/jadx-core/src/main/java/jadx/core/dex/regions/TryCatchRegion.java +++ b/jadx-core/src/main/java/jadx/core/dex/regions/TryCatchRegion.java @@ -28,7 +28,7 @@ public final class TryCatchRegion extends AbstractRegion implements IBranchRegio public void setTryCatchBlock(TryCatchBlock tryCatchBlock) { this.tryCatchBlock = tryCatchBlock; int count = tryCatchBlock.getHandlersCount(); - this.catchRegions = new LinkedHashMap(count); + this.catchRegions = new LinkedHashMap<>(count); for (ExceptionHandler handler : tryCatchBlock.getHandlers()) { IContainer handlerRegion = handler.getHandlerRegion(); if (handlerRegion != null) { @@ -63,7 +63,7 @@ public final class TryCatchRegion extends AbstractRegion implements IBranchRegio @Override public List getSubBlocks() { - List all = new ArrayList(2 + catchRegions.size()); + List all = new ArrayList<>(2 + catchRegions.size()); all.add(tryRegion); all.addAll(catchRegions.values()); if (finallyRegion != null) { diff --git a/jadx-core/src/main/java/jadx/core/dex/regions/conditions/IfCondition.java b/jadx-core/src/main/java/jadx/core/dex/regions/conditions/IfCondition.java index 195fc8e72..17f8a5697 100644 --- a/jadx-core/src/main/java/jadx/core/dex/regions/conditions/IfCondition.java +++ b/jadx-core/src/main/java/jadx/core/dex/regions/conditions/IfCondition.java @@ -49,7 +49,7 @@ public final class IfCondition { if (c.mode == Mode.COMPARE) { this.args = Collections.emptyList(); } else { - this.args = new ArrayList(c.args); + this.args = new ArrayList<>(c.args); } } @@ -121,7 +121,7 @@ public final class IfCondition { case AND: case OR: List args = cond.getArgs(); - List newArgs = new ArrayList(args.size()); + List newArgs = new ArrayList<>(args.size()); for (IfCondition arg : args) { newArgs.add(invert(arg)); } @@ -154,7 +154,7 @@ public final class IfCondition { IfCondition simpl = simplify(arg); if (simpl != arg) { if (args == null) { - args = new ArrayList(cond.getArgs()); + args = new ArrayList<>(cond.getArgs()); } args.set(i, simpl); } @@ -206,7 +206,7 @@ public final class IfCondition { } public List getRegisterArgs() { - List list = new LinkedList(); + List list = new LinkedList<>(); if (mode == Mode.COMPARE) { compare.getInsn().getRegisterArgs(list); } else { diff --git a/jadx-core/src/main/java/jadx/core/dex/regions/conditions/IfRegion.java b/jadx-core/src/main/java/jadx/core/dex/regions/conditions/IfRegion.java index 88745efc9..1f03561bc 100644 --- a/jadx-core/src/main/java/jadx/core/dex/regions/conditions/IfRegion.java +++ b/jadx-core/src/main/java/jadx/core/dex/regions/conditions/IfRegion.java @@ -82,7 +82,7 @@ public final class IfRegion extends AbstractRegion implements IBranchRegion { @Override public List getSubBlocks() { - List all = new ArrayList(3); + List all = new ArrayList<>(3); all.add(header); if (thenRegion != null) { all.add(thenRegion); @@ -95,7 +95,7 @@ public final class IfRegion extends AbstractRegion implements IBranchRegion { @Override public List getBranches() { - List branches = new ArrayList(2); + List branches = new ArrayList<>(2); branches.add(thenRegion); branches.add(elseRegion); return Collections.unmodifiableList(branches); diff --git a/jadx-core/src/main/java/jadx/core/dex/regions/loops/LoopRegion.java b/jadx-core/src/main/java/jadx/core/dex/regions/loops/LoopRegion.java index eaa0117e4..a7cbfd74c 100644 --- a/jadx-core/src/main/java/jadx/core/dex/regions/loops/LoopRegion.java +++ b/jadx-core/src/main/java/jadx/core/dex/regions/loops/LoopRegion.java @@ -136,7 +136,7 @@ public final class LoopRegion extends AbstractRegion { @Override public List getSubBlocks() { - List all = new ArrayList(3); + List all = new ArrayList<>(3); if (preCondition != null) { all.add(preCondition); } diff --git a/jadx-core/src/main/java/jadx/core/dex/trycatch/ExceptionHandler.java b/jadx-core/src/main/java/jadx/core/dex/trycatch/ExceptionHandler.java index c8afd6811..9662a2d98 100644 --- a/jadx-core/src/main/java/jadx/core/dex/trycatch/ExceptionHandler.java +++ b/jadx-core/src/main/java/jadx/core/dex/trycatch/ExceptionHandler.java @@ -16,7 +16,7 @@ public class ExceptionHandler { private final int handleOffset; private BlockNode handlerBlock; - private final List blocks = new ArrayList(); + private final List blocks = new ArrayList<>(); private IContainer handlerRegion; private InsnArg arg; diff --git a/jadx-core/src/main/java/jadx/core/dex/trycatch/TryCatchBlock.java b/jadx-core/src/main/java/jadx/core/dex/trycatch/TryCatchBlock.java index 5fe4e5d4f..795abe9f1 100644 --- a/jadx-core/src/main/java/jadx/core/dex/trycatch/TryCatchBlock.java +++ b/jadx-core/src/main/java/jadx/core/dex/trycatch/TryCatchBlock.java @@ -23,8 +23,8 @@ public class TryCatchBlock { private final CatchAttr attr; public TryCatchBlock() { - handlers = new LinkedList(); - insns = new ArrayList(); + handlers = new LinkedList<>(); + insns = new ArrayList<>(); attr = new CatchAttr(this); } @@ -68,10 +68,9 @@ public class TryCatchBlock { BlockUtils.skipPredSyntheticPaths(block); block.add(AFlag.SKIP); ExcHandlerAttr excHandlerAttr = block.get(AType.EXC_HANDLER); - if (excHandlerAttr != null) { - if (excHandlerAttr.getHandler().equals(handler)) { - block.remove(AType.EXC_HANDLER); - } + if (excHandlerAttr != null + && excHandlerAttr.getHandler().equals(handler)) { + block.remove(AType.EXC_HANDLER); } SplitterBlockAttr splitter = handler.getHandlerBlock().get(AType.SPLITTER_BLOCK); if (splitter != null) { diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/AbstractVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/AbstractVisitor.java index 98f844c84..821668b9f 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/AbstractVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/AbstractVisitor.java @@ -9,15 +9,17 @@ public class AbstractVisitor implements IDexTreeVisitor { @Override public void init(RootNode root) throws JadxException { + // no op implementation } @Override public boolean visit(ClassNode cls) throws JadxException { + // no op implementation return true; } @Override public void visit(MethodNode mth) throws JadxException { + // no op implementation } - } diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/CodeShrinker.java b/jadx-core/src/main/java/jadx/core/dex/visitors/CodeShrinker.java index c9c44378d..a8f3c9763 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/CodeShrinker.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/CodeShrinker.java @@ -57,7 +57,7 @@ public class CodeShrinker extends AbstractVisitor { } public static List getArgs(InsnNode insn) { - List args = new LinkedList(); + List args = new LinkedList<>(); addArgs(insn, args); return args; } @@ -191,11 +191,11 @@ public class CodeShrinker extends AbstractVisitor { } InsnList insnList = new InsnList(block.getInstructions()); int insnCount = insnList.size(); - List argsList = new ArrayList(insnCount); + List argsList = new ArrayList<>(insnCount); for (int i = 0; i < insnCount; i++) { argsList.add(new ArgsInfo(insnList.get(i), argsList, i)); } - List wrapList = new ArrayList(); + List wrapList = new ArrayList<>(); for (ArgsInfo argsInfo : argsList) { List args = argsInfo.getArgs(); if (args.isEmpty()) { diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/ConstInlineVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/ConstInlineVisitor.java index 100d0092c..fe7aa078b 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/ConstInlineVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/ConstInlineVisitor.java @@ -31,7 +31,7 @@ public class ConstInlineVisitor extends AbstractVisitor { if (mth.isNoCode()) { return; } - List toRemove = new ArrayList(); + List toRemove = new ArrayList<>(); for (BlockNode block : mth.getBasicBlocks()) { toRemove.clear(); for (InsnNode insn : block.getInstructions()) { @@ -99,7 +99,7 @@ public class ConstInlineVisitor extends AbstractVisitor { private static boolean replaceConst(MethodNode mth, InsnNode constInsn, long literal) { SSAVar sVar = constInsn.getResult().getSVar(); - List use = new ArrayList(sVar.getUseList()); + List use = new ArrayList<>(sVar.getUseList()); int replaceCount = 0; for (RegisterArg arg : use) { InsnNode useInsn = arg.getParentInsn(); diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/DebugInfoVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/DebugInfoVisitor.java index 69375ff84..e7c69ef36 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/DebugInfoVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/DebugInfoVisitor.java @@ -1,8 +1,5 @@ package jadx.core.dex.visitors; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import jadx.core.dex.instructions.args.ArgType; import jadx.core.dex.instructions.args.RegisterArg; import jadx.core.dex.nodes.BlockNode; @@ -14,6 +11,9 @@ import jadx.core.utils.ErrorsCounter; import jadx.core.utils.exceptions.DecodeException; import jadx.core.utils.exceptions.JadxException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class DebugInfoVisitor extends AbstractVisitor { private static final Logger LOG = LoggerFactory.getLogger(DebugInfoVisitor.class); @@ -26,7 +26,7 @@ public class DebugInfoVisitor extends AbstractVisitor { processDebugInfo(mth, debugOffset); } } catch (Exception e) { - LOG.error("Error in debug info parser: " + ErrorsCounter.formatErrorMsg(mth, e.getMessage()), e); + LOG.error("Error in debug info parser: {}", ErrorsCounter.formatErrorMsg(mth, e.getMessage()), e); } finally { mth.unloadInsnArr(); } diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/DotGraphVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/DotGraphVisitor.java index 35c495e7d..54eaa4823 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/DotGraphVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/DotGraphVisitor.java @@ -96,7 +96,7 @@ public class DotGraphVisitor extends AbstractVisitor { + "(" + Utils.listToString(mth.getArguments(true)) + ") ")); String attrs = attributesString(mth); - if (attrs.length() != 0) { + if (!attrs.isEmpty()) { dot.add(" | ").add(attrs); } dot.add("}\"];"); @@ -122,7 +122,7 @@ public class DotGraphVisitor extends AbstractVisitor { processRegion(mth, h.getHandlerRegion()); } } - Set regionsBlocks = new HashSet(mth.getBasicBlocks().size()); + Set regionsBlocks = new HashSet<>(mth.getBasicBlocks().size()); RegionUtils.getAllRegionBlocks(mth.getRegion(), regionsBlocks); for (ExceptionHandler handler : mth.getExceptionHandlers()) { IContainer handlerRegion = handler.getHandlerRegion(); @@ -143,7 +143,7 @@ public class DotGraphVisitor extends AbstractVisitor { dot.startLine("subgraph " + makeName(region) + " {"); dot.startLine("label = \"").add(r.toString()); String attrs = attributesString(r); - if (attrs.length() != 0) { + if (!attrs.isEmpty()) { dot.add(" | ").add(attrs); } dot.add("\";"); @@ -171,11 +171,11 @@ public class DotGraphVisitor extends AbstractVisitor { dot.add("label=\"{"); dot.add(String.valueOf(block.getId())).add("\\:\\ "); dot.add(InsnUtils.formatOffset(block.getStartOffset())); - if (attrs.length() != 0) { + if (!attrs.isEmpty()) { dot.add('|').add(attrs); } String insns = insertInsns(mth, block); - if (insns.length() != 0) { + if (!insns.isEmpty()) { dot.add('|').add(insns); } dot.add("}\"];"); @@ -208,11 +208,11 @@ public class DotGraphVisitor extends AbstractVisitor { dot.add("color=red,"); } dot.add("label=\"{"); - if (attrs.length() != 0) { + if (!attrs.isEmpty()) { dot.add(attrs); } String insns = insertInsns(mth, block); - if (insns.length() != 0) { + if (!insns.isEmpty()) { dot.add('|').add(insns); } dot.add("}\"];"); diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/EnumVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/EnumVisitor.java index 4a7b2d433..43c376be0 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/EnumVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/EnumVisitor.java @@ -64,7 +64,7 @@ public class EnumVisitor extends AbstractVisitor { String valuesMethod = "values()" + TypeGen.signature(ArgType.array(clsType)); // collect enum fields, remove synthetic - List enumFields = new ArrayList(); + List enumFields = new ArrayList<>(); for (FieldNode f : cls.getFields()) { if (f.getAccessFlags().isEnum()) { enumFields.add(f); @@ -101,7 +101,7 @@ public class EnumVisitor extends AbstractVisitor { // move enum specific instruction from static method to separate list BlockNode staticBlock = staticMethod.getBasicBlocks().get(0); - List enumPutInsns = new ArrayList(); + List enumPutInsns = new ArrayList<>(); List list = staticBlock.getInstructions(); int size = list.size(); for (int i = 0; i < size; i++) { diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/ExtractFieldInit.java b/jadx-core/src/main/java/jadx/core/dex/visitors/ExtractFieldInit.java index 6608f6574..14ea83198 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/ExtractFieldInit.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/ExtractFieldInit.java @@ -102,7 +102,7 @@ public class ExtractFieldInit extends AbstractVisitor { private static class InitInfo { private final MethodNode constrMth; - private final List putInsns = new ArrayList(); + private final List putInsns = new ArrayList<>(); private InitInfo(MethodNode constrMth) { this.constrMth = constrMth; @@ -122,7 +122,7 @@ public class ExtractFieldInit extends AbstractVisitor { if (constrList.isEmpty()) { return; } - List infoList = new ArrayList(constrList.size()); + List infoList = new ArrayList<>(constrList.size()); for (MethodNode constrMth : constrList) { if (constrMth.isNoCode() || constrMth.getBasicBlocks().isEmpty()) { return; @@ -151,7 +151,7 @@ public class ExtractFieldInit extends AbstractVisitor { if (common == null) { return; } - Set fields = new HashSet(); + Set fields = new HashSet<>(); for (InsnNode insn : common.getPutInsns()) { FieldInfo fieldInfo = (FieldInfo) ((IndexInsnNode) insn).getIndex(); FieldNode field = cls.dex().resolveField(fieldInfo); @@ -200,7 +200,7 @@ public class ExtractFieldInit extends AbstractVisitor { } else { return arg.isLiteral() || arg.isThis(); } - Set regs = new HashSet(); + Set regs = new HashSet<>(); insn.getRegisterArgs(regs); if (!regs.isEmpty()) { for (RegisterArg reg : regs) { @@ -213,7 +213,7 @@ public class ExtractFieldInit extends AbstractVisitor { } private static List getConstructorsList(ClassNode cls) { - List list = new ArrayList(); + List list = new ArrayList<>(); for (MethodNode mth : cls.getMethods()) { AccessInfo accFlags = mth.getAccessFlags(); if (!accFlags.isStatic() && accFlags.isConstructor()) { @@ -230,7 +230,7 @@ public class ExtractFieldInit extends AbstractVisitor { if (mth.isNoCode()) { return Collections.emptyList(); } - List assignInsns = new ArrayList(); + List assignInsns = new ArrayList<>(); for (BlockNode block : mth.getBasicBlocks()) { for (InsnNode insn : block.getInstructions()) { if (insn.getType() == putInsn) { diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/IDexTreeVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/IDexTreeVisitor.java index 327056f82..6499222fc 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/IDexTreeVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/IDexTreeVisitor.java @@ -19,14 +19,11 @@ public interface IDexTreeVisitor { * Visit class * * @return false for disable child methods and inner classes traversal - * @throws JadxException */ boolean visit(ClassNode cls) throws JadxException; /** * Visit method - * - * @throws JadxException */ void visit(MethodNode mth) throws JadxException; } diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/ModVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/ModVisitor.java index e67f63d0c..a80f435f5 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/ModVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/ModVisitor.java @@ -134,7 +134,7 @@ public class ModVisitor extends AbstractVisitor { break; case MOVE_EXCEPTION: - processMoveException(mth, block, insn, remover); + processMoveException(block, insn, remover); break; case ARITH: @@ -216,7 +216,7 @@ public class ModVisitor extends AbstractVisitor { RegisterArg resultArg = co.getResult(); if (!resultArg.equals(instArg)) { // replace all usages of 'instArg' with result of this constructor instruction - for (RegisterArg useArg : new ArrayList(instArg.getSVar().getUseList())) { + for (RegisterArg useArg : new ArrayList<>(instArg.getSVar().getUseList())) { RegisterArg dup = resultArg.duplicate(); InsnNode parentInsn = useArg.getParentInsn(); parentInsn.replaceArg(useArg, dup); @@ -284,7 +284,7 @@ public class ModVisitor extends AbstractVisitor { } private static Map getArgsToFieldsMapping(MethodNode callMthNode, ConstructorInsn co) { - Map map = new LinkedHashMap(); + Map map = new LinkedHashMap<>(); ClassNode parentClass = callMthNode.getParentClass(); List argList = callMthNode.getArguments(false); int startArg = parentClass.getAccessFlags().isStatic() ? 0 : 1; @@ -360,10 +360,10 @@ public class ModVisitor extends AbstractVisitor { ArgType insnArrayType = insn.getResult().getType(); ArgType insnElementType = insnArrayType.getArrayElement(); ArgType elType = insn.getElementType(); - if (!elType.isTypeKnown() && insnElementType.isPrimitive()) { - if (elType.contains(insnElementType.getPrimitiveType())) { - elType = insnElementType; - } + if (!elType.isTypeKnown() + && insnElementType.isPrimitive() + && elType.contains(insnElementType.getPrimitiveType())) { + elType = insnElementType; } if (!elType.equals(insnElementType) && !insnArrayType.equals(ArgType.OBJECT)) { ErrorsCounter.methodError(mth, @@ -429,8 +429,7 @@ public class ModVisitor extends AbstractVisitor { return null; } - private static void processMoveException(MethodNode mth, BlockNode block, InsnNode insn, - InstructionRemover remover) { + private static void processMoveException(BlockNode block, InsnNode insn, InstructionRemover remover) { ExcHandlerAttr excHandlerAttr = block.get(AType.EXC_HANDLER); if (excHandlerAttr == null) { return; diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/ReSugarCode.java b/jadx-core/src/main/java/jadx/core/dex/visitors/ReSugarCode.java index de3996ade..b79d781ec 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/ReSugarCode.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/ReSugarCode.java @@ -65,7 +65,8 @@ public class ReSugarCode extends AbstractVisitor { return processNewArray(mth, instructions, i, remover); case SWITCH: - return processEnumSwitch(mth, (SwitchNode) insn); + processEnumSwitch(mth, (SwitchNode) insn); + return null; default: return null; @@ -104,43 +105,43 @@ public class ReSugarCode extends AbstractVisitor { return filledArr; } - private static InsnNode processEnumSwitch(MethodNode mth, SwitchNode insn) { + private static void processEnumSwitch(MethodNode mth, SwitchNode insn) { InsnArg arg = insn.getArg(0); if (!arg.isInsnWrap()) { - return null; + return; } InsnNode wrapInsn = ((InsnWrapArg) arg).getWrapInsn(); if (wrapInsn.getType() != InsnType.AGET) { - return null; + return; } EnumMapInfo enumMapInfo = checkEnumMapAccess(mth, wrapInsn); if (enumMapInfo == null) { - return null; + return; } FieldNode enumMapField = enumMapInfo.getMapField(); InsnArg invArg = enumMapInfo.getArg(); EnumMapAttr.KeyValueMap valueMap = getEnumMap(mth, enumMapField); if (valueMap == null) { - return null; + return; } Object[] keys = insn.getKeys(); for (Object key : keys) { Object newKey = valueMap.get(key); if (newKey == null) { - return null; + return; } } // replace confirmed if (!insn.replaceArg(arg, invArg)) { - return null; + return; } for (int i = 0; i < keys.length; i++) { keys[i] = valueMap.get(keys[i]); } enumMapField.add(AFlag.DONT_GENERATE); checkAndHideClass(enumMapField.getParentClass()); - return null; + return; } private static EnumMapAttr.KeyValueMap getEnumMap(MethodNode mth, FieldNode field) { diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/RenameVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/RenameVisitor.java index e0d318d06..37a8e4c74 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/RenameVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/RenameVisitor.java @@ -40,9 +40,9 @@ public class RenameVisitor extends AbstractVisitor { return; } InputFile firstInputFile = dexNodes.get(0).getDexFile().getInputFile(); - final String firstInputFileName = firstInputFile.getFile().getAbsolutePath(); - final String inputPath = FilenameUtils.getFullPathNoEndSeparator(firstInputFileName); - final String inputName = FilenameUtils.getBaseName(firstInputFileName); + String firstInputFileName = firstInputFile.getFile().getAbsolutePath(); + String inputPath = FilenameUtils.getFullPathNoEndSeparator(firstInputFileName); + String inputName = FilenameUtils.getBaseName(firstInputFileName); File deobfMapFile = new File(inputPath, inputName + ".jobf"); deobfuscator = new Deobfuscator(args, dexNodes, deobfMapFile); @@ -64,7 +64,7 @@ public class RenameVisitor extends AbstractVisitor { } private void checkClasses(RootNode root) { - Set clsNames = new HashSet(); + Set clsNames = new HashSet<>(); for (ClassNode cls : root.getClasses(true)) { checkClassName(cls); if (!CASE_SENSITIVE_FS) { @@ -101,7 +101,7 @@ public class RenameVisitor extends AbstractVisitor { } private void checkFields(ClassNode cls) { - Set names = new HashSet(); + Set names = new HashSet<>(); for (FieldNode field : cls.getFields()) { FieldInfo fieldInfo = field.getFieldInfo(); if (!names.add(fieldInfo.getAlias())) { @@ -111,7 +111,7 @@ public class RenameVisitor extends AbstractVisitor { } private void checkMethods(ClassNode cls) { - Set names = new HashSet(); + Set names = new HashSet<>(); for (MethodNode mth : cls.getMethods()) { if (mth.contains(AFlag.DONT_GENERATE)) { continue; diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/SimplifyVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/SimplifyVisitor.java index b64490234..8f397a496 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/SimplifyVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/SimplifyVisitor.java @@ -298,7 +298,7 @@ public class SimplifyVisitor extends AbstractVisitor { } private static List flattenInsnChain(InsnNode insn) { - List chain = new ArrayList(); + List chain = new ArrayList<>(); InsnArg i = insn.getArg(0); while (i.isInsnWrap()) { InsnNode wrapInsn = ((InsnWrapArg) i).getWrapInsn(); diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockFinallyExtract.java b/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockFinallyExtract.java index bb9a3151e..f858cb770 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockFinallyExtract.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockFinallyExtract.java @@ -29,6 +29,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -93,7 +94,7 @@ public class BlockFinallyExtract extends AbstractVisitor { private static boolean extractFinally(MethodNode mth, ExceptionHandler handler) { int count = handler.getBlocks().size(); BitSet bs = new BitSet(count); - List blocks = new ArrayList(count); + List blocks = new ArrayList<>(count); for (BlockNode block : handler.getBlocks()) { List insns = block.getInstructions(); if (!insns.isEmpty()) { @@ -108,8 +109,8 @@ public class BlockFinallyExtract extends AbstractVisitor { return false; } - List removes = new LinkedList(); - Set splitters = new HashSet(); + List removes = new LinkedList<>(); + Set splitters = new HashSet<>(); // remove 'finally' from handlers TryCatchBlock tryBlock = handler.getTryBlock(); @@ -238,7 +239,6 @@ public class BlockFinallyExtract extends AbstractVisitor { if (!processed.get(fromRegNum)) { boolean liveFromBefore = laBefore.isLive(insertBlockBefore, fromRegNum); boolean liveFromAfter = laAfter.isLive(insertBlock, fromRegNum); - // boolean liveToBefore = laBefore.isLive(insertBlock, toRegNum); boolean liveToAfter = laAfter.isLive(insertBlock, toRegNum); if (liveToAfter && liveFromBefore) { // merge 'to' and 'from' registers @@ -308,7 +308,7 @@ public class BlockFinallyExtract extends AbstractVisitor { } private static boolean mergeReturns(MethodNode mth, Set outs) { - Set rightOuts = new HashSet(); + Set rightOuts = new HashSet<>(); boolean allReturns = true; for (BlocksPair outPair : outs) { BlockNode first = outPair.getFirst(); @@ -346,7 +346,8 @@ public class BlockFinallyExtract extends AbstractVisitor { /** * 'Finally' instructions can start in the middle of the first block. */ - private static BlocksRemoveInfo isStartBlock(BlockNode remBlock, BlockNode startBlock) { + private static @Nullable + BlocksRemoveInfo isStartBlock(BlockNode remBlock, BlockNode startBlock) { List remInsns = remBlock.getInstructions(); List startInsns = startBlock.getInstructions(); if (remInsns.size() < startInsns.size()) { @@ -400,8 +401,8 @@ public class BlockFinallyExtract extends AbstractVisitor { return true; } - private static boolean checkBlocksTree(BlockNode remBlock, BlockNode startBlock, BlocksRemoveInfo removeInfo, - BitSet bs) { + private static boolean checkBlocksTree(BlockNode remBlock, BlockNode startBlock, + @NotNull BlocksRemoveInfo removeInfo, BitSet bs) { // skip check on start block if (!removeInfo.getProcessed().isEmpty() && !sameBlocks(remBlock, startBlock, removeInfo)) { @@ -434,7 +435,8 @@ public class BlockFinallyExtract extends AbstractVisitor { return true; } - private static boolean sameBlocks(BlockNode remBlock, BlockNode finallyBlock, BlocksRemoveInfo removeInfo) { + private static boolean sameBlocks(BlockNode remBlock, BlockNode finallyBlock, + @NotNull BlocksRemoveInfo removeInfo) { List first = remBlock.getInstructions(); List second = finallyBlock.getInstructions(); if (first.size() < second.size()) { @@ -453,7 +455,7 @@ public class BlockFinallyExtract extends AbstractVisitor { return true; } - private static boolean sameInsns(InsnNode remInsn, InsnNode fInsn, BlocksRemoveInfo removeInfo) { + private static boolean sameInsns(InsnNode remInsn, InsnNode fInsn, @Nullable BlocksRemoveInfo removeInfo) { if (!remInsn.isSame(fInsn)) { return false; } @@ -541,7 +543,7 @@ public class BlockFinallyExtract extends AbstractVisitor { if (filtPreds.size() > 1) { BlockNode pred = sOut.getPredecessors().get(0); BlockNode newPred = BlockSplitter.insertBlockBetween(mth, pred, sOut); - for (BlockNode predBlock : new ArrayList(sOut.getPredecessors())) { + for (BlockNode predBlock : new ArrayList<>(sOut.getPredecessors())) { if (predBlock != newPred) { removeConnection(predBlock, sOut); connect(predBlock, newPred); @@ -566,7 +568,7 @@ public class BlockFinallyExtract extends AbstractVisitor { } // redirect input edges - for (BlockNode pred : new ArrayList(remBlock.getPredecessors())) { + for (BlockNode pred : new ArrayList<>(remBlock.getPredecessors())) { BlockNode middle = insertBlockBetween(mth, pred, remBlock); removeConnection(middle, remBlock); connect(middle, startBlock); @@ -593,7 +595,7 @@ public class BlockFinallyExtract extends AbstractVisitor { BlockNode newBlock = BlockSplitter.startNewBlock(mth, -1); newBlock.getSuccessors().addAll(block.getSuccessors()); - for (BlockNode s : new ArrayList(block.getSuccessors())) { + for (BlockNode s : new ArrayList<>(block.getSuccessors())) { removeConnection(block, s); connect(newBlock, s); } @@ -684,7 +686,7 @@ public class BlockFinallyExtract extends AbstractVisitor { if (edgeAttr == null) { return; } - List merge = new LinkedList(); + List merge = new LinkedList<>(); for (BlockNode blockNode : pred.getSuccessors()) { if (blockNode.contains(AFlag.RETURN)) { merge.add(blockNode); @@ -718,7 +720,7 @@ public class BlockFinallyExtract extends AbstractVisitor { } private static void mergeSyntheticPredecessors(MethodNode mth, BlockNode block) { - List preds = new ArrayList(block.getPredecessors()); + List preds = new ArrayList<>(block.getPredecessors()); Iterator it = preds.iterator(); while (it.hasNext()) { BlockNode predBlock = it.next(); diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockFinish.java b/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockFinish.java index bbbe26db2..4ba544f28 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockFinish.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockFinish.java @@ -63,7 +63,7 @@ public class BlockFinish extends AbstractVisitor { if (handlerBlock.getPredecessors().size() < 2) { return; } - Map splitters = new HashMap(); + Map splitters = new HashMap<>(); for (BlockNode pred : handlerBlock.getPredecessors()) { pred = BlockUtils.skipSyntheticPredecessor(pred); SplitterBlockAttr splitterAttr = pred.get(AType.SPLITTER_BLOCK); diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockProcessor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockProcessor.java index 89f21bef4..ca6472158 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockProcessor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockProcessor.java @@ -292,7 +292,7 @@ public class BlockProcessor extends AbstractVisitor { BlockNode loopEnd = loop.getEnd(); if (loopEnd.getPredecessors().size() > 1) { boolean change = false; - List nodes = new ArrayList(loopEnd.getPredecessors()); + List nodes = new ArrayList<>(loopEnd.getPredecessors()); for (BlockNode pred : nodes) { if (!pred.contains(AFlag.SYNTHETIC)) { BlockSplitter.insertBlockBetween(mth, pred, loopEnd); diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockSplitter.java b/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockSplitter.java index fcd6da704..4b5f509f5 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockSplitter.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockSplitter.java @@ -47,7 +47,7 @@ public class BlockSplitter extends AbstractVisitor { private static void splitBasicBlocks(MethodNode mth) { InsnNode prevInsn = null; - Map blocksMap = new HashMap(); + Map blocksMap = new HashMap<>(); BlockNode curBlock = startNewBlock(mth, 0); mth.setEnterBlock(curBlock); diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/helpers/BlocksRemoveInfo.java b/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/helpers/BlocksRemoveInfo.java index 5e6d46871..6493c4935 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/helpers/BlocksRemoveInfo.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/helpers/BlocksRemoveInfo.java @@ -11,9 +11,9 @@ import java.util.Set; import org.jetbrains.annotations.Nullable; public final class BlocksRemoveInfo { - private final Set processed = new HashSet(); - private final Set outs = new HashSet(); - private final Map regMap = new HashMap(); + private final Set processed = new HashSet<>(); + private final Set outs = new HashSet<>(); + private final Map regMap = new HashMap<>(); private BlocksPair start; private BlocksPair end; diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/CheckRegions.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/CheckRegions.java index e5f08c294..277e9296c 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/CheckRegions.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/CheckRegions.java @@ -29,7 +29,7 @@ public class CheckRegions extends AbstractVisitor { } // check if all blocks included in regions - final Set blocksInRegions = new HashSet(); + Set blocksInRegions = new HashSet<>(); DepthRegionTraversal.traverse(mth, new AbstractRegionVisitor() { @Override public void processBlock(MethodNode mth, IBlock container) { diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/IfMakerHelper.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/IfMakerHelper.java index e0d3dde35..bf0977bd2 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/IfMakerHelper.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/IfMakerHelper.java @@ -49,8 +49,8 @@ public class IfMakerHelper { } static IfInfo restructureIf(MethodNode mth, BlockNode block, IfInfo info) { - final BlockNode thenBlock = info.getThenBlock(); - final BlockNode elseBlock = info.getElseBlock(); + BlockNode thenBlock = info.getThenBlock(); + BlockNode elseBlock = info.getElseBlock(); // select 'then', 'else' and 'exit' blocks if (thenBlock.contains(AFlag.RETURN) && elseBlock.contains(AFlag.RETURN)) { diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/IfRegionVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/IfRegionVisitor.java index db0f79453..0816c89ed 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/IfRegionVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/IfRegionVisitor.java @@ -110,7 +110,7 @@ public class IfRegionVisitor extends AbstractVisitor implements IRegionVisitor, private static void moveReturnToThenBlock(MethodNode mth, IfRegion ifRegion) { if (!mth.getReturnType().equals(ArgType.VOID) && hasSimpleReturnBlock(ifRegion.getElseRegion()) - /*&& insnsCount(ifRegion.getThenRegion()) < 2*/) { + /*&& insnsCount(ifRegion.getThenRegion()) < 2*/) { invertIfRegion(ifRegion); } } diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/LoopRegionVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/LoopRegionVisitor.java index 1a3a7c085..6e0878d23 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/LoopRegionVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/LoopRegionVisitor.java @@ -105,7 +105,7 @@ public class LoopRegionVisitor extends AbstractVisitor implements IRegionVisitor return false; } // can't make loop if argument from increment instruction is assign in loop - List args = new LinkedList(); + List args = new LinkedList<>(); incrInsn.getRegisterArgs(args); for (RegisterArg iArg : args) { if (assignOnlyInLoop(mth, loopRegion, iArg)) { @@ -230,7 +230,7 @@ public class LoopRegionVisitor extends AbstractVisitor implements IRegionVisitor || !checkInvoke(nextCall, "java.util.Iterator", "next()Ljava/lang/Object;", 0)) { return false; } - List toSkip = new LinkedList(); + List toSkip = new LinkedList<>(); RegisterArg iterVar = nextCall.getResult(); if (iterVar == null) { return false; 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 683eea50f..456967ab4 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 @@ -41,7 +41,7 @@ public class ProcessTryCatchRegions extends AbstractRegionVisitor { return; } - final Map tryBlocksMap = new HashMap(2); + Map tryBlocksMap = new HashMap<>(2); searchTryCatchDominators(mth, tryBlocksMap); IRegionIterativeVisitor visitor = new IRegionIterativeVisitor() { @@ -55,7 +55,7 @@ public class ProcessTryCatchRegions extends AbstractRegionVisitor { } private static void searchTryCatchDominators(MethodNode mth, Map tryBlocksMap) { - Set tryBlocks = new HashSet(); + Set tryBlocks = new HashSet<>(); // collect all try/catch blocks for (BlockNode block : mth.getBasicBlocks()) { CatchAttr c = block.get(AType.CATCH_BLOCK); diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/ProcessVariables.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/ProcessVariables.java index f4fc2a21d..b8541b4d0 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/ProcessVariables.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/ProcessVariables.java @@ -72,8 +72,8 @@ public class ProcessVariables extends AbstractVisitor { private RegisterArg arg; private VarName varName; private IRegion argRegion; - private final Set usage = new HashSet(2); - private final Set assigns = new HashSet(2); + private final Set usage = new HashSet<>(2); + private final Set assigns = new HashSet<>(2); public void setArg(RegisterArg arg) { this.arg = arg; @@ -119,7 +119,7 @@ public class ProcessVariables extends AbstractVisitor { public CollectUsageRegionVisitor(Map usageMap) { this.usageMap = usageMap; - args = new ArrayList(); + args = new ArrayList<>(); } @Override @@ -177,7 +177,7 @@ public class ProcessVariables extends AbstractVisitor { if (mth.isNoCode()) { return; } - final Map usageMap = new LinkedHashMap(); + Map usageMap = new LinkedHashMap<>(); for (RegisterArg arg : mth.getArguments(true)) { addToUsageMap(arg, usageMap); } @@ -212,7 +212,7 @@ public class ProcessVariables extends AbstractVisitor { return; } - Map regionsOrder = new HashMap(); + Map regionsOrder = new HashMap<>(); calculateOrder(mth.getRegion(), regionsOrder, 0, true); for (Iterator> it = usageMap.entrySet().iterator(); it.hasNext(); ) { 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 3f0895cfc..5f7494afc 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 @@ -158,7 +158,7 @@ public class RegionMaker { // set exit blocks scan order priority // this can help if loop have several exits (after using 'break' or 'return' in loop) - List exitBlocks = new ArrayList(exitBlocksSet.size()); + List exitBlocks = new ArrayList<>(exitBlocksSet.size()); BlockNode nextStart = getNextBlock(loopStart); if (nextStart != null && exitBlocksSet.remove(nextStart)) { exitBlocks.add(nextStart); @@ -511,8 +511,8 @@ public class RegionMaker { synchRegion.getSubBlocks().add(block); curRegion.getSubBlocks().add(synchRegion); - Set exits = new HashSet(); - Set cacheSet = new HashSet(); + Set exits = new HashSet<>(); + Set cacheSet = new HashSet<>(); traverseMonitorExits(synchRegion, insn.getArg(0), block, exits, cacheSet); for (InsnNode exitInsn : synchRegion.getExitInsns()) { @@ -691,19 +691,19 @@ public class RegionMaker { int len = insn.getTargets().length; // sort by target - Map> casesMap = new LinkedHashMap>(len); + Map> casesMap = new LinkedHashMap<>(len); for (int i = 0; i < len; i++) { Object key = insn.getKeys()[i]; int targ = insn.getTargets()[i]; List keys = casesMap.get(targ); if (keys == null) { - keys = new ArrayList(2); + keys = new ArrayList<>(2); casesMap.put(targ, keys); } keys.add(key); } - Map> blocksMap = new LinkedHashMap>(len); + Map> blocksMap = new LinkedHashMap<>(len); for (Map.Entry> entry : casesMap.entrySet()) { BlockNode c = getBlockByOffset(entry.getKey(), block.getSuccessors()); if (c == null) { @@ -717,7 +717,7 @@ public class RegionMaker { } LoopInfo loop = mth.getLoopForBlock(block); - Map fallThroughCases = new LinkedHashMap(); + Map fallThroughCases = new LinkedHashMap<>(); List basicBlocks = mth.getBasicBlocks(); BitSet outs = new BitSet(basicBlocks.size()); @@ -753,14 +753,13 @@ public class RegionMaker { stack.addExits(BlockUtils.bitSetToBlocks(mth, outs)); // check cases order if fall through case exists - if (!fallThroughCases.isEmpty()) { + if (!fallThroughCases.isEmpty() + && isBadCasesOrder(blocksMap, fallThroughCases)) { + LOG.debug("Fixing incorrect switch cases order, method: {}", mth); + blocksMap = reOrderSwitchCases(blocksMap, fallThroughCases); if (isBadCasesOrder(blocksMap, fallThroughCases)) { - LOG.debug("Fixing incorrect switch cases order, method: {}", mth); - blocksMap = reOrderSwitchCases(blocksMap, fallThroughCases); - if (isBadCasesOrder(blocksMap, fallThroughCases)) { - LOG.error("Can't fix incorrect switch cases order, method: {}", mth); - mth.add(AFlag.INCONSISTENT_CODE); - } + LOG.error("Can't fix incorrect switch cases order, method: {}", mth); + mth.add(AFlag.INCONSISTENT_CODE); } } @@ -845,8 +844,8 @@ public class RegionMaker { return out; } - private boolean isBadCasesOrder(final Map> blocksMap, - final Map fallThroughCases) { + private boolean isBadCasesOrder(Map> blocksMap, + Map fallThroughCases) { BlockNode nextCaseBlock = null; for (BlockNode caseBlock : blocksMap.keySet()) { if (nextCaseBlock != null && !caseBlock.equals(nextCaseBlock)) { @@ -858,8 +857,8 @@ public class RegionMaker { } private Map> reOrderSwitchCases(Map> blocksMap, - final Map fallThroughCases) { - List list = new ArrayList(blocksMap.size()); + Map fallThroughCases) { + List list = new ArrayList<>(blocksMap.size()); list.addAll(blocksMap.keySet()); Collections.sort(list, new Comparator() { @Override @@ -876,7 +875,7 @@ public class RegionMaker { } }); - Map> newBlocksMap = new LinkedHashMap>(blocksMap.size()); + Map> newBlocksMap = new LinkedHashMap<>(blocksMap.size()); for (BlockNode key : list) { newBlocksMap.put(key, blocksMap.get(key)); } @@ -902,13 +901,13 @@ public class RegionMaker { } public IRegion processTryCatchBlocks(MethodNode mth) { - Set tcs = new HashSet(); + Set tcs = new HashSet<>(); for (ExceptionHandler handler : mth.getExceptionHandlers()) { tcs.add(handler.getTryBlock()); } for (TryCatchBlock tc : tcs) { - List blocks = new ArrayList(tc.getHandlersCount()); - Set splitters = new HashSet(); + List blocks = new ArrayList<>(tc.getHandlersCount()); + Set splitters = new HashSet<>(); for (ExceptionHandler handler : tc.getHandlers()) { BlockNode handlerBlock = handler.getHandlerBlock(); if (handlerBlock != null) { @@ -918,7 +917,7 @@ public class RegionMaker { LOG.debug(ErrorsCounter.formatErrorMsg(mth, "No exception handler block: " + handler)); } } - Set exits = new HashSet(); + Set exits = new HashSet<>(); for (BlockNode splitter : splitters) { for (BlockNode handler : blocks) { List s = splitter.getSuccessors(); @@ -944,10 +943,10 @@ public class RegionMaker { * Search handlers successor blocks not included in any region. */ protected IRegion processHandlersOutBlocks(MethodNode mth, Set tcs) { - Set allRegionBlocks = new HashSet(); + Set allRegionBlocks = new HashSet<>(); RegionUtils.getAllRegionBlocks(mth.getRegion(), allRegionBlocks); - Set succBlocks = new HashSet(); + Set succBlocks = new HashSet<>(); for (TryCatchBlock tc : tcs) { for (ExceptionHandler handler : tc.getHandlers()) { IContainer region = handler.getHandlerRegion(); diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionMakerVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionMakerVisitor.java index e6995a85b..6ebdde162 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionMakerVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionMakerVisitor.java @@ -113,7 +113,7 @@ public class RegionMakerVisitor extends AbstractVisitor { if (!(c instanceof Region)) { continue; } - Set blocks = new HashSet(); + Set blocks = new HashSet<>(); RegionUtils.getAllRegionBlocks(c, blocks); if (blocks.isEmpty()) { addBreakToContainer((Region) c); @@ -151,7 +151,7 @@ public class RegionMakerVisitor extends AbstractVisitor { if (RegionUtils.hasExitEdge(c)) { return; } - List insns = new ArrayList(1); + List insns = new ArrayList<>(1); insns.add(new InsnNode(InsnType.BREAK, 0)); c.add(new InsnContainer(insns)); } 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 8b09c59b2..8f97cc1f1 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 @@ -31,11 +31,11 @@ final class RegionStack { IRegion region; public State() { - exits = new HashSet(4); + exits = new HashSet<>(4); } private State(State c) { - exits = new HashSet(c.exits); + exits = new HashSet<>(c.exits); } public State copy() { @@ -55,7 +55,7 @@ final class RegionStack { if (DEBUG) { LOG.debug("New RegionStack: {}", mth); } - this.stack = new ArrayDeque(); + this.stack = new ArrayDeque<>(); this.curState = new State(); } diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/TernaryMod.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/TernaryMod.java index ae74d6e55..12d5f6ad8 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/TernaryMod.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/TernaryMod.java @@ -160,7 +160,7 @@ public class TernaryMod { if (tPhi == null || ePhi == null || tPhi != ePhi) { return false; } - Map map = new HashMap(tPhi.getArgsCount()); + Map map = new HashMap<>(tPhi.getArgsCount()); for (InsnArg arg : tPhi.getArguments()) { if (!arg.isRegister()) { continue; diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/TracedRegionVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/TracedRegionVisitor.java index 3af219739..7578b2b25 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/TracedRegionVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/TracedRegionVisitor.java @@ -9,7 +9,7 @@ import java.util.Deque; public abstract class TracedRegionVisitor implements IRegionVisitor { - protected final Deque regionStack = new ArrayDeque(); + protected final Deque regionStack = new ArrayDeque<>(); @Override public boolean enterRegion(MethodNode mth, IRegion region) { diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/ssa/SSATransform.java b/jadx-core/src/main/java/jadx/core/dex/visitors/ssa/SSATransform.java index 037f3fa65..21b88ae6f 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/ssa/SSATransform.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/ssa/SSATransform.java @@ -69,7 +69,7 @@ public class SSATransform extends AbstractVisitor { int blocksCount = blocks.size(); BitSet hasPhi = new BitSet(blocksCount); BitSet processed = new BitSet(blocksCount); - Deque workList = new LinkedList(); + Deque workList = new LinkedList<>(); BitSet assignBlocks = la.getAssignBlocks(regNum); for (int id = assignBlocks.nextSetBit(0); id >= 0; id = assignBlocks.nextSetBit(id + 1)) { @@ -221,11 +221,10 @@ public class SSATransform extends AbstractVisitor { InsnNode parentInsn = arg.getAssignInsn(); if (parentInsn != null && parentInsn.getResult() != null - && parentInsn.contains(AFlag.TRY_LEAVE)) { - if (phi.removeArg(arg)) { - argsCount--; - continue; - } + && parentInsn.contains(AFlag.TRY_LEAVE) + && phi.removeArg(arg)) { + argsCount--; + continue; } k++; } @@ -256,7 +255,7 @@ public class SSATransform extends AbstractVisitor { private static boolean fixUselessPhi(MethodNode mth) { boolean changed = false; - List insnToRemove = new ArrayList(); + List insnToRemove = new ArrayList<>(); for (SSAVar var : mth.getSVars()) { // phi result not used if (var.getUseCount() == 0) { @@ -385,7 +384,7 @@ public class SSATransform extends AbstractVisitor { return false; } List useList = resVar.getUseList(); - for (RegisterArg useArg : new ArrayList(useList)) { + for (RegisterArg useArg : new ArrayList<>(useList)) { InsnNode useInsn = useArg.getParentInsn(); if (useInsn == null || useInsn == phi) { return false; diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/PostTypeInference.java b/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/PostTypeInference.java index 88bf45bed..15a15b3a8 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/PostTypeInference.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/PostTypeInference.java @@ -149,5 +149,4 @@ public class PostTypeInference { } return change; } - } 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 9f912f681..d6e91f742 100644 --- a/jadx-core/src/main/java/jadx/core/export/ExportGradleProject.java +++ b/jadx-core/src/main/java/jadx/core/export/ExportGradleProject.java @@ -21,7 +21,7 @@ public class ExportGradleProject { private static final Logger LOG = LoggerFactory.getLogger(ExportGradleProject.class); - private static final Set IGNORE_CLS_NAMES = new HashSet(Arrays.asList( + private static final Set IGNORE_CLS_NAMES = new HashSet<>(Arrays.asList( "R", "BuildConfig" )); diff --git a/jadx-core/src/main/java/jadx/core/export/TemplateFile.java b/jadx-core/src/main/java/jadx/core/export/TemplateFile.java index ce476142e..6ea05cb9f 100644 --- a/jadx-core/src/main/java/jadx/core/export/TemplateFile.java +++ b/jadx-core/src/main/java/jadx/core/export/TemplateFile.java @@ -1,5 +1,7 @@ package jadx.core.export; +import jadx.core.utils.exceptions.JadxRuntimeException; + import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.File; @@ -34,7 +36,7 @@ public class TemplateFile { private final String templateName; private final InputStream template; - private final Map values = new HashMap(); + private final Map values = new HashMap<>(); public static TemplateFile fromResources(String path) throws FileNotFoundException { InputStream res = TemplateFile.class.getResourceAsStream(path); @@ -44,7 +46,7 @@ public class TemplateFile { return new TemplateFile(path, res); } - private TemplateFile(String name, InputStream in) throws FileNotFoundException { + private TemplateFile(String name, InputStream in) { this.templateName = name; this.template = in; } @@ -76,9 +78,7 @@ public class TemplateFile { if (template.available() == 0) { throw new IOException("Template already processed"); } - InputStream in = null; - try { - in = new BufferedInputStream(template); + try (InputStream in = new BufferedInputStream(template)) { ParserState state = new ParserState(); while (true) { int ch = in.read(); @@ -92,8 +92,6 @@ public class TemplateFile { out.write(ch); } } - } finally { - close(in); } } @@ -142,7 +140,7 @@ public class TemplateFile { return "{" + ch; case END: - throw new RuntimeException("Expected variable end: '" + parser.curVariable + throw new JadxRuntimeException("Expected variable end: '" + parser.curVariable + "' (missing second '}')"); } break; @@ -154,7 +152,7 @@ public class TemplateFile { private String processVar(String varName) { String str = values.get(varName); if (str == null) { - throw new RuntimeException("Unknown variable: '" + varName + throw new JadxRuntimeException("Unknown variable: '" + varName + "' in template: " + templateName); } return str; diff --git a/jadx-core/src/main/java/jadx/core/utils/AsmUtils.java b/jadx-core/src/main/java/jadx/core/utils/AsmUtils.java index 7164c6336..32c67240b 100644 --- a/jadx-core/src/main/java/jadx/core/utils/AsmUtils.java +++ b/jadx-core/src/main/java/jadx/core/utils/AsmUtils.java @@ -6,24 +6,17 @@ import java.io.IOException; import org.objectweb.asm.ClassReader; -import static jadx.core.utils.files.FileUtils.close; - public class AsmUtils { private AsmUtils() { } public static String getNameFromClassFile(File file) throws IOException { - String className = null; - FileInputStream in = null; - try { - in = new FileInputStream(file); + String className; + try (FileInputStream in = new FileInputStream(file)) { ClassReader classReader = new ClassReader(in); className = classReader.getClassName(); - } finally { - close(in); } return className; } - } diff --git a/jadx-core/src/main/java/jadx/core/utils/BlockUtils.java b/jadx-core/src/main/java/jadx/core/utils/BlockUtils.java index d5b5bafa8..8ea0e8e8e 100644 --- a/jadx-core/src/main/java/jadx/core/utils/BlockUtils.java +++ b/jadx-core/src/main/java/jadx/core/utils/BlockUtils.java @@ -65,7 +65,8 @@ public class BlockUtils { if (size == 1) { BlockNode first = blocks.get(0); return first != node ? first : null; - } else if (size == 2) { + } + if (size == 2) { BlockNode first = blocks.get(0); return first != node ? first : blocks.get(1); } @@ -89,7 +90,7 @@ public class BlockUtils { * Remove exception handlers from block nodes list */ private static List cleanBlockList(List list) { - List ret = new ArrayList(list.size()); + List ret = new ArrayList<>(list.size()); for (BlockNode block : list) { if (!isBlockMustBeCleared(block)) { ret.add(block); @@ -117,12 +118,10 @@ public class BlockUtils { */ public static List filterPredecessors(BlockNode block) { List predecessors = block.getPredecessors(); - List list = new ArrayList(predecessors.size()); + List list = new ArrayList<>(predecessors.size()); for (BlockNode pred : predecessors) { IgnoreEdgeAttr edgeAttr = pred.get(AType.IGNORE_EDGE); - if (edgeAttr == null) { - list.add(pred); - } else if (!edgeAttr.contains(block)) { + if (edgeAttr == null || !edgeAttr.contains(block)) { list.add(pred); } } @@ -274,7 +273,7 @@ public class BlockUtils { if (size == 0) { return Collections.emptyList(); } - List blocks = new ArrayList(size); + List blocks = new ArrayList<>(size); for (int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { BlockNode block = mth.getBasicBlocks().get(i); blocks.add(block); @@ -311,7 +310,7 @@ public class BlockUtils { * Collect blocks from all possible execution paths from 'start' to 'end' */ public static Set getAllPathsBlocks(BlockNode start, BlockNode end) { - Set set = new HashSet(); + Set set = new HashSet<>(); set.add(start); if (start != end) { addPredecessors(set, end, start); @@ -398,9 +397,10 @@ public class BlockUtils { if (!end.isDominator(start)) { return false; } - while (start.getCleanSuccessors().size() == 1) { - start = start.getCleanSuccessors().get(0); - if (start == end) { + BlockNode currentNode = start; + while (currentNode.getCleanSuccessors().size() == 1) { + currentNode = currentNode.getCleanSuccessors().get(0); + if (currentNode == end) { return true; } } @@ -452,14 +452,17 @@ public class BlockUtils { * Collect all block dominated by 'dominator', starting from 'start' */ public static List collectBlocksDominatedBy(BlockNode dominator, BlockNode start) { - List result = new ArrayList(); + List result = new ArrayList<>(); HashSet visited = new HashSet(); collectWhileDominates(dominator, start, result, visited); return result; } - private static void collectWhileDominates(BlockNode dominator, BlockNode child, List result, HashSet visited) { - if (visited.contains(child)) return; + private static void collectWhileDominates(BlockNode dominator, BlockNode child, List result, + HashSet visited) { + if (visited.contains(child)) { + return; + } visited.add(child); for (BlockNode node : child.getCleanSuccessors()) { if (node.isDominator(dominator)) { @@ -470,14 +473,18 @@ public class BlockUtils { } public static List buildSimplePath(BlockNode block) { - List list = new LinkedList(); - while (block != null - && block.getCleanSuccessors().size() < 2 - && block.getPredecessors().size() == 1) { - list.add(block); - block = getNextBlock(block); + List list = new LinkedList<>(); + BlockNode currentBlock = block; + while (currentBlock != null + && currentBlock.getCleanSuccessors().size() < 2 + && currentBlock.getPredecessors().size() == 1) { + list.add(currentBlock); + currentBlock = getNextBlock(currentBlock); } - return list.isEmpty() ? Collections.emptyList() : list; + if (list.isEmpty()) { + return Collections.emptyList(); + } + return list; } /** diff --git a/jadx-core/src/main/java/jadx/core/utils/DebugUtils.java b/jadx-core/src/main/java/jadx/core/utils/DebugUtils.java index 6b5433405..4f537b004 100644 --- a/jadx-core/src/main/java/jadx/core/utils/DebugUtils.java +++ b/jadx-core/src/main/java/jadx/core/utils/DebugUtils.java @@ -35,6 +35,9 @@ import org.slf4j.LoggerFactory; public class DebugUtils { private static final Logger LOG = LoggerFactory.getLogger(DebugUtils.class); + private DebugUtils() { + } + public static void dump(MethodNode mth) { dump(mth, ""); } @@ -46,8 +49,8 @@ public class DebugUtils { DotGraphVisitor.dumpRegions(out).visit(mth); } - public static void printRegionsWithBlock(MethodNode mth, final BlockNode block) { - final Set regions = new LinkedHashSet(); + public static void printRegionsWithBlock(MethodNode mth, BlockNode block) { + Set regions = new LinkedHashSet<>(); DepthRegionTraversal.traverse(mth, new TracedRegionVisitor() { @Override public void processBlockTraced(MethodNode mth, IBlock container, IRegion currentRegion) { @@ -126,17 +129,15 @@ public class DebugUtils { } for (RegisterArg useArg : sVar.getUseList()) { InsnNode parentInsn = useArg.getParentInsn(); - if (parentInsn != null) { - if (!parentInsn.containsArg(useArg)) { - throw new JadxRuntimeException("Incorrect use info in PHI insn"); - } + if (parentInsn != null && !parentInsn.containsArg(useArg)) { + throw new JadxRuntimeException("Incorrect use info in PHI insn"); } } } private static void checkPHI(MethodNode mth) { for (BlockNode block : mth.getBasicBlocks()) { - List phis = new ArrayList(); + List phis = new ArrayList<>(); for (InsnNode insn : block.getInstructions()) { if (insn.getType() == InsnType.PHI) { PhiInsn phi = (PhiInsn) insn; diff --git a/jadx-core/src/main/java/jadx/core/utils/EmptyBitSet.java b/jadx-core/src/main/java/jadx/core/utils/EmptyBitSet.java index badbf1733..91cbcb587 100644 --- a/jadx-core/src/main/java/jadx/core/utils/EmptyBitSet.java +++ b/jadx-core/src/main/java/jadx/core/utils/EmptyBitSet.java @@ -86,9 +86,4 @@ public final class EmptyBitSet extends BitSet { public void andNot(BitSet set) { throw new UnsupportedOperationException(); } - - @Override - public Object clone() { - return this; - } } diff --git a/jadx-core/src/main/java/jadx/core/utils/ErrorsCounter.java b/jadx-core/src/main/java/jadx/core/utils/ErrorsCounter.java index 6de490c3b..891b41bfa 100644 --- a/jadx-core/src/main/java/jadx/core/utils/ErrorsCounter.java +++ b/jadx-core/src/main/java/jadx/core/utils/ErrorsCounter.java @@ -20,7 +20,7 @@ import org.slf4j.LoggerFactory; public class ErrorsCounter { private static final Logger LOG = LoggerFactory.getLogger(ErrorsCounter.class); - private final Set errorNodes = new HashSet(); + private final Set errorNodes = new HashSet<>(); private int errorsCount; public int getErrorCount() { @@ -69,7 +69,7 @@ public class ErrorsCounter { public void printReport() { if (getErrorCount() > 0) { LOG.error("{} errors occurred in following nodes:", getErrorCount()); - List nodes = new ArrayList(errorNodes); + List nodes = new ArrayList<>(errorNodes); Collections.sort(nodes, new Comparator() { @Override public int compare(Object o1, Object o2) { diff --git a/jadx-core/src/main/java/jadx/core/utils/InsnUtils.java b/jadx-core/src/main/java/jadx/core/utils/InsnUtils.java index fa3705892..d079f046c 100644 --- a/jadx-core/src/main/java/jadx/core/utils/InsnUtils.java +++ b/jadx-core/src/main/java/jadx/core/utils/InsnUtils.java @@ -37,20 +37,20 @@ public class InsnUtils { return insn.getD(); case 4: return insn.getE(); + default: + throw new JadxRuntimeException("Wrong argument number: " + arg); } - throw new JadxRuntimeException("Wrong argument number: " + arg); } public static String formatOffset(int offset) { if (offset < 0) { return "?"; - } else { - return String.format("0x%04x", offset); } + return String.format("0x%04x", offset); } public static String insnTypeToString(InsnType type) { - return type.toString() + " "; + return type + " "; } public static String indexToString(Object index) { @@ -59,9 +59,8 @@ public class InsnUtils { } if (index instanceof String) { return "\"" + index + "\""; - } else { - return index.toString(); } + return index.toString(); } /** @@ -81,16 +80,15 @@ public class InsnUtils { case SGET: FieldInfo f = (FieldInfo) ((IndexInsnNode) insn).getIndex(); FieldNode fieldNode = dex.resolveField(f); - if (fieldNode != null) { - FieldInitAttr attr = fieldNode.get(AType.FIELD_INIT); - if (attr != null) { - return attr.getValue(); - } - } else { + if (fieldNode == null) { LOG.warn("Field {} not found in dex {}", f, dex); + return null; } - break; + FieldInitAttr attr = fieldNode.get(AType.FIELD_INIT); + return attr != null ? attr.getValue() : null; + + default: + return null; } - return null; } } diff --git a/jadx-core/src/main/java/jadx/core/utils/InstructionRemover.java b/jadx-core/src/main/java/jadx/core/utils/InstructionRemover.java index 3c687930d..5db488ecc 100644 --- a/jadx-core/src/main/java/jadx/core/utils/InstructionRemover.java +++ b/jadx-core/src/main/java/jadx/core/utils/InstructionRemover.java @@ -36,7 +36,7 @@ public class InstructionRemover { public InstructionRemover(MethodNode mth, BlockNode block) { this.mth = mth; - this.toRemove = new ArrayList(); + this.toRemove = new ArrayList<>(); if (block != null) { this.instrList = block.getInstructions(); } diff --git a/jadx-core/src/main/java/jadx/core/utils/RegionUtils.java b/jadx-core/src/main/java/jadx/core/utils/RegionUtils.java index eb32f040b..beabc1685 100644 --- a/jadx-core/src/main/java/jadx/core/utils/RegionUtils.java +++ b/jadx-core/src/main/java/jadx/core/utils/RegionUtils.java @@ -185,7 +185,7 @@ public class RegionUtils { CatchAttr cb = region.get(AType.CATCH_BLOCK); if (cb != null) { TryCatchBlock tb = cb.getTryBlock(); - List list = new ArrayList(tb.getHandlersCount()); + List list = new ArrayList<>(tb.getHandlersCount()); for (ExceptionHandler eh : tb.getHandlers()) { list.add(eh.getHandlerRegion()); } diff --git a/jadx-core/src/main/java/jadx/core/utils/StringUtils.java b/jadx-core/src/main/java/jadx/core/utils/StringUtils.java index 153fcb1e7..acdd5d0a3 100644 --- a/jadx-core/src/main/java/jadx/core/utils/StringUtils.java +++ b/jadx-core/src/main/java/jadx/core/utils/StringUtils.java @@ -34,14 +34,30 @@ public class StringUtils { private void processChar(int c, StringBuilder res) { switch (c) { - case '\n': res.append("\\n"); break; - case '\r': res.append("\\r"); break; - case '\t': res.append("\\t"); break; - case '\b': res.append("\\b"); break; - case '\f': res.append("\\f"); break; - case '\'': res.append('\''); break; - case '"': res.append("\\\""); break; - case '\\': res.append("\\\\"); break; + case '\n': + res.append("\\n"); + break; + case '\r': + res.append("\\r"); + break; + case '\t': + res.append("\\t"); + break; + case '\b': + res.append("\\b"); + break; + case '\f': + res.append("\\f"); + break; + case '\'': + res.append('\''); + break; + case '"': + res.append("\\\""); + break; + case '\\': + res.append("\\\\"); + break; default: if (c < 32 || c >= 127 && escapeUnicode) { @@ -92,15 +108,11 @@ public class StringUtils { StringBuilder sb = new StringBuilder(len); for (int i = 0; i < len; i++) { char c = str.charAt(i); - switch (c) { - case '&': sb.append("&"); break; - case '<': sb.append("<"); break; - case '>': sb.append(">"); break; - case '"': sb.append("""); break; - case '\'': sb.append("'"); break; - default: - sb.append(c); - break; + String replace = escapeXmlChar(c); + if (replace != null) { + sb.append(replace); + } else { + sb.append(c); } } return sb.toString(); @@ -111,22 +123,7 @@ public class StringUtils { StringBuilder sb = new StringBuilder(len); for (int i = 0; i < len; i++) { char c = str.charAt(i); - switch (c) { - case '&': sb.append("&"); break; - case '<': sb.append("<"); break; - case '>': sb.append(">"); break; - case '"': sb.append("""); break; - case '\'': sb.append("'"); break; - - case '\n': sb.append("\\n"); break; - case '\r': sb.append("\\r"); break; - case '\t': sb.append("\\t"); break; - case '\b': sb.append("\\b"); break; - case '\f': sb.append("\\f"); break; - default: - sb.append(c); - break; - } + commonEscapeAndAppend(sb, c); } return sb.toString(); } @@ -137,22 +134,63 @@ public class StringUtils { for (int i = 0; i < len; i++) { char c = str.charAt(i); switch (c) { - case '&': sb.append("&"); break; - case '<': sb.append("<"); break; - case '>': sb.append(">"); break; - case '"': sb.append("\\\""); break; - case '\'': sb.append("\\'"); break; - - case '\n': sb.append("\\n"); break; - case '\r': sb.append("\\r"); break; - case '\t': sb.append("\\t"); break; - case '\b': sb.append("\\b"); break; - case '\f': sb.append("\\f"); break; + case '"': + sb.append("\\\""); + break; + case '\'': + sb.append("\\'"); + break; default: - sb.append(c); + commonEscapeAndAppend(sb, c); break; } } return sb.toString(); } + + private static String escapeXmlChar(char c) { + switch (c) { + case '&': + return "&"; + case '<': + return "<"; + case '>': + return ">"; + case '"': + return """; + case '\'': + return "'"; + default: + return null; + } + } + + private static String escapeWhiteSpaceChar(char c) { + switch (c) { + case '\n': + return "\\n"; + case '\r': + return "\\r"; + case '\t': + return "\\t"; + case '\b': + return "\\b"; + case '\f': + return "\\f"; + default: + return null; + } + } + + private static void commonEscapeAndAppend(StringBuilder sb, char c) { + String replace = escapeXmlChar(c); + if (replace == null) { + replace = escapeWhiteSpaceChar(c); + } + if (replace != null) { + sb.append(replace); + } else { + sb.append(c); + } + } } diff --git a/jadx-core/src/main/java/jadx/core/utils/files/DexFile.java b/jadx-core/src/main/java/jadx/core/utils/files/DexFile.java index 5ef656fb5..27b3d2c77 100644 --- a/jadx-core/src/main/java/jadx/core/utils/files/DexFile.java +++ b/jadx-core/src/main/java/jadx/core/utils/files/DexFile.java @@ -27,6 +27,6 @@ public class DexFile { @Override public String toString() { - return inputFile.toString() + (name.isEmpty() ? "" : ":" + name); + return inputFile + (name.isEmpty() ? "" : ":" + name); } } diff --git a/jadx-core/src/main/java/jadx/core/utils/files/FileUtils.java b/jadx-core/src/main/java/jadx/core/utils/files/FileUtils.java index 7f05248e7..b7dc28a16 100644 --- a/jadx-core/src/main/java/jadx/core/utils/files/FileUtils.java +++ b/jadx-core/src/main/java/jadx/core/utils/files/FileUtils.java @@ -12,6 +12,7 @@ import java.io.OutputStream; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; +import java.util.Objects; import java.util.jar.JarEntry; import java.util.jar.JarOutputStream; import java.util.zip.ZipEntry; @@ -31,17 +32,13 @@ public class FileUtils { } public static void addFileToJar(JarOutputStream jar, File source, String entryName) throws IOException { - BufferedInputStream in = null; - try { + try (BufferedInputStream in = new BufferedInputStream(new FileInputStream(source))) { JarEntry entry = new JarEntry(entryName); entry.setTime(source.lastModified()); jar.putNextEntry(entry); - in = new BufferedInputStream(new FileInputStream(source)); copyStream(in, jar); jar.closeEntry(); - } finally { - close(in); } } @@ -91,22 +88,27 @@ public class FileUtils { @NotNull public static File prepareFile(File file) { - String name = file.getName(); - if (name.length() > MAX_FILENAME_LENGTH) { - int dotIndex = name.indexOf('.'); - int cutAt = MAX_FILENAME_LENGTH - name.length() + dotIndex - 1; - if (cutAt <= 0) { - name = name.substring(0, MAX_FILENAME_LENGTH - 1); - } else { - name = name.substring(0, cutAt) + name.substring(dotIndex); - } - file = new File(file.getParentFile(), name); - } - makeDirsForFile(file); - return file; + File saveFile = cutFileName(file); + makeDirsForFile(saveFile); + return saveFile; } - public static String bytesToHex(byte[] bytes) { + private static File cutFileName(File file) { + String name = file.getName(); + if (name.length() <= MAX_FILENAME_LENGTH) { + return file; + } + int dotIndex = name.indexOf('.'); + int cutAt = MAX_FILENAME_LENGTH - name.length() + dotIndex - 1; + if (cutAt <= 0) { + name = name.substring(0, MAX_FILENAME_LENGTH - 1); + } else { + name = name.substring(0, cutAt) + name.substring(dotIndex); + } + return new File(file.getParentFile(), name); + } + + private static String bytesToHex(byte[] bytes) { char[] hexArray = "0123456789abcdef".toCharArray(); if (bytes == null || bytes.length <= 0) { return null; @@ -120,77 +122,54 @@ public class FileUtils { return new String(hexChars); } - public static boolean isZipfile(File file) { - boolean isZipfile = false; - InputStream is = null; - try { + private static boolean isZipFile(File file) { + try (InputStream is = new FileInputStream(file)) { byte[] headers = new byte[4]; - is = new FileInputStream(file); - is.read(headers, 0, 4); - System.out.println(bytesToHex(headers)); - String headerString = bytesToHex(headers); - if (headerString.equals("504b0304")) { - isZipfile = true; - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - if (is != null) { - try { - is.close(); - } catch (IOException e) { - e.printStackTrace(); + int read = is.read(headers, 0, 4); + if (read == headers.length) { + String headerString = bytesToHex(headers); + if (Objects.equals(headerString, "504b0304")) { + return true; } } + } catch (Exception e) { + LOG.error("Failed read zip file: {}", file.getAbsolutePath(), e); } - - return isZipfile; + return false; } - public static List getZipfileList(File file) { - List filelist = new ArrayList(); - ZipFile zipFile = null; - try { - zipFile = new ZipFile(file); + private static List getZipFileList(File file) { + List filesList = new ArrayList<>(); + try (ZipFile zipFile = new ZipFile(file)) { Enumeration entries = zipFile.entries(); - while (entries.hasMoreElements()) { ZipEntry entry = entries.nextElement(); - filelist.add(entry.getName()); - System.out.println(entry.getName()); + filesList.add(entry.getName()); } - } catch (IOException e) { - e.printStackTrace(); - System.out.println(e.getMessage()); + } catch (Exception e) { + LOG.error("Error read zip file '{}'", file.getAbsolutePath(), e); } - - return filelist; + return filesList; } - public static boolean isApkfile(File file) { - boolean isApkfile = false; - if (isZipfile(file)) { - List filelist = getZipfileList(file); - if (filelist.contains("AndroidManifest.xml") && filelist.contains("classes.dex")) { - isApkfile = true; - } + public static boolean isApkFile(File file) { + if (!isZipFile(file)) { + return false; } - return isApkfile; + List filesList = getZipFileList(file); + return filesList.contains("AndroidManifest.xml") + && filesList.contains("classes.dex"); } - public static boolean isZipDexfile(File file) { - boolean isZipDexFile = false; - if (isZipfile(file) && isZipFileCanBeOpen(file)) { - List filelist = getZipfileList(file); - if (filelist.contains("classes.dex")) { - isZipDexFile = true; - } + public static boolean isZipDexFile(File file) { + if (!isZipFile(file) || !isZipFileCanBeOpen(file)) { + return false; } - - return isZipDexFile; + List filesList = getZipFileList(file); + return filesList.contains("classes.dex"); } - public static boolean isZipFileCanBeOpen(final File file) { + private static boolean isZipFileCanBeOpen(File file) { ZipFile zipFile = null; try { zipFile = new ZipFile(file); diff --git a/jadx-core/src/main/java/jadx/core/utils/files/InputFile.java b/jadx-core/src/main/java/jadx/core/utils/files/InputFile.java index e27d9568e..8bc66666a 100644 --- a/jadx-core/src/main/java/jadx/core/utils/files/InputFile.java +++ b/jadx-core/src/main/java/jadx/core/utils/files/InputFile.java @@ -16,14 +16,15 @@ import java.util.jar.JarOutputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; - import org.apache.commons.io.IOUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.android.dex.Dex; -import static jadx.core.utils.files.FileUtils.*; +import static jadx.core.utils.files.FileUtils.close; +import static jadx.core.utils.files.FileUtils.isApkFile; +import static jadx.core.utils.files.FileUtils.isZipDexFile; public class InputFile { private static final Logger LOG = LoggerFactory.getLogger(InputFile.class); @@ -55,7 +56,7 @@ public class InputFile { addDexFile(loadFromClassFile(file)); return; } - if (isApkfile(file) || isZipDexfile(file)) { + if (isApkFile(file) || isZipDexFile(file)) { loadFromZip(".dex"); return; } @@ -74,7 +75,7 @@ public class InputFile { } return; } -// throw new DecodeException("Unsupported input file format: " + file); + throw new DecodeException("Unsupported input file format: " + file); } private void addDexFile(Dex dexBuf) throws IOException { @@ -86,56 +87,56 @@ public class InputFile { } private boolean loadFromZip(String ext) throws IOException, DecodeException { - ZipFile zf = new ZipFile(file); - - // Input file could be .apk or .zip files - // we should consider the input file could contain only one single dex, multi-dex, or instantRun support dex for Android .apk files - String instantRunDexSuffix = "classes" + ext; int index = 0; - for (Enumeration e = zf.entries(); e.hasMoreElements(); ) { - ZipEntry entry = e.nextElement(); - String entryName = entry.getName(); + try (ZipFile zf = new ZipFile(file)) { + // Input file could be .apk or .zip files + // we should consider the input file could contain only one single dex, multi-dex, or instantRun support dex for Android .apk files + String instantRunDexSuffix = "classes" + ext; + for (Enumeration e = zf.entries(); e.hasMoreElements(); ) { + ZipEntry entry = e.nextElement(); + String entryName = entry.getName(); - InputStream inputStream = zf.getInputStream(entry); - try { - if ((entryName.startsWith("classes") && entryName.endsWith(ext)) || entryName.endsWith(instantRunDexSuffix)) { - if (ext.equals(".dex")) { - index++; - addDexFile(entryName, new Dex(inputStream)); - } else if (ext.equals(".jar")) { - index++; - File jarFile = FileUtils.createTempFile(entryName); + InputStream inputStream = zf.getInputStream(entry); + try { + if ((entryName.startsWith("classes") && entryName.endsWith(ext)) + || entryName.endsWith(instantRunDexSuffix)) { + if (ext.equals(".dex")) { + index++; + addDexFile(entryName, new Dex(inputStream)); + } else if (ext.equals(".jar")) { + index++; + File jarFile = FileUtils.createTempFile(entryName); + FileOutputStream fos = new FileOutputStream(jarFile); + try { + IOUtils.copy(inputStream, fos); + } finally { + close(fos); + } + addDexFile(entryName, loadFromJar(jarFile)); + } else { + throw new JadxRuntimeException("Unexpected extension in zip: " + ext); + } + } else if (entryName.equals("instant-run.zip") && ext.equals(".dex")) { + File jarFile = FileUtils.createTempFile("instant-run.zip"); FileOutputStream fos = new FileOutputStream(jarFile); try { IOUtils.copy(inputStream, fos); } finally { close(fos); } - addDexFile(entryName, loadFromJar(jarFile)); - } else { - throw new JadxRuntimeException("Unexpected extension in zip: " + ext); - } - } else if (entryName.equals("instant-run.zip") && ext.equals(".dex")) { - File jarFile = FileUtils.createTempFile("instant-run.zip"); - FileOutputStream fos = new FileOutputStream(jarFile); - try { - IOUtils.copy(inputStream, fos); - } finally { - close(fos); - } - InputFile tempFile = new InputFile(jarFile); - tempFile.loadFromZip(ext); - List dexFiles = tempFile.getDexFiles(); - if (!dexFiles.isEmpty()) { - index += dexFiles.size(); - this.dexFiles.addAll(dexFiles); + InputFile tempFile = new InputFile(jarFile); + tempFile.loadFromZip(ext); + List dexFiles = tempFile.getDexFiles(); + if (!dexFiles.isEmpty()) { + index += dexFiles.size(); + this.dexFiles.addAll(dexFiles); + } } + } finally { + close(inputStream); } - } finally { - close(inputStream); } } - zf.close(); return index > 0; } diff --git a/jadx-core/src/main/java/jadx/core/utils/files/JavaToDex.java b/jadx-core/src/main/java/jadx/core/utils/files/JavaToDex.java index eb9032dfa..359dbda6d 100644 --- a/jadx-core/src/main/java/jadx/core/utils/files/JavaToDex.java +++ b/jadx-core/src/main/java/jadx/core/utils/files/JavaToDex.java @@ -1,13 +1,13 @@ package jadx.core.utils.files; +import jadx.core.utils.exceptions.JadxException; + import java.io.ByteArrayOutputStream; import com.android.dx.command.dexer.DxContext; import com.android.dx.command.dexer.Main; import com.android.dx.command.dexer.Main.Arguments; -import jadx.core.utils.exceptions.JadxException; - import static jadx.core.utils.files.FileUtils.close; public class JavaToDex { 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 2e1e1baf2..0d2e8ea3a 100644 --- a/jadx-core/src/main/java/jadx/core/xmlgen/BinaryXMLParser.java +++ b/jadx-core/src/main/java/jadx/core/xmlgen/BinaryXMLParser.java @@ -46,8 +46,8 @@ public class BinaryXMLParser extends CommonBinaryParser { private boolean firstElement; private boolean wasOneLiner = false; - private final Map styleMap = new HashMap(); - private final Map localStyleMap = new HashMap(); + private final Map styleMap = new HashMap<>(); + private final Map localStyleMap = new HashMap<>(); private final Map resNames; private ValuesParser valuesParser; @@ -55,14 +55,7 @@ public class BinaryXMLParser extends CommonBinaryParser { public BinaryXMLParser(RootNode root) { try { - try { - Class rStyleCls = Class.forName(ANDROID_R_STYLE_CLS); - for (Field f : rStyleCls.getFields()) { - styleMap.put(f.getInt(f.getType()), f.getName()); - } - } catch (Throwable th) { - LOG.error("R class loading failed", th); - } + loadStyles(); // add application constants ConstStorage constStorage = root.getConstValues(); Map constFields = constStorage.getGlobalConstFields(); @@ -82,6 +75,17 @@ public class BinaryXMLParser extends CommonBinaryParser { } } + private void loadStyles() { + try { + Class rStyleCls = Class.forName(ANDROID_R_STYLE_CLS); + for (Field f : rStyleCls.getFields()) { + styleMap.put(f.getInt(f.getType()), f.getName()); + } + } catch (Exception th) { + LOG.error("R class loading failed", th); + } + } + public synchronized CodeWriter parse(InputStream inputStream) throws IOException { is = new ParserStream(inputStream); if (!isBinaryXml()) { @@ -122,14 +126,12 @@ public class BinaryXMLParser extends CommonBinaryParser { parseResourceMap(); break; case RES_XML_START_NAMESPACE_TYPE: + case RES_XML_END_NAMESPACE_TYPE: parseNameSpace(); break; case RES_XML_CDATA_TYPE: parseCData(); break; - case RES_XML_END_NAMESPACE_TYPE: - parseNameSpaceEnd(); - break; case RES_XML_START_ELEMENT_TYPE: parseElement(); break; @@ -162,27 +164,12 @@ public class BinaryXMLParser extends CommonBinaryParser { if (is.readInt32() != 0x18) { die("NAMESPACE header chunk is not 0x18 big"); } - int beginLineNumber = is.readInt32(); + int lineNumber = is.readInt32(); int comment = is.readInt32(); - int beginPrefix = is.readInt32(); - nsPrefix = strings[beginPrefix]; - int beginURI = is.readInt32(); - nsURI = strings[beginURI]; - } - - private void parseNameSpaceEnd() throws IOException { - if (is.readInt16() != 0x10) { - die("NAMESPACE header is not 0x0010"); - } - if (is.readInt32() != 0x18) { - die("NAMESPACE header chunk is not 0x18 big"); - } - int endLineNumber = is.readInt32(); - int comment = is.readInt32(); - int endPrefix = is.readInt32(); - nsPrefix = strings[endPrefix]; - int endURI = is.readInt32(); - nsURI = strings[endURI]; + int idPrefix = is.readInt32(); + nsPrefix = strings[idPrefix]; + int idURI = is.readInt32(); + nsURI = strings[idURI]; } private void parseCData() throws IOException { @@ -202,7 +189,7 @@ public class BinaryXMLParser extends CommonBinaryParser { writer.attachSourceLine(lineNumber); writer.add(StringUtils.escapeXML(str.trim())); // TODO: wrap into CDATA for easier reading - int size = is.readInt16(); + long size = is.readInt16(); is.skip(size - 2); } @@ -244,7 +231,7 @@ public class BinaryXMLParser extends CommonBinaryParser { if ("manifest".equals(currentTag) || writer.getIndent() == 0) { writer.add(" xmlns:android=\"").add(nsURI).add("\""); } - boolean attrNewLine = attributeCount == 1 ? false : ATTR_NEW_LINE; + boolean attrNewLine = attributeCount != 1 && ATTR_NEW_LINE; for (int i = 0; i < attributeCount; i++) { parseAttribute(i, attrNewLine); } diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/ManifestAttributes.java b/jadx-core/src/main/java/jadx/core/xmlgen/ManifestAttributes.java index 7709442c0..6061968cb 100644 --- a/jadx-core/src/main/java/jadx/core/xmlgen/ManifestAttributes.java +++ b/jadx-core/src/main/java/jadx/core/xmlgen/ManifestAttributes.java @@ -1,11 +1,9 @@ package jadx.core.xmlgen; -import jadx.core.utils.exceptions.JadxException; +import jadx.core.utils.exceptions.JadxRuntimeException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.LinkedHashMap; @@ -17,9 +15,6 @@ import org.w3c.dom.Document; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import org.xml.sax.SAXException; - -import static jadx.core.utils.files.FileUtils.close; public class ManifestAttributes { private static final Logger LOG = LoggerFactory.getLogger(ManifestAttributes.class); @@ -33,7 +28,7 @@ public class ManifestAttributes { private static class MAttr { private final MAttrType type; - private final Map values = new LinkedHashMap(); + private final Map values = new LinkedHashMap<>(); public MAttr(MAttrType type) { this.type = type; @@ -53,29 +48,24 @@ public class ManifestAttributes { } } - private final Map attrMap = new HashMap(); + private final Map attrMap = new HashMap<>(); - public ManifestAttributes() throws Exception { - } - - public void parseAll() throws Exception { + public void parseAll() { parse(loadXML(ATTR_XML)); parse(loadXML(MANIFEST_ATTR_XML)); LOG.debug("Loaded android attributes count: {}", attrMap.size()); } - private Document loadXML(String xml) throws JadxException, ParserConfigurationException, SAXException, IOException { + private Document loadXML(String xml) { Document doc; - InputStream xmlStream = null; - try { - xmlStream = ManifestAttributes.class.getResourceAsStream(xml); + try (InputStream xmlStream = ManifestAttributes.class.getResourceAsStream(xml)) { if (xmlStream == null) { - throw new JadxException(xml + " not found in classpath"); + throw new JadxRuntimeException(xml + " not found in classpath"); } DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); doc = dBuilder.parse(xmlStream); - } finally { - close(xmlStream); + } catch (Exception e) { + throw new JadxRuntimeException("Xml load error, file: " + xml, e); } return doc; } @@ -84,10 +74,9 @@ public class ManifestAttributes { NodeList nodeList = doc.getChildNodes(); for (int count = 0; count < nodeList.getLength(); count++) { Node node = nodeList.item(count); - if (node.getNodeType() == Node.ELEMENT_NODE) { - if (node.hasChildNodes()) { - parseAttrList(node.getChildNodes()); - } + if (node.getNodeType() == Node.ELEMENT_NODE + && node.hasChildNodes()) { + parseAttrList(node.getChildNodes()); } } } @@ -122,7 +111,6 @@ public class ManifestAttributes { Node tempNode = nodeList.item(count); if (tempNode.getNodeType() == Node.ELEMENT_NODE && tempNode.hasAttributes()) { - if (attr == null) { if (tempNode.getNodeName().equals("enum")) { attr = new MAttr(MAttrType.ENUM); @@ -134,7 +122,6 @@ public class ManifestAttributes { } attrMap.put(name, attr); } - NamedNodeMap attributes = tempNode.getAttributes(); Node nameNode = attributes.getNamedItem("name"); if (nameNode != null) { diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/ParserConstants.java b/jadx-core/src/main/java/jadx/core/xmlgen/ParserConstants.java index 53bcbd5a1..16b5a5c7c 100644 --- a/jadx-core/src/main/java/jadx/core/xmlgen/ParserConstants.java +++ b/jadx-core/src/main/java/jadx/core/xmlgen/ParserConstants.java @@ -5,6 +5,9 @@ import java.util.Map; public class ParserConstants { + protected ParserConstants() { + } + /** * Chunk types */ @@ -96,13 +99,13 @@ public class ParserConstants { protected static final int COMPLEX_RADIX_MASK = 0x3; // The mantissa is an integral number -- i.e., 0xnnnnnn.0 - protected static final int COMPLEX_RADIX_23p0 = 0; + protected static final int COMPLEX_RADIX_23P0 = 0; // The mantissa magnitude is 16 bits -- i.e, 0xnnnn.nn - protected static final int COMPLEX_RADIX_16p7 = 1; + protected static final int COMPLEX_RADIX_16P7 = 1; // The mantissa magnitude is 8 bits -- i.e, 0xnn.nnnn - protected static final int COMPLEX_RADIX_8p15 = 2; + protected static final int COMPLEX_RADIX_8P15 = 2; // The mantissa magnitude is 0 bits -- i.e, 0x0.nnnnnn - protected static final int COMPLEX_RADIX_0p23 = 3; + protected static final int COMPLEX_RADIX_0P23 = 3; // Where the actual value is. This gives us 23 bits of // precision. The top bit is the sign. @@ -137,34 +140,35 @@ public class ParserConstants { /** * ResTable_map */ - protected static final int ATTR_TYPE = ResMakeInternal(0); + protected static final int ATTR_TYPE = makeResInternal(0); // For integral attributes, this is the minimum value it can hold. - protected static final int ATTR_MIN = ResMakeInternal(1); + protected static final int ATTR_MIN = makeResInternal(1); // For integral attributes, this is the maximum value it can hold. - protected static final int ATTR_MAX = ResMakeInternal(2); + protected static final int ATTR_MAX = makeResInternal(2); // Localization of this resource is can be encouraged or required with an aapt flag if this is set - protected static final int ATTR_L10N = ResMakeInternal(3); + protected static final int ATTR_L10N = makeResInternal(3); // for plural support, see android.content.res.PluralRules#attrForQuantity(int) - protected static final int ATTR_OTHER = ResMakeInternal(4); - protected static final int ATTR_ZERO = ResMakeInternal(5); - protected static final int ATTR_ONE = ResMakeInternal(6); - protected static final int ATTR_TWO = ResMakeInternal(7); - protected static final int ATTR_FEW = ResMakeInternal(8); - protected static final int ATTR_MANY = ResMakeInternal(9); + protected static final int ATTR_OTHER = makeResInternal(4); + protected static final int ATTR_ZERO = makeResInternal(5); + protected static final int ATTR_ONE = makeResInternal(6); + protected static final int ATTR_TWO = makeResInternal(7); + protected static final int ATTR_FEW = makeResInternal(8); + protected static final int ATTR_MANY = makeResInternal(9); - protected static final Map PLURALS_MAP = new HashMap() { - { - put(ATTR_OTHER, "other"); - put(ATTR_ZERO, "zero"); - put(ATTR_ONE, "one"); - put(ATTR_TWO, "two"); - put(ATTR_FEW, "few"); - put(ATTR_MANY, "many"); - } - }; + protected static final Map PLURALS_MAP; - private static int ResMakeInternal(int entry) { + static { + PLURALS_MAP = new HashMap<>(); + PLURALS_MAP.put(ATTR_OTHER, "other"); + PLURALS_MAP.put(ATTR_ZERO, "zero"); + PLURALS_MAP.put(ATTR_ONE, "one"); + PLURALS_MAP.put(ATTR_TWO, "two"); + PLURALS_MAP.put(ATTR_FEW, "few"); + PLURALS_MAP.put(ATTR_MANY, "many"); + } + + private static int makeResInternal(int entry) { return 0x01000000 | entry & 0xFFFF; } @@ -201,5 +205,4 @@ public class ParserConstants { // Enum of localization modes, for use with ATTR_L10N protected static final int ATTR_L10N_NOT_REQUIRED = 0; protected static final int ATTR_L10N_SUGGESTED = 1; - } diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/ResContainer.java b/jadx-core/src/main/java/jadx/core/xmlgen/ResContainer.java index 903bbcae8..b2b3043d3 100644 --- a/jadx-core/src/main/java/jadx/core/xmlgen/ResContainer.java +++ b/jadx-core/src/main/java/jadx/core/xmlgen/ResContainer.java @@ -80,6 +80,23 @@ public class ResContainer implements Comparable { return name.compareTo(o.name); } + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof ResContainer)) { + return false; + } + ResContainer that = (ResContainer) o; + return name.equals(that.name); + } + + @Override + public int hashCode() { + return name.hashCode(); + } + @Override public String toString() { return "Res{" + name + ", subFiles=" + subFiles + "}"; diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/ResTableParser.java b/jadx-core/src/main/java/jadx/core/xmlgen/ResTableParser.java index 1e995ab1c..8e776923e 100644 --- a/jadx-core/src/main/java/jadx/core/xmlgen/ResTableParser.java +++ b/jadx-core/src/main/java/jadx/core/xmlgen/ResTableParser.java @@ -70,7 +70,7 @@ public class ResTableParser extends CommonBinaryParser { return res; } - public CodeWriter makeDump() throws IOException { + public CodeWriter makeDump() { CodeWriter writer = new CodeWriter(); writer.add("app package: ").add(resStorage.getAppPackage()); writer.startLine(); @@ -137,7 +137,7 @@ public class ResTableParser extends CommonBinaryParser { PackageChunk pkg = new PackageChunk(id, name, typeStrings, keyStrings); //if (id == 0x7F) { - resStorage.setAppPackage(name); + resStorage.setAppPackage(name); //} while (is.getPos() < endPos) { @@ -169,8 +169,10 @@ public class ResTableParser extends CommonBinaryParser { } private void parseTypeChunk(long start, PackageChunk pkg) throws IOException { - /*int headerSize = */ is.readInt16(); - /*int size = */ is.readInt32(); + /*int headerSize = */ + is.readInt16(); + /*int size = */ + is.readInt32(); int id = is.readInt8(); is.checkInt8(0, "type chunk, res0"); @@ -211,7 +213,7 @@ public class ResTableParser extends CommonBinaryParser { int parentRef = is.readInt32(); ri.setParentRef(parentRef); int count = is.readInt32(); - List values = new ArrayList(count); + List values = new ArrayList<>(count); for (int i = 0; i < count; i++) { values.add(parseValueMap()); } diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/ResXmlGen.java b/jadx-core/src/main/java/jadx/core/xmlgen/ResXmlGen.java index d643931b2..cdd757791 100644 --- a/jadx-core/src/main/java/jadx/core/xmlgen/ResXmlGen.java +++ b/jadx-core/src/main/java/jadx/core/xmlgen/ResXmlGen.java @@ -15,13 +15,9 @@ import java.util.List; import java.util.Map; import java.util.Set; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - public class ResXmlGen { - private static final Logger LOG = LoggerFactory.getLogger(ResXmlGen.class); - private static final Set SKIP_RES_TYPES = new HashSet(Arrays.asList( + private static final Set SKIP_RES_TYPES = new HashSet<>(Arrays.asList( "layout", "mipmap", "id" @@ -36,7 +32,7 @@ public class ResXmlGen { } public List makeResourcesXml() { - Map contMap = new HashMap(); + Map contMap = new HashMap<>(); for (ResourceEntry ri : resStorage.getResources()) { if (SKIP_RES_TYPES.contains(ri.getTypeName())) { continue; @@ -53,7 +49,7 @@ public class ResXmlGen { addValue(cw, ri); } - List files = new ArrayList(contMap.size()); + List files = new ArrayList<>(contMap.size()); for (Map.Entry entry : contMap.entrySet()) { String fileName = entry.getKey(); CodeWriter content = entry.getValue(); diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/ResourceStorage.java b/jadx-core/src/main/java/jadx/core/xmlgen/ResourceStorage.java index d1c6f68bb..2531e70c5 100644 --- a/jadx-core/src/main/java/jadx/core/xmlgen/ResourceStorage.java +++ b/jadx-core/src/main/java/jadx/core/xmlgen/ResourceStorage.java @@ -20,7 +20,7 @@ public class ResourceStorage { } }; - private final List list = new ArrayList(); + private final List list = new ArrayList<>(); private String appPackage; public Collection getResources() { @@ -53,7 +53,7 @@ public class ResourceStorage { } public Map getResourcesNames() { - Map map = new HashMap(); + Map map = new HashMap<>(); for (ResourceEntry entry : list) { map.put(entry.getId(), entry.getTypeName() + "/" + entry.getKeyName()); } diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/entry/ValuesParser.java b/jadx-core/src/main/java/jadx/core/xmlgen/entry/ValuesParser.java index ed47c26a6..bc236f0ea 100644 --- a/jadx-core/src/main/java/jadx/core/xmlgen/entry/ValuesParser.java +++ b/jadx-core/src/main/java/jadx/core/xmlgen/entry/ValuesParser.java @@ -27,7 +27,7 @@ public class ValuesParser extends ParserConstants { return decodeValue(simpleValue); } List namedValues = ri.getNamedValues(); - List strList = new ArrayList(namedValues.size()); + List strList = new ArrayList<>(namedValues.size()); for (RawNamedValue value : namedValues) { String nameStr = decodeNameRef(value.getNameRef()); String valueStr = decodeValue(value.getRawValue()); @@ -159,14 +159,14 @@ public class ValuesParser extends ParserConstants { } private static String doubleToString(double value) { - if (value == Math.ceil(value)) { + if (Double.compare(value, Math.floor(value)) == 0 + && !Double.isInfinite(value)) { return Integer.toString((int) value); - } else { - // remove trailing zeroes - NumberFormat f = NumberFormat.getInstance(); - f.setMaximumFractionDigits(4); - f.setMinimumIntegerDigits(1); - return f.format(value); } + // remove trailing zeroes + NumberFormat f = NumberFormat.getInstance(); + f.setMaximumFractionDigits(4); + f.setMinimumIntegerDigits(1); + return f.format(value); } } diff --git a/jadx-core/src/test/java/jadx/tests/api/IntegrationTest.java b/jadx-core/src/test/java/jadx/tests/api/IntegrationTest.java index c46c10dc1..c43271eb9 100644 --- a/jadx-core/src/test/java/jadx/tests/api/IntegrationTest.java +++ b/jadx-core/src/test/java/jadx/tests/api/IntegrationTest.java @@ -1,5 +1,20 @@ package jadx.tests.api; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.net.URISyntaxException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.jar.JarOutputStream; + import jadx.api.JadxArgs; import jadx.api.JadxDecompiler; import jadx.api.JadxInternalAccess; @@ -19,21 +34,6 @@ import jadx.tests.api.compiler.DynamicCompiler; import jadx.tests.api.compiler.StaticCompiler; import jadx.tests.api.utils.TestUtils; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.net.URISyntaxException; -import java.net.URL; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.jar.JarOutputStream; - import static jadx.core.utils.files.FileUtils.addFileToJar; import static jadx.core.utils.files.FileUtils.close; import static org.hamcrest.Matchers.containsString; @@ -296,7 +296,7 @@ public abstract class IntegrationTest extends TestUtils { } private List getClassFilesWithInners(Class cls) { - List list = new ArrayList(); + List list = new ArrayList<>(); String pkgName = cls.getPackage().getName(); URL pkgResource = ClassLoader.getSystemClassLoader().getResource(pkgName.replace('.', '/')); if (pkgResource != null) { diff --git a/jadx-core/src/test/java/jadx/tests/api/SmaliTest.java b/jadx-core/src/test/java/jadx/tests/api/SmaliTest.java index d28ad3478..f82748b31 100644 --- a/jadx-core/src/test/java/jadx/tests/api/SmaliTest.java +++ b/jadx-core/src/test/java/jadx/tests/api/SmaliTest.java @@ -1,16 +1,16 @@ package jadx.tests.api; -import jadx.core.dex.nodes.ClassNode; - import java.io.File; import java.util.ArrayList; import java.util.List; import org.jf.smali.main; +import jadx.core.dex.nodes.ClassNode; + import static org.junit.Assert.fail; -public class SmaliTest extends IntegrationTest { +public abstract class SmaliTest extends IntegrationTest { private static final String SMALI_TESTS_PROJECT = "jadx-core"; private static final String SMALI_TESTS_DIR = "src/test/smali"; @@ -37,7 +37,7 @@ public class SmaliTest extends IntegrationTest { } private static boolean compileSmali(File input, File output) { - List args = new ArrayList(); + List args = new ArrayList<>(); args.add(input.getAbsolutePath()); args.add("-o"); diff --git a/jadx-core/src/test/java/jadx/tests/api/compiler/ClassFileManager.java b/jadx-core/src/test/java/jadx/tests/api/compiler/ClassFileManager.java index dd1ed8099..2fe48beb5 100644 --- a/jadx-core/src/test/java/jadx/tests/api/compiler/ClassFileManager.java +++ b/jadx-core/src/test/java/jadx/tests/api/compiler/ClassFileManager.java @@ -34,8 +34,8 @@ public class ClassFileManager extends ForwardingJavaFileManager clsMap = new HashMap(); - private final Map> clsCache = new HashMap>(); + private final Map clsMap = new HashMap<>(); + private final Map> clsCache = new HashMap<>(); @Override protected Class findClass(String name) throws ClassNotFoundException { diff --git a/jadx-core/src/test/java/jadx/tests/api/compiler/DynamicCompiler.java b/jadx-core/src/test/java/jadx/tests/api/compiler/DynamicCompiler.java index b36d80786..611730d06 100644 --- a/jadx-core/src/test/java/jadx/tests/api/compiler/DynamicCompiler.java +++ b/jadx-core/src/test/java/jadx/tests/api/compiler/DynamicCompiler.java @@ -1,7 +1,5 @@ package jadx.tests.api.compiler; -import jadx.core.dex.nodes.ClassNode; - import javax.tools.JavaCompiler; import javax.tools.JavaFileManager; import javax.tools.JavaFileObject; @@ -10,6 +8,8 @@ import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; +import jadx.core.dex.nodes.ClassNode; + import static javax.tools.JavaCompiler.CompilationTask; public class DynamicCompiler { @@ -31,7 +31,7 @@ public class DynamicCompiler { JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); fileManager = new ClassFileManager(compiler.getStandardFileManager(null, null, null)); - List jFiles = new ArrayList(1); + List jFiles = new ArrayList<>(1); jFiles.add(new CharSequenceJavaFileObject(fullName, code)); CompilationTask compilerTask = compiler.getTask(null, fileManager, null, null, null, jFiles); diff --git a/jadx-core/src/test/java/jadx/tests/api/compiler/StaticCompiler.java b/jadx-core/src/test/java/jadx/tests/api/compiler/StaticCompiler.java index 304c07032..bf0ec4bd1 100644 --- a/jadx-core/src/test/java/jadx/tests/api/compiler/StaticCompiler.java +++ b/jadx-core/src/test/java/jadx/tests/api/compiler/StaticCompiler.java @@ -1,7 +1,5 @@ package jadx.tests.api.compiler; -import jadx.core.utils.files.FileUtils; - import javax.tools.FileObject; import javax.tools.ForwardingJavaFileManager; import javax.tools.JavaCompiler; @@ -18,11 +16,13 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; +import jadx.core.utils.files.FileUtils; + import static javax.tools.JavaCompiler.CompilationTask; public class StaticCompiler { - private static final List COMMON_ARGS = Arrays.asList("-source 1.6 -target 1.6".split(" ")); + private static final List COMMON_ARGS = Arrays.asList("-source 1.7 -target 1.7".split(" ")); public static List compile(List files, File outDir, boolean includeDebugInfo) throws IOException { @@ -32,7 +32,7 @@ public class StaticCompiler { StaticFileManager staticFileManager = new StaticFileManager(fileManager, outDir); - List options = new ArrayList(); + List options = new ArrayList<>(); options.add(includeDebugInfo ? "-g" : "-g:none"); options.addAll(COMMON_ARGS); CompilationTask task = compiler.getTask(null, staticFileManager, null, options, null, compilationUnits); @@ -45,7 +45,7 @@ public class StaticCompiler { } private static class StaticFileManager extends ForwardingJavaFileManager { - private List files = new ArrayList(); + private List files = new ArrayList<>(); private File outDir; protected StaticFileManager(StandardJavaFileManager fileManager, File outDir) { diff --git a/jadx-core/src/test/java/jadx/tests/api/utils/JadxMatchers.java b/jadx-core/src/test/java/jadx/tests/api/utils/JadxMatchers.java index f9f07f77e..a67b60c1c 100644 --- a/jadx-core/src/test/java/jadx/tests/api/utils/JadxMatchers.java +++ b/jadx-core/src/test/java/jadx/tests/api/utils/JadxMatchers.java @@ -1,9 +1,9 @@ package jadx.tests.api.utils; -import jadx.core.codegen.CodeWriter; - import org.hamcrest.Matcher; +import jadx.core.codegen.CodeWriter; + public class JadxMatchers { public static Matcher countString(int count, String substring) { diff --git a/jadx-core/src/test/java/jadx/tests/api/utils/TestUtils.java b/jadx-core/src/test/java/jadx/tests/api/utils/TestUtils.java index 0a701a927..256b6d681 100644 --- a/jadx-core/src/test/java/jadx/tests/api/utils/TestUtils.java +++ b/jadx-core/src/test/java/jadx/tests/api/utils/TestUtils.java @@ -6,11 +6,11 @@ public class TestUtils { public static String indent(int indent) { if (indent == 1) { - return CodeWriter.INDENT; + return CodeWriter.INDENT_STR; } - StringBuilder sb = new StringBuilder(indent * CodeWriter.INDENT.length()); + StringBuilder sb = new StringBuilder(indent * CodeWriter.INDENT_STR.length()); for (int i = 0; i < indent; i++) { - sb.append(CodeWriter.INDENT); + sb.append(CodeWriter.INDENT_STR); } return sb.toString(); } diff --git a/jadx-core/src/test/java/jadx/tests/functional/JadxClasspathTest.java b/jadx-core/src/test/java/jadx/tests/functional/JadxClasspathTest.java index 28448ca6b..6b472f9cb 100644 --- a/jadx-core/src/test/java/jadx/tests/functional/JadxClasspathTest.java +++ b/jadx-core/src/test/java/jadx/tests/functional/JadxClasspathTest.java @@ -1,16 +1,16 @@ package jadx.tests.functional; +import java.io.IOException; + +import org.junit.Before; +import org.junit.Test; + import jadx.core.clsp.ClspGraph; import jadx.core.dex.instructions.args.ArgType; import jadx.core.dex.nodes.DexNode; import jadx.core.dex.nodes.RootNode; import jadx.core.utils.exceptions.DecodeException; -import java.io.IOException; - -import org.junit.Before; -import org.junit.Test; - import static jadx.core.dex.instructions.args.ArgType.STRING; import static jadx.core.dex.instructions.args.ArgType.object; import static org.junit.Assert.assertFalse; diff --git a/jadx-core/src/test/java/jadx/tests/functional/JadxVisitorsOrderTest.java b/jadx-core/src/test/java/jadx/tests/functional/JadxVisitorsOrderTest.java index 7cc92d17d..1a4774535 100644 --- a/jadx-core/src/test/java/jadx/tests/functional/JadxVisitorsOrderTest.java +++ b/jadx-core/src/test/java/jadx/tests/functional/JadxVisitorsOrderTest.java @@ -1,10 +1,5 @@ package jadx.tests.functional; -import jadx.api.JadxArgs; -import jadx.core.Jadx; -import jadx.core.dex.visitors.IDexTreeVisitor; -import jadx.core.dex.visitors.JadxVisitor; - import java.io.File; import java.util.ArrayList; import java.util.HashSet; @@ -15,6 +10,11 @@ import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jadx.api.JadxArgs; +import jadx.core.Jadx; +import jadx.core.dex.visitors.IDexTreeVisitor; +import jadx.core.dex.visitors.JadxVisitor; + import static org.hamcrest.Matchers.empty; import static org.junit.Assert.assertThat; @@ -34,13 +34,13 @@ public class JadxVisitorsOrderTest { } private static List check(List passes) { - List> classList = new ArrayList>(passes.size()); + List> classList = new ArrayList<>(passes.size()); for (IDexTreeVisitor pass : passes) { classList.add(pass.getClass()); } - List errors = new ArrayList(); + List errors = new ArrayList<>(); - Set names = new HashSet(); + Set names = new HashSet<>(); for (int i = 0; i < passes.size(); i++) { IDexTreeVisitor pass = passes.get(i); JadxVisitor info = pass.getClass().getAnnotation(JadxVisitor.class); diff --git a/jadx-core/src/test/java/jadx/tests/functional/TemplateFileTest.java b/jadx-core/src/test/java/jadx/tests/functional/TemplateFileTest.java index eb980c1cd..ec7ea0213 100644 --- a/jadx-core/src/test/java/jadx/tests/functional/TemplateFileTest.java +++ b/jadx-core/src/test/java/jadx/tests/functional/TemplateFileTest.java @@ -1,9 +1,9 @@ package jadx.tests.functional; -import jadx.core.export.TemplateFile; - import org.junit.Test; +import jadx.core.export.TemplateFile; + import static org.hamcrest.Matchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/functional/TestIfCondition.java b/jadx-core/src/test/java/jadx/tests/functional/TestIfCondition.java index e17029c22..7bd26f9ee 100644 --- a/jadx-core/src/test/java/jadx/tests/functional/TestIfCondition.java +++ b/jadx-core/src/test/java/jadx/tests/functional/TestIfCondition.java @@ -1,5 +1,7 @@ package jadx.tests.functional; +import org.junit.Test; + import jadx.core.dex.instructions.IfNode; import jadx.core.dex.instructions.IfOp; import jadx.core.dex.instructions.args.ArgType; @@ -8,8 +10,6 @@ import jadx.core.dex.instructions.args.LiteralArg; import jadx.core.dex.regions.conditions.Compare; import jadx.core.dex.regions.conditions.IfCondition; -import org.junit.Test; - import static jadx.core.dex.regions.conditions.IfCondition.Mode; import static jadx.core.dex.regions.conditions.IfCondition.merge; import static jadx.core.dex.regions.conditions.IfCondition.not; diff --git a/jadx-core/src/test/java/jadx/tests/functional/TypeMergeTest.java b/jadx-core/src/test/java/jadx/tests/functional/TypeMergeTest.java index ec51233ce..2a9bd21ea 100644 --- a/jadx-core/src/test/java/jadx/tests/functional/TypeMergeTest.java +++ b/jadx-core/src/test/java/jadx/tests/functional/TypeMergeTest.java @@ -1,5 +1,10 @@ package jadx.tests.functional; +import java.io.IOException; + +import org.junit.Before; +import org.junit.Test; + import jadx.core.clsp.ClspGraph; import jadx.core.dex.instructions.args.ArgType; import jadx.core.dex.instructions.args.PrimitiveType; @@ -7,11 +12,6 @@ import jadx.core.dex.nodes.DexNode; import jadx.core.dex.nodes.RootNode; import jadx.core.utils.exceptions.DecodeException; -import java.io.IOException; - -import org.junit.Before; -import org.junit.Test; - import static jadx.core.dex.instructions.args.ArgType.BOOLEAN; import static jadx.core.dex.instructions.args.ArgType.BYTE; import static jadx.core.dex.instructions.args.ArgType.CHAR; diff --git a/jadx-core/src/test/java/jadx/tests/integration/TestArgInline.java b/jadx-core/src/test/java/jadx/tests/integration/TestArgInline.java index 93add0f77..488d75c68 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/TestArgInline.java +++ b/jadx-core/src/test/java/jadx/tests/integration/TestArgInline.java @@ -1,10 +1,10 @@ package jadx.tests.integration; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/TestClassGen.java b/jadx-core/src/test/java/jadx/tests/integration/TestClassGen.java index 146320558..df20e0504 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/TestClassGen.java +++ b/jadx-core/src/test/java/jadx/tests/integration/TestClassGen.java @@ -1,10 +1,10 @@ package jadx.tests.integration; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/TestDuplicateCast.java b/jadx-core/src/test/java/jadx/tests/integration/TestDuplicateCast.java index 3b6fa458f..ece98e71b 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/TestDuplicateCast.java +++ b/jadx-core/src/test/java/jadx/tests/integration/TestDuplicateCast.java @@ -1,5 +1,9 @@ package jadx.tests.integration; +import java.util.List; + +import org.junit.Test; + import jadx.core.dex.instructions.InsnType; import jadx.core.dex.instructions.args.InsnWrapArg; import jadx.core.dex.nodes.ClassNode; @@ -7,10 +11,6 @@ import jadx.core.dex.nodes.InsnNode; import jadx.core.dex.nodes.MethodNode; import jadx.tests.api.IntegrationTest; -import java.util.List; - -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; diff --git a/jadx-core/src/test/java/jadx/tests/integration/TestFloatValue.java b/jadx-core/src/test/java/jadx/tests/integration/TestFloatValue.java index 1085a8267..5cd7da9e6 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/TestFloatValue.java +++ b/jadx-core/src/test/java/jadx/tests/integration/TestFloatValue.java @@ -1,10 +1,10 @@ package jadx.tests.integration; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/TestRedundantBrackets.java b/jadx-core/src/test/java/jadx/tests/integration/TestRedundantBrackets.java index 3b3a0bda0..c37ab062d 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/TestRedundantBrackets.java +++ b/jadx-core/src/test/java/jadx/tests/integration/TestRedundantBrackets.java @@ -1,10 +1,10 @@ package jadx.tests.integration; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/TestRedundantReturn.java b/jadx-core/src/test/java/jadx/tests/integration/TestRedundantReturn.java index bf4f76ed6..1aac4736c 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/TestRedundantReturn.java +++ b/jadx-core/src/test/java/jadx/tests/integration/TestRedundantReturn.java @@ -1,10 +1,10 @@ package jadx.tests.integration; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/TestReturnWrapping.java b/jadx-core/src/test/java/jadx/tests/integration/TestReturnWrapping.java index d745a7fb9..ae6596400 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/TestReturnWrapping.java +++ b/jadx-core/src/test/java/jadx/tests/integration/TestReturnWrapping.java @@ -1,10 +1,10 @@ package jadx.tests.integration; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/TestStaticFieldsInit.java b/jadx-core/src/test/java/jadx/tests/integration/TestStaticFieldsInit.java index 3321b5040..1aa20660d 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/TestStaticFieldsInit.java +++ b/jadx-core/src/test/java/jadx/tests/integration/TestStaticFieldsInit.java @@ -1,10 +1,10 @@ package jadx.tests.integration; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/TestStaticMethod.java b/jadx-core/src/test/java/jadx/tests/integration/TestStaticMethod.java index 67e22d85e..552048484 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/TestStaticMethod.java +++ b/jadx-core/src/test/java/jadx/tests/integration/TestStaticMethod.java @@ -1,10 +1,10 @@ package jadx.tests.integration; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/TestStringBuilderElimination.java b/jadx-core/src/test/java/jadx/tests/integration/TestStringBuilderElimination.java index 45cf8ac98..ad2c11e12 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/TestStringBuilderElimination.java +++ b/jadx-core/src/test/java/jadx/tests/integration/TestStringBuilderElimination.java @@ -1,10 +1,10 @@ package jadx.tests.integration; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/TestWrongCode.java b/jadx-core/src/test/java/jadx/tests/integration/TestWrongCode.java index 3d9d04a8d..894f0c248 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/TestWrongCode.java +++ b/jadx-core/src/test/java/jadx/tests/integration/TestWrongCode.java @@ -1,10 +1,10 @@ package jadx.tests.integration; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/integration/annotations/TestAnnotations.java b/jadx-core/src/test/java/jadx/tests/integration/annotations/TestAnnotations.java index 9a47496c2..70be6b793 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/annotations/TestAnnotations.java +++ b/jadx-core/src/test/java/jadx/tests/integration/annotations/TestAnnotations.java @@ -1,10 +1,10 @@ package jadx.tests.integration.annotations; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/integration/annotations/TestAnnotations2.java b/jadx-core/src/test/java/jadx/tests/integration/annotations/TestAnnotations2.java index 5d2269d9a..1ddf284f2 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/annotations/TestAnnotations2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/annotations/TestAnnotations2.java @@ -1,8 +1,5 @@ package jadx.tests.integration.annotations; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -10,6 +7,9 @@ import java.lang.annotation.Target; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/annotations/TestParamAnnotations.java b/jadx-core/src/test/java/jadx/tests/integration/annotations/TestParamAnnotations.java index 2aef62a2c..9738bd568 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/annotations/TestParamAnnotations.java +++ b/jadx-core/src/test/java/jadx/tests/integration/annotations/TestParamAnnotations.java @@ -1,8 +1,5 @@ package jadx.tests.integration.annotations; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -10,6 +7,9 @@ import java.lang.annotation.Target; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/arith/TestArith.java b/jadx-core/src/test/java/jadx/tests/integration/arith/TestArith.java index e0a67936f..d1ff231fb 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/arith/TestArith.java +++ b/jadx-core/src/test/java/jadx/tests/integration/arith/TestArith.java @@ -1,10 +1,10 @@ package jadx.tests.integration.arith; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/arith/TestArith3.java b/jadx-core/src/test/java/jadx/tests/integration/arith/TestArith3.java index 8af2a00ea..9ab664756 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/arith/TestArith3.java +++ b/jadx-core/src/test/java/jadx/tests/integration/arith/TestArith3.java @@ -1,10 +1,10 @@ package jadx.tests.integration.arith; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/integration/arith/TestFieldIncrement.java b/jadx-core/src/test/java/jadx/tests/integration/arith/TestFieldIncrement.java index c27913527..1811c403b 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/arith/TestFieldIncrement.java +++ b/jadx-core/src/test/java/jadx/tests/integration/arith/TestFieldIncrement.java @@ -1,10 +1,10 @@ package jadx.tests.integration.arith; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/arith/TestFieldIncrement2.java b/jadx-core/src/test/java/jadx/tests/integration/arith/TestFieldIncrement2.java index e0c52acf2..0e2bba34e 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/arith/TestFieldIncrement2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/arith/TestFieldIncrement2.java @@ -1,10 +1,10 @@ package jadx.tests.integration.arith; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/arith/TestFieldIncrement3.java b/jadx-core/src/test/java/jadx/tests/integration/arith/TestFieldIncrement3.java index 1a59961e0..166f43b41 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/arith/TestFieldIncrement3.java +++ b/jadx-core/src/test/java/jadx/tests/integration/arith/TestFieldIncrement3.java @@ -1,12 +1,12 @@ package jadx.tests.integration.arith; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.util.Random; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/arith/TestSpecialValues.java b/jadx-core/src/test/java/jadx/tests/integration/arith/TestSpecialValues.java index 1f3b172d5..8a2f0a730 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/arith/TestSpecialValues.java +++ b/jadx-core/src/test/java/jadx/tests/integration/arith/TestSpecialValues.java @@ -1,10 +1,10 @@ package jadx.tests.integration.arith; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrayFill.java b/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrayFill.java index 8eabe8e03..eda1c0998 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrayFill.java +++ b/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrayFill.java @@ -1,10 +1,10 @@ package jadx.tests.integration.arrays; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrayFill2.java b/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrayFill2.java index 4a3deb1fb..1904b8516 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrayFill2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrayFill2.java @@ -1,10 +1,10 @@ package jadx.tests.integration.arrays; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrayFillConstReplace.java b/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrayFillConstReplace.java index 7ed380e51..8371016b6 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrayFillConstReplace.java +++ b/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrayFillConstReplace.java @@ -1,10 +1,10 @@ package jadx.tests.integration.arrays; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrays.java b/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrays.java index 3c948e1c4..8b3587ac5 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrays.java +++ b/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrays.java @@ -1,10 +1,10 @@ package jadx.tests.integration.arrays; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrays2.java b/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrays2.java index 79672f091..9f0235dab 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrays2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrays2.java @@ -1,10 +1,10 @@ package jadx.tests.integration.arrays; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.instanceOf; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrays3.java b/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrays3.java index c4a601db8..c33112d4a 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrays3.java +++ b/jadx-core/src/test/java/jadx/tests/integration/arrays/TestArrays3.java @@ -1,10 +1,10 @@ package jadx.tests.integration.arrays; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.instanceOf; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestCmpOp.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestCmpOp.java index f78eb517c..0936b1529 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestCmpOp.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestCmpOp.java @@ -1,10 +1,10 @@ package jadx.tests.integration.conditions; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestCmpOp2.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestCmpOp2.java index d63ef1656..92479b7be 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestCmpOp2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestCmpOp2.java @@ -1,10 +1,10 @@ package jadx.tests.integration.conditions; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions.java index a39d81470..7434956d5 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions.java @@ -1,10 +1,10 @@ package jadx.tests.integration.conditions; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions10.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions10.java index 5a3dd6c8f..339c476dc 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions10.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions10.java @@ -1,10 +1,10 @@ package jadx.tests.integration.conditions; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions11.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions11.java index aba8bf53e..ed2341eef 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions11.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions11.java @@ -1,10 +1,10 @@ package jadx.tests.integration.conditions; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions12.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions12.java index bff2390e0..fb92b6dde 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions12.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions12.java @@ -1,10 +1,10 @@ package jadx.tests.integration.conditions; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions13.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions13.java index b92b5457c..58290fcfe 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions13.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions13.java @@ -1,10 +1,10 @@ package jadx.tests.integration.conditions; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions14.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions14.java index 2f2b63442..56b68e735 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions14.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions14.java @@ -1,10 +1,10 @@ package jadx.tests.integration.conditions; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions15.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions15.java index c65149734..8a84d6a8e 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions15.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions15.java @@ -1,10 +1,10 @@ package jadx.tests.integration.conditions; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions16.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions16.java index 3d47787a3..4e988aaf2 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions16.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions16.java @@ -1,10 +1,10 @@ package jadx.tests.integration.conditions; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions2.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions2.java index 4e4e3fbc9..055b1dc7e 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions2.java @@ -1,10 +1,10 @@ package jadx.tests.integration.conditions; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - public class TestConditions2 extends IntegrationTest { public static class TestCls { diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions3.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions3.java index 4502adf97..455437709 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions3.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions3.java @@ -1,13 +1,13 @@ package jadx.tests.integration.conditions; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.util.List; import java.util.regex.Pattern; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions4.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions4.java index 7711f723e..3033e7108 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions4.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions4.java @@ -1,10 +1,10 @@ package jadx.tests.integration.conditions; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions5.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions5.java index d24c0f61e..bfcaa2d3f 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions5.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions5.java @@ -1,10 +1,10 @@ package jadx.tests.integration.conditions; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions6.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions6.java index 5aae93c7f..ce793964d 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions6.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions6.java @@ -1,12 +1,12 @@ package jadx.tests.integration.conditions; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.util.List; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions7.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions7.java index a3dcd8fe5..6ba5deb2c 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions7.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions7.java @@ -1,10 +1,10 @@ package jadx.tests.integration.conditions; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions8.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions8.java index 687aecb1f..4ce573a5a 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions8.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions8.java @@ -1,10 +1,10 @@ package jadx.tests.integration.conditions; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions9.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions9.java index c1aa9fff9..3b0bd34e3 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions9.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestConditions9.java @@ -1,10 +1,10 @@ package jadx.tests.integration.conditions; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestElseIf.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestElseIf.java index db4e70764..52e2321ef 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestElseIf.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestElseIf.java @@ -1,10 +1,10 @@ package jadx.tests.integration.conditions; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestNestedIf.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestNestedIf.java index 46b29034d..bbe4fbd49 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestNestedIf.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestNestedIf.java @@ -1,10 +1,10 @@ package jadx.tests.integration.conditions; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static jadx.tests.api.utils.JadxMatchers.countString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestNestedIf2.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestNestedIf2.java index 0e9ccec22..63cc64a35 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestNestedIf2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestNestedIf2.java @@ -1,10 +1,10 @@ package jadx.tests.integration.conditions; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestSimpleConditions.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestSimpleConditions.java index 7b445b205..d8a023599 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestSimpleConditions.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestSimpleConditions.java @@ -1,10 +1,10 @@ package jadx.tests.integration.conditions; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestTernary.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestTernary.java index 96aa26ffb..3c6c5bf02 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestTernary.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestTernary.java @@ -1,10 +1,10 @@ package jadx.tests.integration.conditions; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestTernary2.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestTernary2.java index 7e109cbd3..9047f58ab 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestTernary2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestTernary2.java @@ -1,10 +1,10 @@ package jadx.tests.integration.conditions; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestTernary3.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestTernary3.java index b62cc2223..f0dece784 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestTernary3.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestTernary3.java @@ -1,13 +1,13 @@ package jadx.tests.integration.conditions; +import org.junit.Test; + import jadx.core.dex.instructions.args.InsnArg; import jadx.core.dex.instructions.args.Named; import jadx.core.dex.instructions.args.RegisterArg; import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestTernaryInIf.java b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestTernaryInIf.java index cfa1f1be6..67175bec4 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/conditions/TestTernaryInIf.java +++ b/jadx-core/src/test/java/jadx/tests/integration/conditions/TestTernaryInIf.java @@ -1,10 +1,10 @@ package jadx.tests.integration.conditions; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/integration/debuginfo/TestLineNumbers.java b/jadx-core/src/test/java/jadx/tests/integration/debuginfo/TestLineNumbers.java index 9a6a03408..4aa4576c7 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/debuginfo/TestLineNumbers.java +++ b/jadx-core/src/test/java/jadx/tests/integration/debuginfo/TestLineNumbers.java @@ -1,5 +1,7 @@ package jadx.tests.integration.debuginfo; +import org.junit.Test; + import jadx.core.codegen.CodeWriter; import jadx.core.dex.attributes.nodes.LineAttrNode; import jadx.core.dex.nodes.ClassNode; @@ -7,8 +9,6 @@ import jadx.core.dex.nodes.FieldNode; import jadx.core.dex.nodes.MethodNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/debuginfo/TestLineNumbers2.java b/jadx-core/src/test/java/jadx/tests/integration/debuginfo/TestLineNumbers2.java index 407f103b5..31e47b56f 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/debuginfo/TestLineNumbers2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/debuginfo/TestLineNumbers2.java @@ -1,14 +1,14 @@ package jadx.tests.integration.debuginfo; -import jadx.core.codegen.CodeWriter; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.lang.ref.WeakReference; import java.util.Map; import org.junit.Test; +import jadx.core.codegen.CodeWriter; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static org.junit.Assert.assertEquals; public class TestLineNumbers2 extends IntegrationTest { @@ -23,7 +23,7 @@ public class TestLineNumbers2 extends IntegrationTest { TestCls store = f != null ? f.get() : null; if (store == null) { store = new TestCls(s); - f = new WeakReference(store); + f = new WeakReference<>(store); } return store; } diff --git a/jadx-core/src/test/java/jadx/tests/integration/debuginfo/TestReturnSourceLine.java b/jadx-core/src/test/java/jadx/tests/integration/debuginfo/TestReturnSourceLine.java index af87b5e6c..823376166 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/debuginfo/TestReturnSourceLine.java +++ b/jadx-core/src/test/java/jadx/tests/integration/debuginfo/TestReturnSourceLine.java @@ -1,13 +1,13 @@ package jadx.tests.integration.debuginfo; +import org.junit.Test; + import jadx.core.codegen.CodeWriter; import jadx.core.dex.attributes.nodes.LineAttrNode; import jadx.core.dex.nodes.ClassNode; import jadx.core.dex.nodes.MethodNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; diff --git a/jadx-core/src/test/java/jadx/tests/integration/enums/TestEnums.java b/jadx-core/src/test/java/jadx/tests/integration/enums/TestEnums.java index 086adc52c..556faac67 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/enums/TestEnums.java +++ b/jadx-core/src/test/java/jadx/tests/integration/enums/TestEnums.java @@ -1,10 +1,10 @@ package jadx.tests.integration.enums; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsLines; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/enums/TestEnums2.java b/jadx-core/src/test/java/jadx/tests/integration/enums/TestEnums2.java index 4037ad8dd..80638a151 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/enums/TestEnums2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/enums/TestEnums2.java @@ -1,11 +1,11 @@ package jadx.tests.integration.enums; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; import jadx.tests.api.utils.JadxMatchers; -import org.junit.Test; - import static org.junit.Assert.assertThat; public class TestEnums2 extends IntegrationTest { diff --git a/jadx-core/src/test/java/jadx/tests/integration/enums/TestEnums3.java b/jadx-core/src/test/java/jadx/tests/integration/enums/TestEnums3.java index 45c04075f..37f04fcf3 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/enums/TestEnums3.java +++ b/jadx-core/src/test/java/jadx/tests/integration/enums/TestEnums3.java @@ -1,10 +1,10 @@ package jadx.tests.integration.enums; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; diff --git a/jadx-core/src/test/java/jadx/tests/integration/enums/TestEnums4.java b/jadx-core/src/test/java/jadx/tests/integration/enums/TestEnums4.java index 248c0a608..6cc451712 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/enums/TestEnums4.java +++ b/jadx-core/src/test/java/jadx/tests/integration/enums/TestEnums4.java @@ -1,10 +1,10 @@ package jadx.tests.integration.enums; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/enums/TestEnumsInterface.java b/jadx-core/src/test/java/jadx/tests/integration/enums/TestEnumsInterface.java index 8a652416d..f2831660d 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/enums/TestEnumsInterface.java +++ b/jadx-core/src/test/java/jadx/tests/integration/enums/TestEnumsInterface.java @@ -1,9 +1,10 @@ package jadx.tests.integration.enums; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; import jadx.tests.api.utils.JadxMatchers; -import org.junit.Test; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/enums/TestEnumsWithConsts.java b/jadx-core/src/test/java/jadx/tests/integration/enums/TestEnumsWithConsts.java index 970928c79..d6ed1152d 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/enums/TestEnumsWithConsts.java +++ b/jadx-core/src/test/java/jadx/tests/integration/enums/TestEnumsWithConsts.java @@ -1,10 +1,10 @@ package jadx.tests.integration.enums; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsLines; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/enums/TestSwitchOverEnum.java b/jadx-core/src/test/java/jadx/tests/integration/enums/TestSwitchOverEnum.java index b171571f4..af70110a5 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/enums/TestSwitchOverEnum.java +++ b/jadx-core/src/test/java/jadx/tests/integration/enums/TestSwitchOverEnum.java @@ -1,10 +1,10 @@ package jadx.tests.integration.enums; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.countString; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/enums/TestSwitchOverEnum2.java b/jadx-core/src/test/java/jadx/tests/integration/enums/TestSwitchOverEnum2.java index 996e177d4..482031d33 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/enums/TestSwitchOverEnum2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/enums/TestSwitchOverEnum2.java @@ -1,10 +1,10 @@ package jadx.tests.integration.enums; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.countString; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/fallback/TestFallbackMode.java b/jadx-core/src/test/java/jadx/tests/integration/fallback/TestFallbackMode.java index b3d1ccfd2..185e257c3 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/fallback/TestFallbackMode.java +++ b/jadx-core/src/test/java/jadx/tests/integration/fallback/TestFallbackMode.java @@ -1,10 +1,10 @@ package jadx.tests.integration.fallback; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/generics/TestGenerics.java b/jadx-core/src/test/java/jadx/tests/integration/generics/TestGenerics.java index f1b3bbbc2..dcc25ebfb 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/generics/TestGenerics.java +++ b/jadx-core/src/test/java/jadx/tests/integration/generics/TestGenerics.java @@ -1,12 +1,12 @@ package jadx.tests.integration.generics; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.util.List; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/generics/TestGenerics2.java b/jadx-core/src/test/java/jadx/tests/integration/generics/TestGenerics2.java index a98d91838..93282f037 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/generics/TestGenerics2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/generics/TestGenerics2.java @@ -1,14 +1,14 @@ package jadx.tests.integration.generics; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.lang.ref.ReferenceQueue; import java.lang.ref.WeakReference; import java.util.Map; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/generics/TestGenerics3.java b/jadx-core/src/test/java/jadx/tests/integration/generics/TestGenerics3.java index 97be7c1f2..84d68bdfe 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/generics/TestGenerics3.java +++ b/jadx-core/src/test/java/jadx/tests/integration/generics/TestGenerics3.java @@ -1,12 +1,12 @@ package jadx.tests.integration.generics; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.util.List; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/generics/TestGenerics4.java b/jadx-core/src/test/java/jadx/tests/integration/generics/TestGenerics4.java index f3b137634..5fc0b6d3f 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/generics/TestGenerics4.java +++ b/jadx-core/src/test/java/jadx/tests/integration/generics/TestGenerics4.java @@ -1,10 +1,10 @@ package jadx.tests.integration.generics; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/generics/TestGenerics6.java b/jadx-core/src/test/java/jadx/tests/integration/generics/TestGenerics6.java index 562e27d69..5f2c1e3ad 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/generics/TestGenerics6.java +++ b/jadx-core/src/test/java/jadx/tests/integration/generics/TestGenerics6.java @@ -1,12 +1,12 @@ package jadx.tests.integration.generics; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.util.Collection; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/inline/TestInline.java b/jadx-core/src/test/java/jadx/tests/integration/inline/TestInline.java index c5c8e6b88..088982bb9 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inline/TestInline.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inline/TestInline.java @@ -1,10 +1,10 @@ package jadx.tests.integration.inline; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/inline/TestInline2.java b/jadx-core/src/test/java/jadx/tests/integration/inline/TestInline2.java index 145257da6..59a90fd95 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inline/TestInline2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inline/TestInline2.java @@ -1,10 +1,10 @@ package jadx.tests.integration.inline; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/inline/TestInline3.java b/jadx-core/src/test/java/jadx/tests/integration/inline/TestInline3.java index 16e9a6e1a..105309e1a 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inline/TestInline3.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inline/TestInline3.java @@ -1,10 +1,10 @@ package jadx.tests.integration.inline; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/inline/TestInline6.java b/jadx-core/src/test/java/jadx/tests/integration/inline/TestInline6.java index 1d14ddb06..83a6139c2 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inline/TestInline6.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inline/TestInline6.java @@ -1,10 +1,10 @@ package jadx.tests.integration.inline; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/inline/TestInlineInLoop.java b/jadx-core/src/test/java/jadx/tests/integration/inline/TestInlineInLoop.java index 05c013db4..e13a5a746 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inline/TestInlineInLoop.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inline/TestInlineInLoop.java @@ -1,10 +1,10 @@ package jadx.tests.integration.inline; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static jadx.tests.api.utils.JadxMatchers.countString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/inline/TestIssue86.java b/jadx-core/src/test/java/jadx/tests/integration/inline/TestIssue86.java index d29baa9dc..f789dfe5f 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inline/TestIssue86.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inline/TestIssue86.java @@ -1,13 +1,13 @@ package jadx.tests.integration.inline; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.util.ArrayList; import java.util.List; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; @@ -25,7 +25,7 @@ public class TestIssue86 extends IntegrationTest { private static final String DESC_TAG = "desc-tag"; private List test(String response) { - List reportList = new ArrayList(); + List reportList = new ArrayList<>(); try { System.out.println(response); if (response != null diff --git a/jadx-core/src/test/java/jadx/tests/integration/inline/TestSyntheticInline.java b/jadx-core/src/test/java/jadx/tests/integration/inline/TestSyntheticInline.java index feebd6a2e..ed13fe892 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inline/TestSyntheticInline.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inline/TestSyntheticInline.java @@ -1,10 +1,10 @@ package jadx.tests.integration.inline; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass.java b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass.java index 360314f3d..40b6409be 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass.java @@ -1,13 +1,13 @@ package jadx.tests.integration.inner; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.io.File; import java.io.FilenameFilter; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass10.java b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass10.java index d823caddd..eb9e0dda2 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass10.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass10.java @@ -1,12 +1,12 @@ package jadx.tests.integration.inner; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.util.Random; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass11.java b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass11.java index 91c604f03..e92edcd93 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass11.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass11.java @@ -1,12 +1,12 @@ package jadx.tests.integration.inner; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.util.Random; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass12.java b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass12.java index c38d130f8..9f41e89ec 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass12.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass12.java @@ -1,10 +1,10 @@ package jadx.tests.integration.inner; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass2.java b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass2.java index 00f8f646e..338b6889a 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass2.java @@ -1,10 +1,10 @@ package jadx.tests.integration.inner; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass3.java b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass3.java index b9530d996..88e51dd6b 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass3.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass3.java @@ -1,10 +1,10 @@ package jadx.tests.integration.inner; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass4.java b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass4.java index d2032cd95..46150792b 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass4.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass4.java @@ -1,10 +1,10 @@ package jadx.tests.integration.inner; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static jadx.tests.api.utils.JadxMatchers.countString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass5.java b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass5.java index e4d4ddcd3..bcfd0c83b 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass5.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass5.java @@ -1,14 +1,14 @@ package jadx.tests.integration.inner; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.is; @@ -19,7 +19,7 @@ import static org.junit.Assert.assertThat; public class TestAnonymousClass5 extends IntegrationTest { public static class TestCls { - private final Map map = new HashMap(); + private final Map map = new HashMap<>(); private int a; public Iterable test(String name) { diff --git a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass6.java b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass6.java index 7c2f4546c..4d6b75751 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass6.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass6.java @@ -1,10 +1,10 @@ package jadx.tests.integration.inner; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass7.java b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass7.java index d35e77b65..50dd716e3 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass7.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass7.java @@ -1,10 +1,10 @@ package jadx.tests.integration.inner; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass8.java b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass8.java index f2004c46e..d0adca6f1 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass8.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass8.java @@ -1,10 +1,10 @@ package jadx.tests.integration.inner; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass9.java b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass9.java index 70977dcc6..e26c8bb79 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass9.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inner/TestAnonymousClass9.java @@ -1,13 +1,13 @@ package jadx.tests.integration.inner; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/integration/inner/TestInnerClass.java b/jadx-core/src/test/java/jadx/tests/integration/inner/TestInnerClass.java index 5e2c95c3a..93a8ee819 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inner/TestInnerClass.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inner/TestInnerClass.java @@ -1,10 +1,10 @@ package jadx.tests.integration.inner; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/inner/TestInnerClass2.java b/jadx-core/src/test/java/jadx/tests/integration/inner/TestInnerClass2.java index b8c4a3a00..c27adde13 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inner/TestInnerClass2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inner/TestInnerClass2.java @@ -1,13 +1,13 @@ package jadx.tests.integration.inner; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.util.Timer; import java.util.TimerTask; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/inner/TestInnerClass3.java b/jadx-core/src/test/java/jadx/tests/integration/inner/TestInnerClass3.java index adeabda9a..e06fc96ea 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inner/TestInnerClass3.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inner/TestInnerClass3.java @@ -1,10 +1,10 @@ package jadx.tests.integration.inner; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/inner/TestInnerClass4.java b/jadx-core/src/test/java/jadx/tests/integration/inner/TestInnerClass4.java index d10c1cd08..215e1a707 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inner/TestInnerClass4.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inner/TestInnerClass4.java @@ -1,10 +1,10 @@ package jadx.tests.integration.inner; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/inner/TestInnerClass5.java b/jadx-core/src/test/java/jadx/tests/integration/inner/TestInnerClass5.java index 1f5e5b707..065725bce 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inner/TestInnerClass5.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inner/TestInnerClass5.java @@ -1,10 +1,10 @@ package jadx.tests.integration.inner; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; diff --git a/jadx-core/src/test/java/jadx/tests/integration/inner/TestRFieldAccess.java b/jadx-core/src/test/java/jadx/tests/integration/inner/TestRFieldAccess.java index 3e55fa636..0db9653cb 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inner/TestRFieldAccess.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inner/TestRFieldAccess.java @@ -1,10 +1,10 @@ package jadx.tests.integration.inner; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.countString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/inner/TestRFieldRestore.java b/jadx-core/src/test/java/jadx/tests/integration/inner/TestRFieldRestore.java index 03508b8dd..6967e8303 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inner/TestRFieldRestore.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inner/TestRFieldRestore.java @@ -1,13 +1,13 @@ package jadx.tests.integration.inner; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.util.HashMap; import java.util.Map; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.not; @@ -26,7 +26,7 @@ public class TestRFieldRestore extends IntegrationTest { // unknown R class disableCompilation(); - Map map = new HashMap(); + Map map = new HashMap<>(); map.put(2131230730, "id.Button"); setResMap(map); diff --git a/jadx-core/src/test/java/jadx/tests/integration/inner/TestRFieldRestore2.java b/jadx-core/src/test/java/jadx/tests/integration/inner/TestRFieldRestore2.java index a3f8d2d9a..fa1947ce9 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/inner/TestRFieldRestore2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/inner/TestRFieldRestore2.java @@ -1,13 +1,13 @@ package jadx.tests.integration.inner; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.util.HashMap; import java.util.Map; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; @@ -28,7 +28,7 @@ public class TestRFieldRestore2 extends IntegrationTest { // unknown id.Button disableCompilation(); - Map map = new HashMap(); + Map map = new HashMap<>(); map.put(2131230730, "id.Button"); setResMap(map); diff --git a/jadx-core/src/test/java/jadx/tests/integration/invoke/TestConstructorInvoke.java b/jadx-core/src/test/java/jadx/tests/integration/invoke/TestConstructorInvoke.java index 32eaa919e..308185e52 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/invoke/TestConstructorInvoke.java +++ b/jadx-core/src/test/java/jadx/tests/integration/invoke/TestConstructorInvoke.java @@ -1,10 +1,10 @@ package jadx.tests.integration.invoke; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.Matchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/invoke/TestInvoke1.java b/jadx-core/src/test/java/jadx/tests/integration/invoke/TestInvoke1.java index f1fb564cb..4e2758e0f 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/invoke/TestInvoke1.java +++ b/jadx-core/src/test/java/jadx/tests/integration/invoke/TestInvoke1.java @@ -1,12 +1,12 @@ package jadx.tests.integration.invoke; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.io.IOException; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/invoke/TestInvokeInCatch.java b/jadx-core/src/test/java/jadx/tests/integration/invoke/TestInvokeInCatch.java index 2d130af24..66017c89c 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/invoke/TestInvokeInCatch.java +++ b/jadx-core/src/test/java/jadx/tests/integration/invoke/TestInvokeInCatch.java @@ -1,12 +1,12 @@ package jadx.tests.integration.invoke; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.io.IOException; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/integration/invoke/TestOverloadedMethodInvoke.java b/jadx-core/src/test/java/jadx/tests/integration/invoke/TestOverloadedMethodInvoke.java index 725adda22..e34e80835 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/invoke/TestOverloadedMethodInvoke.java +++ b/jadx-core/src/test/java/jadx/tests/integration/invoke/TestOverloadedMethodInvoke.java @@ -1,10 +1,10 @@ package jadx.tests.integration.invoke; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/integration/invoke/TestSuperInvoke.java b/jadx-core/src/test/java/jadx/tests/integration/invoke/TestSuperInvoke.java index 9fb73847e..e71fca13f 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/invoke/TestSuperInvoke.java +++ b/jadx-core/src/test/java/jadx/tests/integration/invoke/TestSuperInvoke.java @@ -1,10 +1,10 @@ package jadx.tests.integration.invoke; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.countString; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/invoke/TestVarArg.java b/jadx-core/src/test/java/jadx/tests/integration/invoke/TestVarArg.java index 4d871a3b2..38152fa6b 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/invoke/TestVarArg.java +++ b/jadx-core/src/test/java/jadx/tests/integration/invoke/TestVarArg.java @@ -1,10 +1,10 @@ package jadx.tests.integration.invoke; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestArrayForEach.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestArrayForEach.java index 4e8698ecd..103c5ad55 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestArrayForEach.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestArrayForEach.java @@ -1,10 +1,10 @@ package jadx.tests.integration.loops; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsLines; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestArrayForEach2.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestArrayForEach2.java index 6cc5a4028..e7695c471 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestArrayForEach2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestArrayForEach2.java @@ -1,10 +1,10 @@ package jadx.tests.integration.loops; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsLines; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestArrayForEachNegative.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestArrayForEachNegative.java index e2569c43b..3ad3192d6 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestArrayForEachNegative.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestArrayForEachNegative.java @@ -1,10 +1,10 @@ package jadx.tests.integration.loops; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestBreakInComplexIf.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestBreakInComplexIf.java index d45f3d56c..c9658c8ef 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestBreakInComplexIf.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestBreakInComplexIf.java @@ -1,13 +1,13 @@ package jadx.tests.integration.loops; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.util.HashMap; import java.util.Map; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; @@ -39,7 +39,7 @@ public class TestBreakInComplexIf extends IntegrationTest { } public void check() { - Map map = new HashMap(); + Map map = new HashMap<>(); map.put("3", new Point(100, 100)); map.put("4", new Point(60, 100)); assertThat(test(map, 2), is(3)); diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestBreakInComplexIf2.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestBreakInComplexIf2.java index e4d8e0bd8..c9f1b024b 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestBreakInComplexIf2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestBreakInComplexIf2.java @@ -1,13 +1,13 @@ package jadx.tests.integration.loops; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.util.Arrays; import java.util.List; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.countString; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestBreakInLoop.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestBreakInLoop.java index e42a0a0e7..fd83b6cad 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestBreakInLoop.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestBreakInLoop.java @@ -1,10 +1,10 @@ package jadx.tests.integration.loops; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static jadx.tests.api.utils.JadxMatchers.countString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestBreakInLoop2.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestBreakInLoop2.java index a5add027b..181f02c9a 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestBreakInLoop2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestBreakInLoop2.java @@ -1,12 +1,12 @@ package jadx.tests.integration.loops; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.util.List; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestBreakWithLabel.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestBreakWithLabel.java index 83aef8a14..91cfe231c 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestBreakWithLabel.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestBreakWithLabel.java @@ -1,12 +1,12 @@ package jadx.tests.integration.loops; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.lang.reflect.Method; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestContinueInLoop.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestContinueInLoop.java index 6c52e11c3..26ee681f5 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestContinueInLoop.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestContinueInLoop.java @@ -1,10 +1,10 @@ package jadx.tests.integration.loops; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestContinueInLoop2.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestContinueInLoop2.java index bc225481d..de7b54fea 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestContinueInLoop2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestContinueInLoop2.java @@ -1,5 +1,7 @@ package jadx.tests.integration.loops; +import org.junit.Test; + import jadx.core.dex.attributes.AType; import jadx.core.dex.instructions.InsnType; import jadx.core.dex.nodes.BlockNode; @@ -14,8 +16,6 @@ import jadx.core.utils.BlockUtils; import jadx.core.utils.InstructionRemover; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestDoWhileBreak.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestDoWhileBreak.java index 50200e3d5..040d951f9 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestDoWhileBreak.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestDoWhileBreak.java @@ -1,10 +1,10 @@ package jadx.tests.integration.loops; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestIfInLoop2.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestIfInLoop2.java index 76232320e..4e2f3fc2c 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestIfInLoop2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestIfInLoop2.java @@ -1,10 +1,10 @@ package jadx.tests.integration.loops; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestIfInLoop3.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestIfInLoop3.java index 2dc50d237..d86de34d1 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestIfInLoop3.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestIfInLoop3.java @@ -1,10 +1,10 @@ package jadx.tests.integration.loops; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestIndexForLoop.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestIndexForLoop.java index 590e9efbc..a7a67c881 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestIndexForLoop.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestIndexForLoop.java @@ -1,10 +1,10 @@ package jadx.tests.integration.loops; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsLines; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestIterableForEach.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestIterableForEach.java index e89358967..f43b852e1 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestIterableForEach.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestIterableForEach.java @@ -1,10 +1,10 @@ package jadx.tests.integration.loops; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsLines; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestIterableForEach2.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestIterableForEach2.java index a2215eeab..7282a932a 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestIterableForEach2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestIterableForEach2.java @@ -1,13 +1,13 @@ package jadx.tests.integration.loops; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.io.IOException; import java.util.List; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestIterableForEach3.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestIterableForEach3.java index e84223493..95acff4ec 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestIterableForEach3.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestIterableForEach3.java @@ -1,12 +1,12 @@ package jadx.tests.integration.loops; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.util.Set; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopCondition.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopCondition.java index 31e944d54..bc5f89935 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopCondition.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopCondition.java @@ -1,10 +1,10 @@ package jadx.tests.integration.loops; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopCondition2.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopCondition2.java index 889d3b1bb..713c0698a 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopCondition2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopCondition2.java @@ -1,10 +1,10 @@ package jadx.tests.integration.loops; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopCondition3.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopCondition3.java index 729394668..e76a946cb 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopCondition3.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopCondition3.java @@ -1,10 +1,10 @@ package jadx.tests.integration.loops; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopCondition4.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopCondition4.java index bab66d309..a1fa71e90 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopCondition4.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopCondition4.java @@ -1,10 +1,10 @@ package jadx.tests.integration.loops; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopConditionInvoke.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopConditionInvoke.java index d00cdc183..21cc65917 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopConditionInvoke.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopConditionInvoke.java @@ -1,10 +1,10 @@ package jadx.tests.integration.loops; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopDetection.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopDetection.java index b8c9f41f7..606a9dad1 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopDetection.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopDetection.java @@ -1,10 +1,10 @@ package jadx.tests.integration.loops; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopDetection2.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopDetection2.java index f2229d570..bc22f8c33 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopDetection2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopDetection2.java @@ -1,10 +1,10 @@ package jadx.tests.integration.loops; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopDetection3.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopDetection3.java index 0c4605dfe..152d3ab02 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopDetection3.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopDetection3.java @@ -1,10 +1,10 @@ package jadx.tests.integration.loops; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopDetection4.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopDetection4.java index e54626402..91e724e2a 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopDetection4.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestLoopDetection4.java @@ -1,12 +1,12 @@ package jadx.tests.integration.loops; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.util.Iterator; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestNestedLoops.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestNestedLoops.java index 381711684..2edc6aedd 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestNestedLoops.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestNestedLoops.java @@ -1,12 +1,12 @@ package jadx.tests.integration.loops; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.util.List; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestNestedLoops2.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestNestedLoops2.java index 969c05562..90067a23c 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestNestedLoops2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestNestedLoops2.java @@ -1,12 +1,12 @@ package jadx.tests.integration.loops; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.util.List; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestNestedLoops3.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestNestedLoops3.java index 4c2685032..f6b13e2a7 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestNestedLoops3.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestNestedLoops3.java @@ -1,10 +1,10 @@ package jadx.tests.integration.loops; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestSequentialLoops.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestSequentialLoops.java index ef73f927a..083608ed3 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestSequentialLoops.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestSequentialLoops.java @@ -1,10 +1,10 @@ package jadx.tests.integration.loops; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static jadx.tests.api.utils.JadxMatchers.countString; import static org.hamcrest.CoreMatchers.containsString; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestTryCatchInLoop.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestTryCatchInLoop.java index e0a2cf994..c8a3059b5 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestTryCatchInLoop.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestTryCatchInLoop.java @@ -1,10 +1,10 @@ package jadx.tests.integration.loops; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/loops/TestTryCatchInLoop2.java b/jadx-core/src/test/java/jadx/tests/integration/loops/TestTryCatchInLoop2.java index e5f7eb7a6..58e8b0d4a 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/loops/TestTryCatchInLoop2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/loops/TestTryCatchInLoop2.java @@ -1,13 +1,13 @@ package jadx.tests.integration.loops; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.util.HashMap; import java.util.Map; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; @@ -19,7 +19,7 @@ public class TestTryCatchInLoop2 extends IntegrationTest { String name; } - private final Map mCache = new HashMap(); + private final Map mCache = new HashMap<>(); void test(MyItem[] items) { synchronized (this.mCache) { diff --git a/jadx-core/src/test/java/jadx/tests/integration/names/TestNameAssign2.java b/jadx-core/src/test/java/jadx/tests/integration/names/TestNameAssign2.java index ad521de4e..7a9ef713c 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/names/TestNameAssign2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/names/TestNameAssign2.java @@ -1,11 +1,5 @@ package jadx.tests.integration.names; -import jadx.core.dex.nodes.BlockNode; -import jadx.core.dex.nodes.ClassNode; -import jadx.core.dex.nodes.MethodNode; -import jadx.core.dex.visitors.ssa.LiveVarAnalysis; -import jadx.tests.api.IntegrationTest; - import java.util.BitSet; import java.util.Deque; import java.util.LinkedList; @@ -13,6 +7,12 @@ import java.util.List; import org.junit.Test; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.ClassNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.dex.visitors.ssa.LiveVarAnalysis; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; @@ -25,7 +25,7 @@ public class TestNameAssign2 extends IntegrationTest { int blocksCount = blocks.size(); BitSet hasPhi = new BitSet(blocksCount); BitSet processed = new BitSet(blocksCount); - Deque workList = new LinkedList(); + Deque workList = new LinkedList<>(); BitSet assignBlocks = la.getAssignBlocks(regNum); for (int id = assignBlocks.nextSetBit(0); id >= 0; id = assignBlocks.nextSetBit(id + 1)) { diff --git a/jadx-core/src/test/java/jadx/tests/integration/names/TestSameMethodsNames.java b/jadx-core/src/test/java/jadx/tests/integration/names/TestSameMethodsNames.java index 2baeed759..e052bf62d 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/names/TestSameMethodsNames.java +++ b/jadx-core/src/test/java/jadx/tests/integration/names/TestSameMethodsNames.java @@ -1,10 +1,10 @@ package jadx.tests.integration.names; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/others/TestFieldInit.java b/jadx-core/src/test/java/jadx/tests/integration/others/TestFieldInit.java index 8cca832b0..fe399efe5 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/others/TestFieldInit.java +++ b/jadx-core/src/test/java/jadx/tests/integration/others/TestFieldInit.java @@ -1,14 +1,14 @@ package jadx.tests.integration.others; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.util.ArrayList; import java.util.List; import java.util.Random; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.not; @@ -21,7 +21,7 @@ public class TestFieldInit extends IntegrationTest { public class A { } - private static List s = new ArrayList(); + private static List s = new ArrayList<>(); private A a = new A(); private int i = 1 + Random.class.getSimpleName().length(); diff --git a/jadx-core/src/test/java/jadx/tests/integration/others/TestFieldInit2.java b/jadx-core/src/test/java/jadx/tests/integration/others/TestFieldInit2.java index 26bec5eac..9b0399e23 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/others/TestFieldInit2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/others/TestFieldInit2.java @@ -1,10 +1,10 @@ package jadx.tests.integration.others; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsLines; import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/others/TestFieldInitInTryCatch.java b/jadx-core/src/test/java/jadx/tests/integration/others/TestFieldInitInTryCatch.java index 046a7a9a9..a76769996 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/others/TestFieldInitInTryCatch.java +++ b/jadx-core/src/test/java/jadx/tests/integration/others/TestFieldInitInTryCatch.java @@ -1,13 +1,13 @@ package jadx.tests.integration.others; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.net.MalformedURLException; import java.net.URL; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsLines; import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/others/TestIfInTry.java b/jadx-core/src/test/java/jadx/tests/integration/others/TestIfInTry.java index 9683b0b35..c47211b12 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/others/TestIfInTry.java +++ b/jadx-core/src/test/java/jadx/tests/integration/others/TestIfInTry.java @@ -1,13 +1,13 @@ package jadx.tests.integration.others; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.io.File; import java.io.IOException; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static jadx.tests.api.utils.JadxMatchers.countString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/others/TestIfTryInCatch.java b/jadx-core/src/test/java/jadx/tests/integration/others/TestIfTryInCatch.java index fc8e077e6..7ec6ff9f7 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/others/TestIfTryInCatch.java +++ b/jadx-core/src/test/java/jadx/tests/integration/others/TestIfTryInCatch.java @@ -1,10 +1,10 @@ package jadx.tests.integration.others; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static jadx.tests.api.utils.JadxMatchers.countString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/others/TestIssue13a.java b/jadx-core/src/test/java/jadx/tests/integration/others/TestIssue13a.java index 2df56df69..88ac0089b 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/others/TestIssue13a.java +++ b/jadx-core/src/test/java/jadx/tests/integration/others/TestIssue13a.java @@ -1,13 +1,13 @@ package jadx.tests.integration.others; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.lang.reflect.Field; import java.util.HashMap; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; @@ -16,7 +16,7 @@ public class TestIssue13a extends IntegrationTest { public static class TestCls { private static final String TAG = "Parcel"; private static final HashMap>> - mCreators = new HashMap>>(); + mCreators = new HashMap<>(); @SuppressWarnings("unchecked") public final T test(ClassLoader loader) { @@ -28,7 +28,7 @@ public class TestIssue13a extends IntegrationTest { synchronized (mCreators) { HashMap> map = mCreators.get(loader); if (map == null) { - map = new HashMap>(); + map = new HashMap<>(); mCreators.put(loader, map); } creator = (Parcelable.Creator) map.get(name); diff --git a/jadx-core/src/test/java/jadx/tests/integration/others/TestIssue13b.java b/jadx-core/src/test/java/jadx/tests/integration/others/TestIssue13b.java index 8df8e149f..ffc110668 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/others/TestIssue13b.java +++ b/jadx-core/src/test/java/jadx/tests/integration/others/TestIssue13b.java @@ -1,8 +1,5 @@ package jadx.tests.integration.others; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -11,6 +8,9 @@ import java.util.concurrent.CountDownLatch; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static jadx.tests.api.utils.JadxMatchers.countString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/others/TestLoopInTry.java b/jadx-core/src/test/java/jadx/tests/integration/others/TestLoopInTry.java index d06559c45..25b753d65 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/others/TestLoopInTry.java +++ b/jadx-core/src/test/java/jadx/tests/integration/others/TestLoopInTry.java @@ -1,10 +1,10 @@ package jadx.tests.integration.others; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/others/TestLoopInTry2.java b/jadx-core/src/test/java/jadx/tests/integration/others/TestLoopInTry2.java index 00f20af41..93c9468fd 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/others/TestLoopInTry2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/others/TestLoopInTry2.java @@ -1,19 +1,18 @@ package jadx.tests.integration.others; +import java.io.EOFException; + +import com.android.dex.Code; +import com.android.dx.io.instructions.DecodedInstruction; +import com.android.dx.io.instructions.ShortArrayCodeInput; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.core.dex.nodes.DexNode; import jadx.core.dex.nodes.MethodNode; import jadx.core.utils.exceptions.DecodeException; import jadx.tests.api.IntegrationTest; -import java.io.EOFException; - -import org.junit.Test; - -import com.android.dex.Code; -import com.android.dx.io.instructions.DecodedInstruction; -import com.android.dx.io.instructions.ShortArrayCodeInput; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitch.java b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitch.java index b0a13f2a4..44de3786a 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitch.java +++ b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitch.java @@ -1,10 +1,10 @@ package jadx.tests.integration.switches; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitch2.java b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitch2.java index 225135ebf..335509c52 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitch2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitch2.java @@ -1,10 +1,10 @@ package jadx.tests.integration.switches; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.countString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitch3.java b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitch3.java index 0e08aa9cf..f57c4bbc5 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitch3.java +++ b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitch3.java @@ -1,10 +1,10 @@ package jadx.tests.integration.switches; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.countString; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchBreak.java b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchBreak.java index f91c716ff..6b3db1059 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchBreak.java +++ b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchBreak.java @@ -1,10 +1,10 @@ package jadx.tests.integration.switches; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertEquals; diff --git a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchContinue.java b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchContinue.java index e6e9649ce..3775dce46 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchContinue.java +++ b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchContinue.java @@ -1,10 +1,10 @@ package jadx.tests.integration.switches; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertEquals; diff --git a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchInLoop.java b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchInLoop.java index c0a53abb4..362e32e8a 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchInLoop.java +++ b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchInLoop.java @@ -1,10 +1,10 @@ package jadx.tests.integration.switches; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchLabels.java b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchLabels.java index 983fb5d59..c7ebc7f44 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchLabels.java +++ b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchLabels.java @@ -1,10 +1,10 @@ package jadx.tests.integration.switches; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.Matchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchNoDefault.java b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchNoDefault.java index 1fdac7878..b6eef55ca 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchNoDefault.java +++ b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchNoDefault.java @@ -1,10 +1,10 @@ package jadx.tests.integration.switches; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.junit.Assert.assertEquals; public class TestSwitchNoDefault extends IntegrationTest { diff --git a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchReturnFromCase.java b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchReturnFromCase.java index f495c1f3a..304757627 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchReturnFromCase.java +++ b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchReturnFromCase.java @@ -1,10 +1,10 @@ package jadx.tests.integration.switches; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertEquals; diff --git a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchSimple.java b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchSimple.java index 5bc21102d..c695b64ac 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchSimple.java +++ b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchSimple.java @@ -1,10 +1,10 @@ package jadx.tests.integration.switches; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertEquals; diff --git a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchWithFallThroughCase.java b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchWithFallThroughCase.java index ccee95e0f..1eb65ad9c 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchWithFallThroughCase.java +++ b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchWithFallThroughCase.java @@ -1,10 +1,10 @@ package jadx.tests.integration.switches; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchWithFallThroughCase2.java b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchWithFallThroughCase2.java index ed7bc6ea2..29cef0222 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchWithFallThroughCase2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchWithFallThroughCase2.java @@ -1,10 +1,10 @@ package jadx.tests.integration.switches; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchWithTryCatch.java b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchWithTryCatch.java index a32e96898..ada4979dd 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchWithTryCatch.java +++ b/jadx-core/src/test/java/jadx/tests/integration/switches/TestSwitchWithTryCatch.java @@ -1,10 +1,10 @@ package jadx.tests.integration.switches; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.countString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/synchronize/TestSynchronized.java b/jadx-core/src/test/java/jadx/tests/integration/synchronize/TestSynchronized.java index 1042ca629..dcf23d424 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/synchronize/TestSynchronized.java +++ b/jadx-core/src/test/java/jadx/tests/integration/synchronize/TestSynchronized.java @@ -1,10 +1,10 @@ package jadx.tests.integration.synchronize; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/synchronize/TestSynchronized2.java b/jadx-core/src/test/java/jadx/tests/integration/synchronize/TestSynchronized2.java index d1754d365..17493af2f 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/synchronize/TestSynchronized2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/synchronize/TestSynchronized2.java @@ -1,10 +1,10 @@ package jadx.tests.integration.synchronize; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/synchronize/TestSynchronized3.java b/jadx-core/src/test/java/jadx/tests/integration/synchronize/TestSynchronized3.java index eb48b0f2e..62be9249f 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/synchronize/TestSynchronized3.java +++ b/jadx-core/src/test/java/jadx/tests/integration/synchronize/TestSynchronized3.java @@ -1,10 +1,10 @@ package jadx.tests.integration.synchronize; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsLines; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestFinally.java b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestFinally.java index c3e0879bf..72cb20947 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestFinally.java +++ b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestFinally.java @@ -1,10 +1,10 @@ package jadx.tests.integration.trycatch; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestFinally2.java b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestFinally2.java index 898067e46..d451a12f7 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestFinally2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestFinally2.java @@ -1,14 +1,14 @@ package jadx.tests.integration.trycatch; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestFinallyExtract.java b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestFinallyExtract.java index d1d02511d..aab5a0f80 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestFinallyExtract.java +++ b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestFinallyExtract.java @@ -1,12 +1,12 @@ package jadx.tests.integration.trycatch; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.io.IOException; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestInlineInCatch.java b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestInlineInCatch.java index 667180b07..00bfd297e 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestInlineInCatch.java +++ b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestInlineInCatch.java @@ -1,12 +1,12 @@ package jadx.tests.integration.trycatch; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.io.File; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestNestedTryCatch.java b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestNestedTryCatch.java index 205a541e1..e9e7a57ed 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestNestedTryCatch.java +++ b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestNestedTryCatch.java @@ -1,10 +1,10 @@ package jadx.tests.integration.trycatch; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch.java b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch.java index 89030d3d7..e8f243120 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch.java +++ b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch.java @@ -1,10 +1,10 @@ package jadx.tests.integration.trycatch; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch2.java b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch2.java index 0d466f935..993b58c43 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch2.java @@ -1,10 +1,10 @@ package jadx.tests.integration.trycatch; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch3.java b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch3.java index c8b1e09ad..d5cd0f40a 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch3.java +++ b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch3.java @@ -1,10 +1,10 @@ package jadx.tests.integration.trycatch; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertEquals; diff --git a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch4.java b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch4.java index c00917109..4958b1b11 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch4.java +++ b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch4.java @@ -1,14 +1,14 @@ package jadx.tests.integration.trycatch; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch5.java b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch5.java index 0b3695589..73e0f9006 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch5.java +++ b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch5.java @@ -1,14 +1,14 @@ package jadx.tests.integration.trycatch; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch6.java b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch6.java index cb5950b61..886db9c5f 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch6.java +++ b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch6.java @@ -1,12 +1,12 @@ package jadx.tests.integration.trycatch; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.io.IOException; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; diff --git a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch7.java b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch7.java index 4f7a52df0..268a68dca 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch7.java +++ b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch7.java @@ -1,10 +1,10 @@ package jadx.tests.integration.trycatch; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch8.java b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch8.java index ac96540a3..dab9aea3c 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch8.java +++ b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatch8.java @@ -1,12 +1,14 @@ package jadx.tests.integration.trycatch; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; -import static org.hamcrest.Matchers.*; +import static org.hamcrest.Matchers.isA; +import static org.hamcrest.Matchers.notNullValue; +import static org.hamcrest.Matchers.nullValue; import static org.junit.Assert.assertThat; public class TestTryCatch8 extends IntegrationTest { diff --git a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchFinally.java b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchFinally.java index 67275e5b2..6f204ced0 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchFinally.java +++ b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchFinally.java @@ -1,10 +1,10 @@ package jadx.tests.integration.trycatch; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; diff --git a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchFinally2.java b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchFinally2.java index 41527defa..c960fb4ae 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchFinally2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchFinally2.java @@ -1,15 +1,15 @@ package jadx.tests.integration.trycatch; -import jadx.core.clsp.NClass; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.io.DataOutputStream; import java.io.IOException; import java.io.OutputStream; import org.junit.Test; +import jadx.core.clsp.NClass; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchFinally3.java b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchFinally3.java index 4644884a3..874ab8f93 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchFinally3.java +++ b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchFinally3.java @@ -1,16 +1,16 @@ package jadx.tests.integration.trycatch; -import jadx.core.dex.nodes.ClassNode; -import jadx.core.dex.visitors.DepthTraversal; -import jadx.core.dex.visitors.IDexTreeVisitor; -import jadx.tests.api.IntegrationTest; - import java.util.List; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jadx.core.dex.nodes.ClassNode; +import jadx.core.dex.visitors.DepthTraversal; +import jadx.core.dex.visitors.IDexTreeVisitor; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchFinally4.java b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchFinally4.java index c344430dc..0d1fd731d 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchFinally4.java +++ b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchFinally4.java @@ -1,8 +1,5 @@ package jadx.tests.integration.trycatch; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -10,6 +7,9 @@ import java.io.OutputStream; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchFinally5.java b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchFinally5.java index 9beef05c8..10547ea6c 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchFinally5.java +++ b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchFinally5.java @@ -1,13 +1,13 @@ package jadx.tests.integration.trycatch; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.util.ArrayList; import java.util.List; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; @@ -24,7 +24,7 @@ public class TestTryCatchFinally5 extends IntegrationTest { if (!d.first()) { return null; } - List list = new ArrayList(); + List list = new ArrayList<>(); do { list.add(b.load(d)); } while (d.toNext()); diff --git a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchFinally6.java b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchFinally6.java index a31ff2f97..2094b6218 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchFinally6.java +++ b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchFinally6.java @@ -1,14 +1,14 @@ package jadx.tests.integration.trycatch; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsLines; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchInIf.java b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchInIf.java index 79918cb10..bbc66c4c3 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchInIf.java +++ b/jadx-core/src/test/java/jadx/tests/integration/trycatch/TestTryCatchInIf.java @@ -1,10 +1,10 @@ package jadx.tests.integration.trycatch; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/types/TestTypeResolver.java b/jadx-core/src/test/java/jadx/tests/integration/types/TestTypeResolver.java index 0a30494d6..dcbb37614 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/types/TestTypeResolver.java +++ b/jadx-core/src/test/java/jadx/tests/integration/types/TestTypeResolver.java @@ -1,10 +1,10 @@ package jadx.tests.integration.types; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/types/TestTypeResolver2.java b/jadx-core/src/test/java/jadx/tests/integration/types/TestTypeResolver2.java index 9bb76c739..897d86206 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/types/TestTypeResolver2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/types/TestTypeResolver2.java @@ -1,12 +1,12 @@ package jadx.tests.integration.types; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.io.IOException; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/types/TestTypeResolver3.java b/jadx-core/src/test/java/jadx/tests/integration/types/TestTypeResolver3.java index ba54a58db..850a60805 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/types/TestTypeResolver3.java +++ b/jadx-core/src/test/java/jadx/tests/integration/types/TestTypeResolver3.java @@ -1,10 +1,10 @@ package jadx.tests.integration.types; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/types/TestTypeResolver4.java b/jadx-core/src/test/java/jadx/tests/integration/types/TestTypeResolver4.java index a4e2c5965..3aac73e44 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/types/TestTypeResolver4.java +++ b/jadx-core/src/test/java/jadx/tests/integration/types/TestTypeResolver4.java @@ -1,12 +1,12 @@ package jadx.tests.integration.types; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.util.Arrays; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/usethis/TestInlineThis.java b/jadx-core/src/test/java/jadx/tests/integration/usethis/TestInlineThis.java index 0850bc882..93f5239f0 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/usethis/TestInlineThis.java +++ b/jadx-core/src/test/java/jadx/tests/integration/usethis/TestInlineThis.java @@ -1,10 +1,10 @@ package jadx.tests.integration.usethis; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/integration/variables/TestVariables2.java b/jadx-core/src/test/java/jadx/tests/integration/variables/TestVariables2.java index 2c8c33028..a507be136 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/variables/TestVariables2.java +++ b/jadx-core/src/test/java/jadx/tests/integration/variables/TestVariables2.java @@ -1,10 +1,10 @@ package jadx.tests.integration.variables; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/variables/TestVariables3.java b/jadx-core/src/test/java/jadx/tests/integration/variables/TestVariables3.java index e0428d64d..513d7e9d6 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/variables/TestVariables3.java +++ b/jadx-core/src/test/java/jadx/tests/integration/variables/TestVariables3.java @@ -1,10 +1,10 @@ package jadx.tests.integration.variables; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/variables/TestVariables4.java b/jadx-core/src/test/java/jadx/tests/integration/variables/TestVariables4.java index e21c40caf..7d298251b 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/variables/TestVariables4.java +++ b/jadx-core/src/test/java/jadx/tests/integration/variables/TestVariables4.java @@ -1,13 +1,13 @@ package jadx.tests.integration.variables; -import jadx.core.dex.nodes.ClassNode; -import jadx.tests.api.IntegrationTest; - import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import org.junit.Test; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.IntegrationTest; + import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/integration/variables/TestVariables5.java b/jadx-core/src/test/java/jadx/tests/integration/variables/TestVariables5.java index fcc446412..3fe200d39 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/variables/TestVariables5.java +++ b/jadx-core/src/test/java/jadx/tests/integration/variables/TestVariables5.java @@ -1,10 +1,10 @@ package jadx.tests.integration.variables; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/integration/variables/TestVariablesDefinitions.java b/jadx-core/src/test/java/jadx/tests/integration/variables/TestVariablesDefinitions.java index 1dbb24706..487c87700 100644 --- a/jadx-core/src/test/java/jadx/tests/integration/variables/TestVariablesDefinitions.java +++ b/jadx-core/src/test/java/jadx/tests/integration/variables/TestVariablesDefinitions.java @@ -1,15 +1,15 @@ package jadx.tests.integration.variables; -import jadx.core.dex.nodes.ClassNode; -import jadx.core.dex.visitors.DepthTraversal; -import jadx.core.dex.visitors.IDexTreeVisitor; -import jadx.tests.api.IntegrationTest; - import java.util.List; import org.junit.Test; import org.slf4j.Logger; +import jadx.core.dex.nodes.ClassNode; +import jadx.core.dex.visitors.DepthTraversal; +import jadx.core.dex.visitors.IDexTreeVisitor; +import jadx.tests.api.IntegrationTest; + import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/smali/TestArithConst.java b/jadx-core/src/test/java/jadx/tests/smali/TestArithConst.java index 87be64cc7..b6a872368 100644 --- a/jadx-core/src/test/java/jadx/tests/smali/TestArithConst.java +++ b/jadx-core/src/test/java/jadx/tests/smali/TestArithConst.java @@ -1,10 +1,10 @@ package jadx.tests.smali; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.SmaliTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/smali/TestConstructor.java b/jadx-core/src/test/java/jadx/tests/smali/TestConstructor.java index dedfea0e8..40d2b3040 100644 --- a/jadx-core/src/test/java/jadx/tests/smali/TestConstructor.java +++ b/jadx-core/src/test/java/jadx/tests/smali/TestConstructor.java @@ -1,10 +1,10 @@ package jadx.tests.smali; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.SmaliTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; diff --git a/jadx-core/src/test/java/jadx/tests/smali/TestInlineVarArg.java b/jadx-core/src/test/java/jadx/tests/smali/TestInlineVarArg.java index 50b934838..dd6d4afcc 100644 --- a/jadx-core/src/test/java/jadx/tests/smali/TestInlineVarArg.java +++ b/jadx-core/src/test/java/jadx/tests/smali/TestInlineVarArg.java @@ -1,10 +1,10 @@ package jadx.tests.smali; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.SmaliTest; -import org.junit.Test; - import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; diff --git a/jadx-core/src/test/java/jadx/tests/smali/TestN21.java b/jadx-core/src/test/java/jadx/tests/smali/TestN21.java index b0ee0de96..02dfd2a71 100644 --- a/jadx-core/src/test/java/jadx/tests/smali/TestN21.java +++ b/jadx-core/src/test/java/jadx/tests/smali/TestN21.java @@ -1,10 +1,10 @@ package jadx.tests.smali; +import org.junit.Test; + import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.SmaliTest; -import org.junit.Test; - public class TestN21 extends SmaliTest { @Test diff --git a/jadx-gui/src/main/java/jadx/gui/JadxGUI.java b/jadx-gui/src/main/java/jadx/gui/JadxGUI.java index 71cce9abe..7c26ab65c 100644 --- a/jadx-gui/src/main/java/jadx/gui/JadxGUI.java +++ b/jadx-gui/src/main/java/jadx/gui/JadxGUI.java @@ -1,16 +1,15 @@ package jadx.gui; +import javax.swing.*; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import jadx.gui.settings.JadxSettings; import jadx.gui.settings.JadxSettingsAdapter; import jadx.gui.ui.MainWindow; import jadx.gui.utils.LogCollector; -import javax.swing.SwingUtilities; -import javax.swing.UIManager; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - public class JadxGUI { private static final Logger LOG = LoggerFactory.getLogger(JadxGUI.class); diff --git a/jadx-gui/src/main/java/jadx/gui/JadxWrapper.java b/jadx-gui/src/main/java/jadx/gui/JadxWrapper.java index fe217117b..a3b66bc30 100644 --- a/jadx-gui/src/main/java/jadx/gui/JadxWrapper.java +++ b/jadx-gui/src/main/java/jadx/gui/JadxWrapper.java @@ -1,5 +1,13 @@ package jadx.gui; +import javax.swing.*; +import java.io.File; +import java.util.List; +import java.util.concurrent.ThreadPoolExecutor; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import jadx.api.IJadxArgs; import jadx.api.JadxDecompiler; import jadx.api.JavaClass; @@ -8,14 +16,6 @@ import jadx.api.ResourceFile; import jadx.core.utils.exceptions.DecodeException; import jadx.core.utils.exceptions.JadxException; -import javax.swing.ProgressMonitor; -import java.io.File; -import java.util.List; -import java.util.concurrent.ThreadPoolExecutor; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - public class JadxWrapper { private static final Logger LOG = LoggerFactory.getLogger(JadxWrapper.class); @@ -55,6 +55,7 @@ public class JadxWrapper { LOG.info("done"); } catch (InterruptedException e) { LOG.error("Save interrupted", e); + Thread.currentThread().interrupt(); } } }; diff --git a/jadx-gui/src/main/java/jadx/gui/jobs/BackgroundJob.java b/jadx-gui/src/main/java/jadx/gui/jobs/BackgroundJob.java index 47ada2d47..f457b87fc 100644 --- a/jadx-gui/src/main/java/jadx/gui/jobs/BackgroundJob.java +++ b/jadx-gui/src/main/java/jadx/gui/jobs/BackgroundJob.java @@ -1,7 +1,5 @@ package jadx.gui.jobs; -import jadx.gui.JadxWrapper; - import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -13,8 +11,10 @@ import java.util.concurrent.TimeUnit; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jadx.gui.JadxWrapper; + public abstract class BackgroundJob { - private static final Logger LOG = LoggerFactory.getLogger(DecompileJob.class); + private static final Logger LOG = LoggerFactory.getLogger(BackgroundJob.class); protected final JadxWrapper wrapper; private final ThreadPoolExecutor executor; diff --git a/jadx-gui/src/main/java/jadx/gui/jobs/BackgroundWorker.java b/jadx-gui/src/main/java/jadx/gui/jobs/BackgroundWorker.java index 6ffded230..ea178d0d7 100644 --- a/jadx-gui/src/main/java/jadx/gui/jobs/BackgroundWorker.java +++ b/jadx-gui/src/main/java/jadx/gui/jobs/BackgroundWorker.java @@ -1,17 +1,16 @@ package jadx.gui.jobs; -import jadx.gui.ui.ProgressPanel; -import jadx.gui.utils.CacheObject; -import jadx.gui.utils.search.TextSearchIndex; -import jadx.gui.utils.Utils; - -import javax.swing.SwingUtilities; -import javax.swing.SwingWorker; +import javax.swing.*; import java.util.concurrent.Future; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jadx.gui.ui.ProgressPanel; +import jadx.gui.utils.CacheObject; +import jadx.gui.utils.Utils; +import jadx.gui.utils.search.TextSearchIndex; + public class BackgroundWorker extends SwingWorker { private static final Logger LOG = LoggerFactory.getLogger(BackgroundWorker.class); diff --git a/jadx-gui/src/main/java/jadx/gui/jobs/IndexJob.java b/jadx-gui/src/main/java/jadx/gui/jobs/IndexJob.java index e869a9adf..2d94456ab 100644 --- a/jadx-gui/src/main/java/jadx/gui/jobs/IndexJob.java +++ b/jadx-gui/src/main/java/jadx/gui/jobs/IndexJob.java @@ -1,5 +1,11 @@ package jadx.gui.jobs; +import java.util.List; + +import org.jetbrains.annotations.NotNull; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import jadx.api.JavaClass; import jadx.core.codegen.CodeWriter; import jadx.gui.JadxWrapper; @@ -11,12 +17,6 @@ import jadx.gui.utils.Utils; import jadx.gui.utils.search.StringRef; import jadx.gui.utils.search.TextSearchIndex; -import java.util.List; - -import org.jetbrains.annotations.NotNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - public class IndexJob extends BackgroundJob { private static final Logger LOG = LoggerFactory.getLogger(IndexJob.class); diff --git a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java index 2dc4b47ca..e89805cb1 100644 --- a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java +++ b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java @@ -1,9 +1,6 @@ package jadx.gui.settings; -import jadx.cli.JadxCLIArgs; - -import java.awt.Font; -import java.awt.Window; +import java.awt.*; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -14,6 +11,8 @@ import java.util.Set; import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea; +import jadx.cli.JadxCLIArgs; + public class JadxSettings extends JadxCLIArgs { private static final String USER_HOME = System.getProperty("user.home"); @@ -21,7 +20,7 @@ public class JadxSettings extends JadxCLIArgs { private static final Font DEFAULT_FONT = new RSyntaxTextArea().getFont(); - static final Set SKIP_FIELDS = new HashSet(Arrays.asList( + static final Set SKIP_FIELDS = new HashSet<>(Arrays.asList( "files", "input", "outputDir", "verbose", "printHelp" )); @@ -29,11 +28,11 @@ public class JadxSettings extends JadxCLIArgs { private String lastSaveFilePath = USER_HOME; private boolean flattenPackage = false; private boolean checkForUpdates = false; - private List recentFiles = new ArrayList(); + private List recentFiles = new ArrayList<>(); private String fontStr = ""; private boolean autoStartJobs = false; - private Map windowPos = new HashMap(); + private Map windowPos = new HashMap<>(); public JadxSettings() { setSkipResources(true); diff --git a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsAdapter.java b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsAdapter.java index e2c34dcba..4ffe06891 100644 --- a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsAdapter.java +++ b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsAdapter.java @@ -1,19 +1,18 @@ package jadx.gui.settings; -import jadx.gui.JadxGUI; - import java.lang.reflect.Modifier; import java.lang.reflect.Type; import java.util.prefs.Preferences; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import com.google.gson.ExclusionStrategy; import com.google.gson.FieldAttributes; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.InstanceCreator; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import jadx.gui.JadxGUI; public class JadxSettingsAdapter { diff --git a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsWindow.java b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsWindow.java index 417cad452..6fb79f09c 100644 --- a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsWindow.java +++ b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsWindow.java @@ -1,31 +1,9 @@ package jadx.gui.settings; -import jadx.gui.ui.MainWindow; -import jadx.gui.utils.NLS; -import say.swing.JFontChooser; - -import javax.swing.BorderFactory; -import javax.swing.Box; -import javax.swing.BoxLayout; -import javax.swing.JButton; -import javax.swing.JCheckBox; -import javax.swing.JComponent; -import javax.swing.JDialog; -import javax.swing.JLabel; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JSpinner; -import javax.swing.SwingConstants; -import javax.swing.WindowConstants; +import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; -import java.awt.BorderLayout; -import java.awt.Container; -import java.awt.Dimension; -import java.awt.Font; -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; -import java.awt.Insets; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; @@ -35,17 +13,21 @@ import java.awt.event.MouseEvent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import say.swing.JFontChooser; + +import jadx.gui.ui.MainWindow; +import jadx.gui.utils.NLS; public class JadxSettingsWindow extends JDialog { private static final long serialVersionUID = -1804570470377354148L; private static final Logger LOG = LoggerFactory.getLogger(JadxSettingsWindow.class); - private final MainWindow mainWindow; - private final JadxSettings settings; - private final String startSettings; + private final transient MainWindow mainWindow; + private final transient JadxSettings settings; + private final transient String startSettings; - private boolean needReload = false; + private transient boolean needReload = false; public JadxSettingsWindow(MainWindow mainWindow, JadxSettings settings) { this.mainWindow = mainWindow; diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/CodeNode.java b/jadx-gui/src/main/java/jadx/gui/treemodel/CodeNode.java index 592d7023b..37881af19 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/CodeNode.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/CodeNode.java @@ -1,17 +1,17 @@ package jadx.gui.treemodel; +import javax.swing.*; + import jadx.api.JavaNode; import jadx.gui.utils.search.StringRef; -import javax.swing.Icon; - public class CodeNode extends JNode { private static final long serialVersionUID = 1658650786734966545L; - private final JNode jNode; - private final JClass jParent; - private final StringRef line; + private final transient JNode jNode; + private final transient JClass jParent; + private final transient StringRef line; private final int lineNum; public CodeNode(JNode jNode, int lineNum, StringRef line) { diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JClass.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JClass.java index b7e532a42..62fd58d9b 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JClass.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JClass.java @@ -1,5 +1,9 @@ package jadx.gui.treemodel; +import javax.swing.*; + +import org.fife.ui.rsyntaxtextarea.SyntaxConstants; + import jadx.api.JavaClass; import jadx.api.JavaField; import jadx.api.JavaMethod; @@ -8,11 +12,6 @@ import jadx.core.dex.info.AccessInfo; import jadx.gui.utils.NLS; import jadx.gui.utils.Utils; -import javax.swing.Icon; -import javax.swing.ImageIcon; - -import org.fife.ui.rsyntaxtextarea.SyntaxConstants; - public class JClass extends JNode { private static final long serialVersionUID = -1239986875244097177L; @@ -24,9 +23,9 @@ public class JClass extends JNode { private static final ImageIcon ICON_ENUM = Utils.openIcon("enum_obj"); private static final ImageIcon ICON_ANNOTATION = Utils.openIcon("annotation_obj"); - private final JavaClass cls; - private final JClass jParent; - private boolean loaded; + private final transient JavaClass cls; + private final transient JClass jParent; + private transient boolean loaded; public JClass(JavaClass cls) { this.cls = cls; @@ -71,6 +70,7 @@ public class JClass extends JNode { } } + @Override public String getContent() { return cls.getCode(); } diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JField.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JField.java index 589901d7d..99eca9974 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JField.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JField.java @@ -1,14 +1,13 @@ package jadx.gui.treemodel; +import javax.swing.*; + import jadx.api.JavaField; import jadx.api.JavaNode; import jadx.core.dex.info.AccessInfo; import jadx.gui.utils.OverlayIcon; import jadx.gui.utils.Utils; -import javax.swing.Icon; -import javax.swing.ImageIcon; - public class JField extends JNode { private static final long serialVersionUID = 1712572192106793359L; @@ -20,8 +19,8 @@ public class JField extends JNode { private static final ImageIcon ICON_TRANSIENT = Utils.openIcon("transient_co"); private static final ImageIcon ICON_VOLATILE = Utils.openIcon("volatile_co"); - private final JavaField field; - private final JClass jParent; + private final transient JavaField field; + private final transient JClass jParent; public JField(JavaField javaField, JClass jClass) { this.field = javaField; diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JMethod.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JMethod.java index ff65d890e..798e3ac16 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JMethod.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JMethod.java @@ -1,5 +1,8 @@ package jadx.gui.treemodel; +import javax.swing.*; +import java.util.Iterator; + import jadx.api.JavaMethod; import jadx.api.JavaNode; import jadx.core.dex.info.AccessInfo; @@ -7,10 +10,6 @@ import jadx.core.dex.instructions.args.ArgType; import jadx.gui.utils.OverlayIcon; import jadx.gui.utils.Utils; -import javax.swing.Icon; -import javax.swing.ImageIcon; -import java.util.Iterator; - public class JMethod extends JNode { private static final long serialVersionUID = 3834526867464663751L; @@ -22,8 +21,8 @@ public class JMethod extends JNode { private static final ImageIcon ICON_CONSTRUCTOR = Utils.openIcon("constr_ovr"); private static final ImageIcon ICON_SYNC = Utils.openIcon("synch_co"); - private final JavaMethod mth; - private final JClass jParent; + private final transient JavaMethod mth; + private final transient JClass jParent; public JMethod(JavaMethod javaMethod, JClass jClass) { this.mth = javaMethod; diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JNode.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JNode.java index 5017fe81f..c8ada4e89 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JNode.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JNode.java @@ -1,14 +1,16 @@ package jadx.gui.treemodel; -import jadx.api.JavaNode; - -import javax.swing.Icon; +import javax.swing.*; import javax.swing.tree.DefaultMutableTreeNode; import org.fife.ui.rsyntaxtextarea.SyntaxConstants; +import jadx.api.JavaNode; + public abstract class JNode extends DefaultMutableTreeNode { + private static final long serialVersionUID = -5154479091781041008L; + public abstract JClass getJParent(); /** diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JPackage.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JPackage.java index 066f101c6..bfb8ce6bc 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JPackage.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JPackage.java @@ -1,16 +1,15 @@ package jadx.gui.treemodel; -import jadx.api.JavaClass; -import jadx.api.JavaPackage; -import jadx.gui.utils.Utils; - -import javax.swing.Icon; -import javax.swing.ImageIcon; +import javax.swing.*; import java.util.ArrayList; import java.util.List; import org.jetbrains.annotations.NotNull; +import jadx.api.JavaClass; +import jadx.api.JavaPackage; +import jadx.gui.utils.Utils; + public class JPackage extends JNode implements Comparable { private static final long serialVersionUID = -4120718634156839804L; @@ -18,12 +17,12 @@ public class JPackage extends JNode implements Comparable { private String name; private final List classes; - private final List innerPackages = new ArrayList(1); + private final List innerPackages = new ArrayList<>(1); public JPackage(JavaPackage pkg) { this.name = pkg.getName(); List javaClasses = pkg.getClasses(); - this.classes = new ArrayList(javaClasses.size()); + this.classes = new ArrayList<>(javaClasses.size()); for (JavaClass javaClass : javaClasses) { classes.add(new JClass(javaClass)); } @@ -32,7 +31,7 @@ public class JPackage extends JNode implements Comparable { public JPackage(String name) { this.name = name; - this.classes = new ArrayList(1); + this.classes = new ArrayList<>(1); } public final void update() { diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JResource.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JResource.java index c85af5f72..16bc12da7 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JResource.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JResource.java @@ -1,5 +1,12 @@ package jadx.gui.treemodel; +import javax.swing.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.fife.ui.rsyntaxtextarea.SyntaxConstants; + import jadx.api.ResourceFile; import jadx.api.ResourceFileContent; import jadx.api.ResourceType; @@ -8,14 +15,6 @@ import jadx.core.xmlgen.ResContainer; import jadx.gui.utils.OverlayIcon; import jadx.gui.utils.Utils; -import javax.swing.Icon; -import javax.swing.ImageIcon; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import org.fife.ui.rsyntaxtextarea.SyntaxConstants; - public class JResource extends JNode implements Comparable { private static final long serialVersionUID = -201018424302612434L; @@ -32,15 +31,15 @@ public class JResource extends JNode implements Comparable { FILE } - private final String name; - private final String shortName; - private final List files = new ArrayList(1); - private final JResType type; - private final ResourceFile resFile; + private final transient String name; + private final transient String shortName; + private final transient List files = new ArrayList<>(1); + private final transient JResType type; + private final transient ResourceFile resFile; - private boolean loaded; - private String content; - private Map lineMapping; + private transient boolean loaded; + private transient String content; + private transient Map lineMapping; public JResource(ResourceFile resFile, String name, JResType type) { this(resFile, name, name, type); @@ -62,13 +61,14 @@ public class JResource extends JNode implements Comparable { } } - protected void loadContent() { + private void loadContent() { getContent(); for (JResource res : files) { res.loadContent(); } } + @Override public String getName() { return name; } @@ -77,6 +77,7 @@ public class JResource extends JNode implements Comparable { return files; } + @Override public String getContent() { if (!loaded && resFile != null && type == JResType.FILE) { loaded = true; @@ -90,18 +91,18 @@ public class JResource extends JNode implements Comparable { return content; } - protected void addSubFiles(ResContainer rc, JResource root, int depth) { + private void addSubFiles(ResContainer rc, JResource root, int depth) { CodeWriter cw = rc.getContent(); if (cw != null) { if (depth == 0) { root.lineMapping = cw.getLineMapping(); root.content = cw.toString(); } else { - String name = rc.getName(); - String[] path = name.split("/"); - String shortName = path.length == 0 ? name : path[path.length - 1]; - ResourceFileContent fileContent = new ResourceFileContent(shortName, ResourceType.XML, cw); - addPath(path, root, new JResource(fileContent, name, shortName, JResType.FILE)); + String resName = rc.getName(); + String[] path = resName.split("/"); + String resShortName = path.length == 0 ? resName : path[path.length - 1]; + ResourceFileContent fileContent = new ResourceFileContent(resShortName, ResourceType.XML, cw); + addPath(path, root, new JResource(fileContent, resName, resShortName, JResType.FILE)); } } List subFiles = rc.getSubFiles(); @@ -117,13 +118,14 @@ public class JResource extends JNode implements Comparable { root.getFiles().add(jResource); return; } + JResource currentRoot = root; int last = path.length - 1; for (int i = 0; i <= last; i++) { String f = path[i]; if (i == last) { - root.getFiles().add(jResource); + currentRoot.getFiles().add(jResource); } else { - root = getResDir(root, f); + currentRoot = getResDir(currentRoot, f); } } } @@ -159,12 +161,14 @@ public class JResource extends JNode implements Comparable { case MANIFEST: case XML: return SyntaxConstants.SYNTAX_STYLE_XML; + + default: + String syntax = getSyntaxByExtension(resFile.getName()); + if (syntax != null) { + return syntax; + } + return super.getSyntaxName(); } - String syntax = getSyntaxByExtension(resFile.getName()); - if (syntax != null) { - return syntax; - } - return super.getSyntaxName(); } private String getSyntaxByExtension(String name) { diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JRoot.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JRoot.java index b796a59e7..57fd8455c 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JRoot.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JRoot.java @@ -1,5 +1,6 @@ package jadx.gui.treemodel; +import javax.swing.*; import java.io.File; import java.util.Collections; import java.util.Enumeration; @@ -11,6 +12,11 @@ import javax.swing.ImageIcon; import jadx.api.ResourceFile; import jadx.gui.JadxWrapper; +import jadx.api.ResourceFile; +import jadx.gui.JadxWrapper; +import jadx.gui.treemodel.JResource.JResType; +import jadx.gui.utils.Utils; + import jadx.gui.treemodel.JResource.JResType; import jadx.gui.utils.Utils; @@ -19,9 +25,9 @@ public class JRoot extends JNode { private static final ImageIcon ROOT_ICON = Utils.openIcon("java_model_obj"); - private final JadxWrapper wrapper; + private final transient JadxWrapper wrapper; - private boolean flatPackages = false; + private transient boolean flatPackages = false; public JRoot(JadxWrapper wrapper) { this.wrapper = wrapper; diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JSources.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JSources.java index c82ddb40f..9c19e6893 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JSources.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JSources.java @@ -1,11 +1,6 @@ package jadx.gui.treemodel; -import jadx.api.JavaPackage; -import jadx.gui.JadxWrapper; -import jadx.gui.utils.Utils; - -import javax.swing.Icon; -import javax.swing.ImageIcon; +import javax.swing.*; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -15,13 +10,17 @@ import java.util.List; import java.util.Map; import java.util.Set; +import jadx.api.JavaPackage; +import jadx.gui.JadxWrapper; +import jadx.gui.utils.Utils; + public class JSources extends JNode { private static final long serialVersionUID = 8962924556824862801L; private static final ImageIcon ROOT_ICON = Utils.openIcon("packagefolder_obj"); - private final JadxWrapper wrapper; - private final boolean flatPackages; + private final transient JadxWrapper wrapper; + private final transient boolean flatPackages; public JSources(JRoot jRoot, JadxWrapper wrapper) { this.flatPackages = jRoot.isFlatPackages(); @@ -52,7 +51,7 @@ public class JSources extends JNode { * @return root packages */ List getHierarchyPackages(List packages) { - Map pkgMap = new HashMap(); + Map pkgMap = new HashMap<>(); for (JavaPackage pkg : packages) { addPackage(pkgMap, new JPackage(pkg)); } @@ -90,7 +89,7 @@ public class JSources extends JNode { innerPackages.addAll(pkg.getInnerPackages()); } // find root packages - List rootPkgs = new ArrayList(); + List rootPkgs = new ArrayList<>(); for (JPackage pkg : pkgMap.values()) { if (!innerPackages.contains(pkg)) { rootPkgs.add(pkg); diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/TextNode.java b/jadx-gui/src/main/java/jadx/gui/treemodel/TextNode.java index 9b32cb231..cfd29336e 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/TextNode.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/TextNode.java @@ -1,6 +1,6 @@ package jadx.gui.treemodel; -import javax.swing.Icon; +import javax.swing.*; public class TextNode extends JNode { diff --git a/jadx-gui/src/main/java/jadx/gui/ui/AboutDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/AboutDialog.java index 8fc67ee8c..c40c1e66b 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/AboutDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/AboutDialog.java @@ -1,22 +1,13 @@ package jadx.gui.ui; +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + import jadx.api.JadxDecompiler; import jadx.gui.utils.NLS; -import javax.swing.BorderFactory; -import javax.swing.Box; -import javax.swing.BoxLayout; -import javax.swing.JButton; -import javax.swing.JDialog; -import javax.swing.JLabel; -import javax.swing.JPanel; -import java.awt.BorderLayout; -import java.awt.Container; -import java.awt.Dimension; -import java.awt.Font; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - class AboutDialog extends JDialog { private static final long serialVersionUID = 5763493590584039096L; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/CodeArea.java b/jadx-gui/src/main/java/jadx/gui/ui/CodeArea.java index 0be5f2759..577308912 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/CodeArea.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/CodeArea.java @@ -1,17 +1,6 @@ package jadx.gui.ui; -import jadx.api.CodePosition; -import jadx.api.JavaNode; -import jadx.gui.settings.JadxSettings; -import jadx.gui.treemodel.JClass; -import jadx.gui.treemodel.JNode; -import jadx.gui.utils.Position; - -import javax.swing.AbstractAction; -import javax.swing.Action; -import javax.swing.JPopupMenu; -import javax.swing.JViewport; -import javax.swing.SwingUtilities; +import javax.swing.*; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; import javax.swing.event.PopupMenuEvent; @@ -19,10 +8,7 @@ import javax.swing.event.PopupMenuListener; import javax.swing.text.BadLocationException; import javax.swing.text.Caret; import javax.swing.text.DefaultCaret; -import java.awt.Color; -import java.awt.Dimension; -import java.awt.Point; -import java.awt.Rectangle; +import java.awt.*; import java.awt.event.ActionEvent; import org.fife.ui.rsyntaxtextarea.LinkGenerator; @@ -34,12 +20,19 @@ import org.fife.ui.rsyntaxtextarea.TokenTypes; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jadx.api.CodePosition; +import jadx.api.JavaNode; +import jadx.gui.settings.JadxSettings; +import jadx.gui.treemodel.JClass; +import jadx.gui.treemodel.JNode; +import jadx.gui.utils.Position; + class CodeArea extends RSyntaxTextArea { private static final Logger LOG = LoggerFactory.getLogger(CodeArea.class); private static final long serialVersionUID = 6312736869579635796L; - public static final Color BACKGROUND = new Color(0xFAFAFA); + public static final Color CODE_BACKGROUND = new Color(0xFAFAFA); public static final Color JUMP_TOKEN_FGD = new Color(0x491BA1); private final CodePanel contentPanel; @@ -50,7 +43,7 @@ class CodeArea extends RSyntaxTextArea { this.node = panel.getNode(); setMarkOccurrences(true); - setBackground(BACKGROUND); + setBackground(CODE_BACKGROUND); setAntiAliasingEnabled(true); setEditable(false); loadSettings(); @@ -78,8 +71,6 @@ class CodeArea extends RSyntaxTextArea { private void addMenuItems(CodeArea codeArea, JClass jCls) { Action findUsage = new FindUsageAction(codeArea, jCls); - // TODO: hotkey works only when popup menu is shown - // findUsage.putValue(Action.ACCELERATOR_KEY, getKeyStroke(KeyEvent.VK_F7, KeyEvent.ALT_DOWN_MASK)); JPopupMenu popup = getPopupMenu(); popup.addSeparator(); @@ -197,10 +188,10 @@ class CodeArea extends RSyntaxTextArea { private class FindUsageAction extends AbstractAction implements PopupMenuListener { private static final long serialVersionUID = 4692546569977976384L; - private final CodeArea codeArea; - private final JClass jCls; + private final transient CodeArea codeArea; + private final transient JClass jCls; - private JavaNode node; + private transient JavaNode node; public FindUsageAction(CodeArea codeArea, JClass jCls) { super("Find Usage"); diff --git a/jadx-gui/src/main/java/jadx/gui/ui/CodePanel.java b/jadx-gui/src/main/java/jadx/gui/ui/CodePanel.java index 0f84ac90e..e6cfad196 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/CodePanel.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/CodePanel.java @@ -1,16 +1,14 @@ package jadx.gui.ui; -import jadx.gui.treemodel.JNode; -import jadx.gui.utils.Utils; - -import javax.swing.AbstractAction; -import javax.swing.JScrollPane; -import javax.swing.KeyStroke; -import java.awt.BorderLayout; +import javax.swing.*; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; +import jadx.gui.treemodel.JNode; +import jadx.gui.utils.Utils; + class CodePanel extends ContentPanel { private static final long serialVersionUID = 5310536092010045565L; @@ -50,10 +48,12 @@ class CodePanel extends ContentPanel { codeArea.loadSettings(); } + @Override TabbedPane getTabbedPane() { return tabbedPane; } + @Override JNode getNode() { return node; } diff --git a/jadx-gui/src/main/java/jadx/gui/ui/CommonSearchDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/CommonSearchDialog.java index 1c5778f79..57ec24e01 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/CommonSearchDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/CommonSearchDialog.java @@ -1,47 +1,19 @@ package jadx.gui.ui; -import jadx.gui.jobs.BackgroundJob; -import jadx.gui.jobs.BackgroundWorker; -import jadx.gui.jobs.DecompileJob; -import jadx.gui.treemodel.JNode; -import jadx.gui.treemodel.TextNode; -import jadx.gui.utils.CacheObject; -import jadx.gui.utils.NLS; -import jadx.gui.utils.Position; -import jadx.gui.utils.search.TextSearchIndex; - -import javax.swing.BorderFactory; -import javax.swing.Box; -import javax.swing.BoxLayout; -import javax.swing.JButton; -import javax.swing.JComponent; -import javax.swing.JDialog; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.JTable; -import javax.swing.KeyStroke; -import javax.swing.ListSelectionModel; -import javax.swing.ScrollPaneConstants; -import javax.swing.SwingConstants; -import javax.swing.SwingWorker; -import javax.swing.UIDefaults; -import javax.swing.UIManager; +import javax.swing.*; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; -import java.awt.Color; -import java.awt.Component; -import java.awt.Cursor; -import java.awt.Dimension; -import java.awt.Font; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; import java.util.ArrayList; import java.util.Enumeration; import java.util.HashMap; @@ -56,6 +28,16 @@ import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jadx.gui.jobs.BackgroundJob; +import jadx.gui.jobs.BackgroundWorker; +import jadx.gui.jobs.DecompileJob; +import jadx.gui.treemodel.JNode; +import jadx.gui.treemodel.TextNode; +import jadx.gui.utils.CacheObject; +import jadx.gui.utils.NLS; +import jadx.gui.utils.Position; +import jadx.gui.utils.search.TextSearchIndex; + public abstract class CommonSearchDialog extends JDialog { private static final Logger LOG = LoggerFactory.getLogger(CommonSearchDialog.class); @@ -63,10 +45,10 @@ public abstract class CommonSearchDialog extends JDialog { public static final int MAX_RESULTS_COUNT = 100; - protected final TabbedPane tabbedPane; - protected final CacheObject cache; - protected final MainWindow mainWindow; - protected final Font codeFont; + protected final transient TabbedPane tabbedPane; + protected final transient CacheObject cache; + protected final transient MainWindow mainWindow; + protected final transient Font codeFont; protected ResultsModel resultsModel; protected ResultsTable resultsTable; @@ -83,6 +65,12 @@ public abstract class CommonSearchDialog extends JDialog { this.codeFont = mainWindow.getSettings().getFont(); } + protected abstract void openInit(); + + protected abstract void loadFinished(); + + protected abstract void loadStart(); + public void loadWindowPos() { mainWindow.getSettings().loadWindowPos(this); } @@ -98,6 +86,20 @@ public abstract class CommonSearchDialog extends JDialog { task.execute(); } + protected void registerInitOnOpen() { + addWindowListener(new WindowAdapter() { + @Override + public void windowOpened(WindowEvent e) { + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + openInit(); + } + }); + } + }); + } + protected void openSelectedItem() { int selectedId = resultsTable.getSelectedRow(); if (selectedId == -1) { @@ -162,7 +164,7 @@ public abstract class CommonSearchDialog extends JDialog { resultsTable.setShowHorizontalLines(false); resultsTable.setDragEnabled(false); resultsTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - resultsTable.setBackground(CodeArea.BACKGROUND); + resultsTable.setBackground(CodeArea.CODE_BACKGROUND); resultsTable.setColumnSelectionAllowed(false); resultsTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); resultsTable.setAutoscrolls(false); @@ -174,6 +176,7 @@ public abstract class CommonSearchDialog extends JDialog { } resultsTable.addMouseListener(new MouseAdapter() { + @Override public void mouseClicked(MouseEvent evt) { if (evt.getClickCount() == 2) { openSelectedItem(); @@ -255,9 +258,9 @@ public abstract class CommonSearchDialog extends JDialog { private static final long serialVersionUID = -7821286846923903208L; private static final String[] COLUMN_NAMES = {"Node", "Code"}; - private final List rows = new ArrayList(); - private final ResultsTableCellRenderer renderer; - private boolean addDescColumn; + private final transient List rows = new ArrayList<>(); + private final transient ResultsTableCellRenderer renderer; + private transient boolean addDescColumn; public ResultsModel(ResultsTableCellRenderer renderer) { this.renderer = renderer; @@ -321,7 +324,7 @@ public abstract class CommonSearchDialog extends JDialog { private final JLabel emptyLabel = new JLabel(); - private Map componentCache = new HashMap(); + private Map componentCache = new HashMap<>(); public ResultsTableCellRenderer() { UIDefaults defaults = UIManager.getDefaults(); @@ -332,7 +335,7 @@ public abstract class CommonSearchDialog extends JDialog { @Override public Component getTableCellRendererComponent(JTable table, Object obj, boolean isSelected, - boolean hasFocus, int row, int column) { + boolean hasFocus, int row, int column) { int id = row << 2 | column; Component comp = componentCache.get(id); if (comp == null) { @@ -352,7 +355,7 @@ public abstract class CommonSearchDialog extends JDialog { comp.setBackground(selectedBackground); comp.setForeground(selectedForeground); } else { - comp.setBackground(CodeArea.BACKGROUND); + comp.setBackground(CodeArea.CODE_BACKGROUND); comp.setForeground(foreground); } } @@ -442,9 +445,4 @@ public abstract class CommonSearchDialog extends JDialog { warnLabel.setVisible(true); } } - - protected abstract void loadFinished(); - - protected abstract void loadStart(); - } diff --git a/jadx-gui/src/main/java/jadx/gui/ui/ContentPanel.java b/jadx-gui/src/main/java/jadx/gui/ui/ContentPanel.java index 885283c09..2822fe265 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/ContentPanel.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/ContentPanel.java @@ -1,11 +1,13 @@ package jadx.gui.ui; +import javax.swing.*; + import jadx.gui.treemodel.JNode; -import javax.swing.JPanel; - abstract class ContentPanel extends JPanel { + private static final long serialVersionUID = 3237031760631677822L; + protected final TabbedPane tabbedPane; protected final JNode node; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/ImagePanel.java b/jadx-gui/src/main/java/jadx/gui/ui/ImagePanel.java index 442d1394c..d5a8c137e 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/ImagePanel.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/ImagePanel.java @@ -1,14 +1,17 @@ package jadx.gui.ui; +import java.awt.*; +import java.awt.image.BufferedImage; + import hu.kazocsaba.imageviewer.ImageViewer; + import jadx.api.ResourceFile; import jadx.gui.treemodel.JResource; -import java.awt.BorderLayout; -import java.awt.image.BufferedImage; - public class ImagePanel extends ContentPanel { + private static final long serialVersionUID = 4071356367073142688L; + ImagePanel(TabbedPane panel, JResource res) { super(panel, res); @@ -23,5 +26,6 @@ public class ImagePanel extends ContentPanel { @Override public void loadSettings() { + // no op } } diff --git a/jadx-gui/src/main/java/jadx/gui/ui/LineNumbers.java b/jadx-gui/src/main/java/jadx/gui/ui/LineNumbers.java index b651ea5ba..b2dd51601 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/LineNumbers.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/LineNumbers.java @@ -1,6 +1,6 @@ package jadx.gui.ui; -import javax.swing.JPanel; +import javax.swing.*; import javax.swing.border.Border; import javax.swing.border.CompoundBorder; import javax.swing.border.EmptyBorder; @@ -12,14 +12,7 @@ import javax.swing.text.BadLocationException; import javax.swing.text.Element; import javax.swing.text.StyleConstants; import javax.swing.text.Utilities; -import java.awt.Color; -import java.awt.Dimension; -import java.awt.Font; -import java.awt.FontMetrics; -import java.awt.Graphics; -import java.awt.Insets; -import java.awt.Point; -import java.awt.Rectangle; +import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.HashMap; @@ -30,9 +23,9 @@ public class LineNumbers extends JPanel implements CaretListener { private static final Border OUTER = new MatteBorder(0, 0, 0, 1, Color.LIGHT_GRAY); - private static final int HEIGHT = Integer.MAX_VALUE - 1000000; - private static final Color FOREGROUND = Color.GRAY; - private static final Color BACKGROUND = CodeArea.BACKGROUND; + private static final int NUM_HEIGHT = Integer.MAX_VALUE - 1000000; + private static final Color NUM_FOREGROUND = Color.GRAY; + private static final Color NUM_BACKGROUND = CodeArea.CODE_BACKGROUND; private static final Color CURRENT_LINE_FOREGROUND = new Color(227, 0, 0); private CodeArea codeArea; @@ -45,8 +38,8 @@ public class LineNumbers extends JPanel implements CaretListener { public LineNumbers(CodeArea component) { this.codeArea = component; setFont(component.getFont()); - setBackground(BACKGROUND); - setForeground(FOREGROUND); + setBackground(NUM_BACKGROUND); + setForeground(NUM_FOREGROUND); setBorderGap(5); setPreferredWidth(); @@ -82,7 +75,7 @@ public class LineNumbers extends JPanel implements CaretListener { Dimension d = getPreferredSize(); if (d != null) { - d.setSize(preferredWidth, HEIGHT); + d.setSize(preferredWidth, NUM_HEIGHT); setPreferredSize(d); setSize(d); } @@ -104,7 +97,7 @@ public class LineNumbers extends JPanel implements CaretListener { if (isCurrentLine(rowStartOffset)) { g.setColor(CURRENT_LINE_FOREGROUND); } else { - g.setColor(FOREGROUND); + g.setColor(NUM_FOREGROUND); } String lineNumber = getTextLineNumber(rowStartOffset); int stringWidth = fontMetrics.stringWidth(lineNumber); @@ -154,7 +147,7 @@ public class LineNumbers extends JPanel implements CaretListener { descent = fontMetrics.getDescent(); } else { if (fonts == null) { - fonts = new HashMap(); + fonts = new HashMap<>(); } Element root = codeArea.getDocument().getDefaultRootElement(); int index = root.getElementIndex(rowStartOffset); diff --git a/jadx-gui/src/main/java/jadx/gui/ui/LogViewer.java b/jadx-gui/src/main/java/jadx/gui/ui/LogViewer.java index 9ae8f801b..09e5f0576 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/LogViewer.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/LogViewer.java @@ -1,32 +1,25 @@ package jadx.gui.ui; -import ch.qos.logback.classic.Level; -import jadx.gui.settings.JadxSettings; -import jadx.gui.utils.LogCollector; -import jadx.gui.utils.NLS; - -import javax.swing.BorderFactory; -import javax.swing.JButton; -import javax.swing.JComboBox; -import javax.swing.JDialog; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.SwingUtilities; -import java.awt.BorderLayout; -import java.awt.Container; +import javax.swing.*; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import ch.qos.logback.classic.Level; import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea; +import jadx.gui.settings.JadxSettings; +import jadx.gui.utils.LogCollector; +import jadx.gui.utils.NLS; + class LogViewer extends JDialog { private static final long serialVersionUID = -2188700277429054641L; private static final Level[] LEVEL_ITEMS = {Level.DEBUG, Level.INFO, Level.WARN, Level.ERROR}; private static Level level = Level.WARN; - private final JadxSettings settings; - private RSyntaxTextArea textPane; + + private final transient JadxSettings settings; + private transient RSyntaxTextArea textPane; public LogViewer(JadxSettings settings) { this.settings = settings; @@ -41,8 +34,7 @@ class LogViewer extends JDialog { JPanel controlPane = new JPanel(); controlPane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); - @SuppressWarnings("unchecked") - final JComboBox cb = new JComboBox(LEVEL_ITEMS); + final JComboBox cb = new JComboBox<>(LEVEL_ITEMS); cb.setSelectedItem(level); cb.addActionListener(new ActionListener() { @Override diff --git a/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java b/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java index 37795808c..f452ff6eb 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java @@ -1,5 +1,36 @@ package jadx.gui.ui; +import javax.swing.*; +import javax.swing.event.MenuEvent; +import javax.swing.event.MenuListener; +import javax.swing.event.TreeExpansionEvent; +import javax.swing.event.TreeWillExpandListener; +import javax.swing.filechooser.FileNameExtensionFilter; +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.DefaultTreeCellRenderer; +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.ExpandVetoException; +import javax.swing.tree.TreeNode; +import javax.swing.tree.TreePath; +import javax.swing.tree.TreeSelectionModel; +import java.awt.*; +import java.awt.dnd.DnDConstants; +import java.awt.dnd.DropTarget; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.io.File; +import java.util.Arrays; +import java.util.EnumSet; +import java.util.Timer; +import java.util.TimerTask; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import jadx.api.ResourceFile; import jadx.gui.JadxWrapper; import jadx.gui.jobs.BackgroundWorker; @@ -21,60 +52,6 @@ import jadx.gui.utils.NLS; import jadx.gui.utils.Position; import jadx.gui.utils.Utils; -import javax.swing.AbstractAction; -import javax.swing.Action; -import javax.swing.Box; -import javax.swing.ImageIcon; -import javax.swing.JCheckBoxMenuItem; -import javax.swing.JFileChooser; -import javax.swing.JFrame; -import javax.swing.JMenu; -import javax.swing.JMenuBar; -import javax.swing.JMenuItem; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.JSplitPane; -import javax.swing.JToggleButton; -import javax.swing.JToolBar; -import javax.swing.JTree; -import javax.swing.ProgressMonitor; -import javax.swing.SwingUtilities; -import javax.swing.WindowConstants; -import javax.swing.event.MenuEvent; -import javax.swing.event.MenuListener; -import javax.swing.event.TreeExpansionEvent; -import javax.swing.event.TreeWillExpandListener; -import javax.swing.filechooser.FileNameExtensionFilter; -import javax.swing.tree.DefaultMutableTreeNode; -import javax.swing.tree.DefaultTreeCellRenderer; -import javax.swing.tree.DefaultTreeModel; -import javax.swing.tree.ExpandVetoException; -import javax.swing.tree.TreeNode; -import javax.swing.tree.TreePath; -import javax.swing.tree.TreeSelectionModel; -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.DisplayMode; -import java.awt.Font; -import java.awt.GraphicsDevice; -import java.awt.GraphicsEnvironment; -import java.awt.dnd.DnDConstants; -import java.awt.dnd.DropTarget; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.KeyAdapter; -import java.awt.event.KeyEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.io.File; -import java.util.Arrays; -import java.util.EnumSet; -import java.util.Timer; -import java.util.TimerTask; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import static javax.swing.KeyStroke.getKeyStroke; @SuppressWarnings("serial") @@ -101,9 +78,9 @@ public class MainWindow extends JFrame { private static final ImageIcon ICON_DEOBF = Utils.openIcon("lock_edit"); private static final ImageIcon ICON_LOG = Utils.openIcon("report"); - private final JadxWrapper wrapper; - private final JadxSettings settings; - private final CacheObject cacheObject; + private final transient JadxWrapper wrapper; + private final transient JadxSettings settings; + private final transient CacheObject cacheObject; private JPanel mainPanel; @@ -119,11 +96,9 @@ public class MainWindow extends JFrame { private JToggleButton deobfToggleBtn; private JCheckBoxMenuItem deobfMenuItem; - private Link updateLink; - private ProgressPanel progressPane; - private BackgroundWorker backgroundWorker; - - private DropTarget dropTarget; + private transient Link updateLink; + private transient ProgressPanel progressPane; + private transient BackgroundWorker backgroundWorker; public MainWindow(JadxSettings settings) { this.wrapper = new JadxWrapper(settings); @@ -179,7 +154,7 @@ public class MainWindow extends JFrame { if (!currentDirectory.isEmpty()) { fileChooser.setCurrentDirectory(new File(currentDirectory)); } - int ret = fileChooser.showDialog(mainPanel, NLS.str("file.open")); + int ret = fileChooser.showDialog(mainPanel, NLS.str("file.open_title")); if (ret == JFileChooser.APPROVE_OPTION) { settings.setLastOpenFilePath(fileChooser.getCurrentDirectory().getPath()); openFile(fileChooser.getSelectedFile()); @@ -346,7 +321,7 @@ public class MainWindow extends JFrame { } private void initMenuAndToolbar() { - Action openAction = new AbstractAction(NLS.str("file.open"), ICON_OPEN) { + Action openAction = new AbstractAction(NLS.str("file.open_action"), ICON_OPEN) { @Override public void actionPerformed(ActionEvent e) { openFile(); @@ -569,8 +544,8 @@ public class MainWindow extends JFrame { splitPane.setResizeWeight(SPLIT_PANE_RESIZE_WEIGHT); mainPanel.add(splitPane); - DefaultMutableTreeNode treeRoot = new DefaultMutableTreeNode(NLS.str("msg.open_file")); - treeModel = new DefaultTreeModel(treeRoot); + DefaultMutableTreeNode treeRootNode = new DefaultMutableTreeNode(NLS.str("msg.open_file")); + treeModel = new DefaultTreeModel(treeRootNode); tree = new JTree(treeModel); tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); tree.addMouseListener(new MouseAdapter() { @@ -625,7 +600,7 @@ public class MainWindow extends JFrame { tabbedPane = new TabbedPane(this); splitPane.setRightComponent(tabbedPane); - dropTarget = new DropTarget(this, DnDConstants.ACTION_COPY, new MainDropTarget(this)); + new DropTarget(this, DnDConstants.ACTION_COPY, new MainDropTarget(this)); setContentPane(mainPanel); setTitle(DEFAULT_TITLE); diff --git a/jadx-gui/src/main/java/jadx/gui/ui/ProgressPanel.java b/jadx-gui/src/main/java/jadx/gui/ui/ProgressPanel.java index 6a01c2bc4..434ae6f73 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/ProgressPanel.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/ProgressPanel.java @@ -1,21 +1,14 @@ package jadx.gui.ui; -import jadx.gui.utils.Utils; - -import javax.swing.BorderFactory; -import javax.swing.BoxLayout; -import javax.swing.Icon; -import javax.swing.JButton; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JProgressBar; -import javax.swing.SwingWorker; -import java.awt.Dimension; +import javax.swing.*; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import jadx.gui.utils.Utils; + public class ProgressPanel extends JPanel implements PropertyChangeListener { private static final long serialVersionUID = -3238438119672015733L; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/SearchBar.java b/jadx-gui/src/main/java/jadx/gui/ui/SearchBar.java index d8ff5fa2c..10ce53c0d 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/SearchBar.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/SearchBar.java @@ -1,17 +1,8 @@ package jadx.gui.ui; -import jadx.gui.utils.TextStandardActions; -import jadx.gui.utils.NLS; -import jadx.gui.utils.Utils; - -import javax.swing.Icon; -import javax.swing.JButton; -import javax.swing.JCheckBox; -import javax.swing.JLabel; -import javax.swing.JTextField; -import javax.swing.JToolBar; +import javax.swing.*; import javax.swing.text.BadLocationException; -import java.awt.Color; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; @@ -24,6 +15,10 @@ import org.fife.ui.rtextarea.SearchResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jadx.gui.utils.NLS; +import jadx.gui.utils.TextStandardActions; +import jadx.gui.utils.Utils; + class SearchBar extends JToolBar { private static final long serialVersionUID = 1836871286618633003L; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/SearchDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/SearchDialog.java index 2751c0e35..4f89b91fe 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/SearchDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/SearchDialog.java @@ -1,45 +1,26 @@ package jadx.gui.ui; -import jadx.gui.utils.NLS; -import jadx.gui.utils.TextStandardActions; -import jadx.gui.utils.search.TextSearchIndex; - -import javax.swing.BorderFactory; -import javax.swing.Box; -import javax.swing.BoxLayout; -import javax.swing.JCheckBox; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JTextField; -import javax.swing.SwingUtilities; -import javax.swing.Timer; -import javax.swing.WindowConstants; +import javax.swing.*; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; -import java.awt.BorderLayout; -import java.awt.Container; -import java.awt.Dimension; -import java.awt.FlowLayout; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; import java.util.EnumSet; import java.util.Set; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import jadx.gui.utils.NLS; +import jadx.gui.utils.TextStandardActions; +import jadx.gui.utils.search.TextSearchIndex; public class SearchDialog extends CommonSearchDialog { private static final long serialVersionUID = -5105405456969134105L; - private static final Logger LOG = LoggerFactory.getLogger(SearchDialog.class); - enum SearchOptions { CLASS, METHOD, @@ -56,20 +37,11 @@ public class SearchDialog extends CommonSearchDialog { this.options = options; initUI(); - addWindowListener(new WindowAdapter() { - @Override - public void windowOpened(WindowEvent e) { - SwingUtilities.invokeLater(new Runnable() { - @Override - public void run() { - openInit(); - } - }); - } - }); + registerInitOnOpen(); loadWindowPos(); } + @Override protected void openInit() { prepare(); String lastSearch = cache.getLastSearch(); diff --git a/jadx-gui/src/main/java/jadx/gui/ui/TabbedPane.java b/jadx-gui/src/main/java/jadx/gui/ui/TabbedPane.java index 677de94bb..b582bf6e5 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/TabbedPane.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/TabbedPane.java @@ -1,27 +1,9 @@ package jadx.gui.ui; -import jadx.api.ResourceFile; -import jadx.api.ResourceType; -import jadx.gui.treemodel.JNode; -import jadx.gui.treemodel.JResource; -import jadx.gui.utils.JumpManager; -import jadx.gui.utils.NLS; -import jadx.gui.utils.Position; -import jadx.gui.utils.Utils; - -import javax.swing.BorderFactory; -import javax.swing.ImageIcon; -import javax.swing.JButton; -import javax.swing.JLabel; -import javax.swing.JMenuItem; -import javax.swing.JPanel; -import javax.swing.JPopupMenu; -import javax.swing.JTabbedPane; -import javax.swing.SwingUtilities; +import javax.swing.*; import javax.swing.plaf.basic.BasicButtonUI; import javax.swing.text.BadLocationException; -import java.awt.Component; -import java.awt.FlowLayout; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; @@ -37,6 +19,15 @@ import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jadx.api.ResourceFile; +import jadx.api.ResourceType; +import jadx.gui.treemodel.JNode; +import jadx.gui.treemodel.JResource; +import jadx.gui.utils.JumpManager; +import jadx.gui.utils.NLS; +import jadx.gui.utils.Position; +import jadx.gui.utils.Utils; + class TabbedPane extends JTabbedPane { private static final Logger LOG = LoggerFactory.getLogger(TabbedPane.class); @@ -45,9 +36,9 @@ class TabbedPane extends JTabbedPane { private static final ImageIcon ICON_CLOSE = Utils.openIcon("cross"); private static final ImageIcon ICON_CLOSE_INACTIVE = Utils.openIcon("cross_grayed"); - private final MainWindow mainWindow; - private final Map openTabs = new LinkedHashMap(); - private JumpManager jumps = new JumpManager(); + private final transient MainWindow mainWindow; + private final transient Map openTabs = new LinkedHashMap<>(); + private transient JumpManager jumps = new JumpManager(); TabbedPane(MainWindow window) { mainWindow = window; @@ -255,7 +246,7 @@ class TabbedPane extends JTabbedPane { closeOther.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - List contentPanels = new ArrayList(openTabs.values()); + List contentPanels = new ArrayList<>(openTabs.values()); for (ContentPanel panel : contentPanels) { if (panel != contentPanel) { closeCodePanel(panel); @@ -298,7 +289,7 @@ class TabbedPane extends JTabbedPane { } public void closeAllTabs() { - List contentPanels = new ArrayList(openTabs.values()); + List contentPanels = new ArrayList<>(openTabs.values()); for (ContentPanel panel : contentPanels) { closeCodePanel(panel); } diff --git a/jadx-gui/src/main/java/jadx/gui/ui/UsageDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/UsageDialog.java index 7a05d25d0..87451567a 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/UsageDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/UsageDialog.java @@ -1,51 +1,28 @@ package jadx.gui.ui; +import javax.swing.*; +import java.awt.*; + import jadx.gui.treemodel.JNode; import jadx.gui.utils.CodeUsageInfo; import jadx.gui.utils.NLS; -import javax.swing.BorderFactory; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.SwingConstants; -import javax.swing.SwingUtilities; -import javax.swing.WindowConstants; -import java.awt.BorderLayout; -import java.awt.Container; -import java.awt.FlowLayout; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - public class UsageDialog extends CommonSearchDialog { private static final long serialVersionUID = -5105405789969134105L; - private static final Logger LOG = LoggerFactory.getLogger(UsageDialog.class); - - private final JNode node; + private final transient JNode node; public UsageDialog(MainWindow mainWindow, JNode node) { super(mainWindow); this.node = node; initUI(); - addWindowListener(new WindowAdapter() { - @Override - public void windowOpened(WindowEvent e) { - SwingUtilities.invokeLater(new Runnable() { - @Override - public void run() { - openInit(); - } - }); - } - }); + registerInitOnOpen(); loadWindowPos(); } + @Override protected void openInit() { prepare(); } @@ -57,6 +34,7 @@ public class UsageDialog extends CommonSearchDialog { @Override protected void loadStart() { + // no op } private synchronized void performSearch() { diff --git a/jadx-gui/src/main/java/jadx/gui/update/JadxUpdate.java b/jadx-gui/src/main/java/jadx/gui/update/JadxUpdate.java index fcd5a9636..f3c1fd2c1 100644 --- a/jadx-gui/src/main/java/jadx/gui/update/JadxUpdate.java +++ b/jadx-gui/src/main/java/jadx/gui/update/JadxUpdate.java @@ -1,8 +1,5 @@ package jadx.gui.update; -import jadx.api.JadxDecompiler; -import jadx.gui.update.data.Release; - import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; @@ -14,11 +11,13 @@ import java.util.Comparator; import java.util.Iterator; import java.util.List; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; +import jadx.api.JadxDecompiler; +import jadx.gui.update.data.Release; public class JadxUpdate { private static final Logger LOG = LoggerFactory.getLogger(JadxUpdate.class); diff --git a/jadx-gui/src/main/java/jadx/gui/utils/CacheObject.java b/jadx-gui/src/main/java/jadx/gui/utils/CacheObject.java index 1fd4955be..e394f513b 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/CacheObject.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/CacheObject.java @@ -1,11 +1,11 @@ package jadx.gui.utils; +import org.jetbrains.annotations.Nullable; + import jadx.gui.jobs.DecompileJob; import jadx.gui.jobs.IndexJob; import jadx.gui.utils.search.TextSearchIndex; -import org.jetbrains.annotations.Nullable; - public class CacheObject { private DecompileJob decompileJob; diff --git a/jadx-gui/src/main/java/jadx/gui/utils/CodeLinesInfo.java b/jadx-gui/src/main/java/jadx/gui/utils/CodeLinesInfo.java index b2c8176af..cb7a3a890 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/CodeLinesInfo.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/CodeLinesInfo.java @@ -1,15 +1,15 @@ package jadx.gui.utils; -import jadx.api.JavaClass; -import jadx.api.JavaMethod; -import jadx.api.JavaNode; - import java.util.Map; import java.util.NavigableMap; import java.util.TreeMap; +import jadx.api.JavaClass; +import jadx.api.JavaMethod; +import jadx.api.JavaNode; + public class CodeLinesInfo { - private NavigableMap map = new TreeMap(); + private NavigableMap map = new TreeMap<>(); public CodeLinesInfo(JavaClass cls) { addClass(cls); diff --git a/jadx-gui/src/main/java/jadx/gui/utils/CodeUsageInfo.java b/jadx-gui/src/main/java/jadx/gui/utils/CodeUsageInfo.java index ee6213ace..bdcd219dd 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/CodeUsageInfo.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/CodeUsageInfo.java @@ -1,5 +1,11 @@ package jadx.gui.utils; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import jadx.api.CodePosition; import jadx.api.JavaClass; import jadx.api.JavaNode; @@ -7,16 +13,10 @@ import jadx.gui.treemodel.CodeNode; import jadx.gui.treemodel.JNode; import jadx.gui.utils.search.StringRef; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - public class CodeUsageInfo { public static class UsageInfo { - private final List usageList = new ArrayList(); + private final List usageList = new ArrayList<>(); public List getUsageList() { return usageList; @@ -29,7 +29,7 @@ public class CodeUsageInfo { this.nodeCache = nodeCache; } - private final Map usageMap = new HashMap(); + private final Map usageMap = new HashMap<>(); public void processClass(JavaClass javaClass, CodeLinesInfo linesInfo, List lines) { Map usage = javaClass.getUsageMap(); diff --git a/jadx-gui/src/main/java/jadx/gui/utils/JNodeCache.java b/jadx-gui/src/main/java/jadx/gui/utils/JNodeCache.java index 1a88411c0..4d46e2b73 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/JNodeCache.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/JNodeCache.java @@ -1,5 +1,8 @@ package jadx.gui.utils; +import java.util.HashMap; +import java.util.Map; + import jadx.api.JavaClass; import jadx.api.JavaField; import jadx.api.JavaMethod; @@ -10,12 +13,9 @@ import jadx.gui.treemodel.JField; import jadx.gui.treemodel.JMethod; import jadx.gui.treemodel.JNode; -import java.util.HashMap; -import java.util.Map; - public class JNodeCache { - private final Map cache = new HashMap(); + private final Map cache = new HashMap<>(); public JNode makeFrom(JavaNode javaNode) { if (javaNode == null) { diff --git a/jadx-gui/src/main/java/jadx/gui/utils/JumpManager.java b/jadx-gui/src/main/java/jadx/gui/utils/JumpManager.java index aa305dae7..645ccdeee 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/JumpManager.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/JumpManager.java @@ -5,7 +5,7 @@ import java.util.List; public class JumpManager { - private List list = new ArrayList(); + private List list = new ArrayList<>(); private int currentPos = 0; public void addPosition(Position pos) { diff --git a/jadx-gui/src/main/java/jadx/gui/utils/Link.java b/jadx-gui/src/main/java/jadx/gui/utils/Link.java index f650c7c0a..5cc2fef26 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/Link.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/Link.java @@ -1,15 +1,9 @@ package jadx.gui.utils; -import javax.swing.JLabel; -import javax.swing.JOptionPane; -import javax.swing.JTextArea; -import java.awt.Color; -import java.awt.Cursor; -import java.awt.Desktop; +import javax.swing.*; +import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; -import java.io.IOException; -import java.net.URISyntaxException; import java.util.Map; import org.slf4j.Logger; @@ -64,9 +58,7 @@ public class Link extends JLabel implements MouseListener { try { desktop.browse(new java.net.URI(url)); return; - } catch (IOException e) { - LOG.debug("Open url error", e); - } catch (URISyntaxException e) { + } catch (Exception e) { LOG.debug("Open url error", e); } } diff --git a/jadx-gui/src/main/java/jadx/gui/utils/LogCollector.java b/jadx-gui/src/main/java/jadx/gui/utils/LogCollector.java index ff94ea1b7..7604b02f1 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/LogCollector.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/LogCollector.java @@ -7,7 +7,6 @@ import ch.qos.logback.classic.PatternLayout; import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.Layout; import ch.qos.logback.core.read.CyclicBufferAppender; - import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.slf4j.LoggerFactory; diff --git a/jadx-gui/src/main/java/jadx/gui/utils/OverlayIcon.java b/jadx-gui/src/main/java/jadx/gui/utils/OverlayIcon.java index bca8acaa3..6c1002995 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/OverlayIcon.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/OverlayIcon.java @@ -1,8 +1,7 @@ package jadx.gui.utils; -import javax.swing.Icon; -import java.awt.Component; -import java.awt.Graphics; +import javax.swing.*; +import java.awt.*; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -10,7 +9,7 @@ import java.util.List; public class OverlayIcon implements Icon { private final Icon icon; - private final List icons = new ArrayList(4); + private final List icons = new ArrayList<>(4); private static final double A = 0.8; private static final double B = 0.2; diff --git a/jadx-gui/src/main/java/jadx/gui/utils/TextStandardActions.java b/jadx-gui/src/main/java/jadx/gui/utils/TextStandardActions.java index 11d843ea6..bfd589503 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/TextStandardActions.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/TextStandardActions.java @@ -1,14 +1,11 @@ package jadx.gui.utils; -import javax.swing.AbstractAction; -import javax.swing.Action; -import javax.swing.JPopupMenu; -import javax.swing.KeyStroke; +import javax.swing.*; import javax.swing.event.UndoableEditEvent; import javax.swing.event.UndoableEditListener; import javax.swing.text.JTextComponent; import javax.swing.undo.UndoManager; -import java.awt.Toolkit; +import java.awt.*; import java.awt.datatransfer.DataFlavor; import java.awt.event.ActionEvent; import java.awt.event.InputEvent; diff --git a/jadx-gui/src/main/java/jadx/gui/utils/Utils.java b/jadx-gui/src/main/java/jadx/gui/utils/Utils.java index 57b784702..ff5e08b65 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/Utils.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/Utils.java @@ -1,16 +1,12 @@ package jadx.gui.utils; +import javax.swing.*; +import java.net.URL; + import jadx.core.dex.info.AccessInfo; import jadx.core.dex.instructions.args.ArgType; import jadx.core.utils.exceptions.JadxRuntimeException; -import javax.swing.Action; -import javax.swing.Icon; -import javax.swing.ImageIcon; -import javax.swing.JComponent; -import javax.swing.KeyStroke; -import java.net.URL; - public class Utils { private static final ImageIcon ICON_STATIC = Utils.openIcon("static_co"); diff --git a/jadx-gui/src/main/java/jadx/gui/utils/search/CodeIndex.java b/jadx-gui/src/main/java/jadx/gui/utils/search/CodeIndex.java index 64dc19cc7..4ed5851d2 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/search/CodeIndex.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/search/CodeIndex.java @@ -4,10 +4,10 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -public class CodeIndex extends SearchIndex { +public class CodeIndex implements SearchIndex { - private final List keys = new ArrayList(); - private final List values = new ArrayList(); + private final List keys = new ArrayList<>(); + private final List values = new ArrayList<>(); @Override public void put(String str, T value) { @@ -34,7 +34,7 @@ public class CodeIndex extends SearchIndex { if (size == 0) { return Collections.emptyList(); } - List results = new ArrayList(); + List results = new ArrayList<>(); for (int i = 0; i < size; i++) { StringRef key = keys.get(i); if (key.indexOf(str) != -1) { diff --git a/jadx-gui/src/main/java/jadx/gui/utils/search/SearchIndex.java b/jadx-gui/src/main/java/jadx/gui/utils/search/SearchIndex.java index fbd6619b3..d381b0a4c 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/search/SearchIndex.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/search/SearchIndex.java @@ -2,19 +2,15 @@ package jadx.gui.utils.search; import java.util.List; -public abstract class SearchIndex { +public interface SearchIndex { - public abstract void put(String str, V value); + void put(String str, V value); - public void put(StringRef str, V value) { - throw new UnsupportedOperationException("StringRef put not supported"); - } + void put(StringRef str, V value); - public boolean isStringRefSupported() { - return false; - } + boolean isStringRefSupported(); - public abstract List getValuesForKeysContaining(String str); + List getValuesForKeysContaining(String str); - public abstract int size(); + int size(); } diff --git a/jadx-gui/src/main/java/jadx/gui/utils/search/SimpleIndex.java b/jadx-gui/src/main/java/jadx/gui/utils/search/SimpleIndex.java index ab27b7d46..4252fe155 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/search/SimpleIndex.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/search/SimpleIndex.java @@ -4,10 +4,10 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -public class SimpleIndex extends SearchIndex { +public class SimpleIndex implements SearchIndex { - private final List keys = new ArrayList(); - private final List values = new ArrayList(); + private final List keys = new ArrayList<>(); + private final List values = new ArrayList<>(); @Override public void put(String str, T value) { @@ -15,13 +15,23 @@ public class SimpleIndex extends SearchIndex { values.add(value); } + @Override + public void put(StringRef str, T value) { + throw new UnsupportedOperationException("StringRef not supported"); + } + + @Override + public boolean isStringRefSupported() { + return false; + } + @Override public List getValuesForKeysContaining(String str) { int size = size(); if (size == 0) { return Collections.emptyList(); } - List results = new ArrayList(); + List results = new ArrayList<>(); for (int i = 0; i < size; i++) { String key = keys.get(i); if (key.contains(str)) { diff --git a/jadx-gui/src/main/java/jadx/gui/utils/search/StringRef.java b/jadx-gui/src/main/java/jadx/gui/utils/search/StringRef.java index 37db49605..bf6f78048 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/search/StringRef.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/search/StringRef.java @@ -114,7 +114,7 @@ public class StringRef implements CharSequence { return Collections.emptyList(); } int pos = -targetLen; - List list = new ArrayList(); + List list = new ArrayList<>(); while (true) { int start = pos + targetLen; pos = indexOf(str, 0, len, splitBy, 0, targetLen, start); diff --git a/jadx-gui/src/main/java/jadx/gui/utils/search/TextSearchIndex.java b/jadx-gui/src/main/java/jadx/gui/utils/search/TextSearchIndex.java index 97200fa42..ca702504c 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/search/TextSearchIndex.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/search/TextSearchIndex.java @@ -1,5 +1,11 @@ package jadx.gui.utils.search; +import java.util.ArrayList; +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import jadx.api.JavaClass; import jadx.api.JavaField; import jadx.api.JavaMethod; @@ -11,12 +17,6 @@ import jadx.gui.ui.CommonSearchDialog; import jadx.gui.utils.CodeLinesInfo; import jadx.gui.utils.JNodeCache; -import java.util.ArrayList; -import java.util.List; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - public class TextSearchIndex { private static final Logger LOG = LoggerFactory.getLogger(TextSearchIndex.class); @@ -28,14 +28,14 @@ public class TextSearchIndex { private SearchIndex fldNamesIndex; private SearchIndex codeIndex; - private List skippedClasses = new ArrayList(); + private List skippedClasses = new ArrayList<>(); public TextSearchIndex(JNodeCache nodeCache) { this.nodeCache = nodeCache; - this.clsNamesIndex = new SimpleIndex(); - this.mthNamesIndex = new SimpleIndex(); - this.fldNamesIndex = new SimpleIndex(); - this.codeIndex = new CodeIndex(); + this.clsNamesIndex = new SimpleIndex<>(); + this.mthNamesIndex = new SimpleIndex<>(); + this.fldNamesIndex = new SimpleIndex<>(); + this.codeIndex = new CodeIndex<>(); } public void indexNames(JavaClass cls) { @@ -93,7 +93,7 @@ public class TextSearchIndex { return items; } } else { - items = new ArrayList(); + items = new ArrayList<>(); } addSkippedClasses(items, text); return items; diff --git a/jadx-gui/src/main/resources/i18n/Messages_en_US.properties b/jadx-gui/src/main/resources/i18n/Messages_en_US.properties index ac2387c0c..00b887a4f 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_en_US.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_en_US.properties @@ -15,6 +15,8 @@ menu.about=About menu.update_label=New version %s available! file.open=Open file +file.open_title=Open file +file.open_action=Open file file.save_all=Save all file.export_gradle=Save as gradle project file.save_all_msg=Select directory for save decompiled sources diff --git a/jadx-gui/src/test/java/jadx/api/Factory.java b/jadx-gui/src/test/java/jadx/api/Factory.java index 9586f0cc0..1fc243399 100644 --- a/jadx-gui/src/test/java/jadx/api/Factory.java +++ b/jadx-gui/src/test/java/jadx/api/Factory.java @@ -1,9 +1,9 @@ package jadx.api; -import jadx.core.dex.nodes.ClassNode; - import java.util.List; +import jadx.core.dex.nodes.ClassNode; + public class Factory { public static JavaPackage newPackage(String name, List classes) { diff --git a/jadx-gui/src/test/java/jadx/gui/treemodel/JSourcesTest.java b/jadx-gui/src/test/java/jadx/gui/treemodel/JSourcesTest.java index a7eb73029..9284b588c 100644 --- a/jadx-gui/src/test/java/jadx/gui/treemodel/JSourcesTest.java +++ b/jadx-gui/src/test/java/jadx/gui/treemodel/JSourcesTest.java @@ -1,5 +1,11 @@ package jadx.gui.treemodel; +import java.util.Arrays; +import java.util.List; + +import org.junit.Before; +import org.junit.Test; + import jadx.api.Factory; import jadx.api.IJadxArgs; import jadx.api.JadxDecompiler; @@ -8,12 +14,6 @@ import jadx.api.JavaPackage; import jadx.core.dex.nodes.ClassNode; import jadx.gui.JadxWrapper; -import java.util.Arrays; -import java.util.List; - -import org.junit.Before; -import org.junit.Test; - import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; diff --git a/jadx-samples/src/main/java/jadx/samples/RunTests.java b/jadx-samples/src/main/java/jadx/samples/RunTests.java index a3fbf56b6..6ab2c55d6 100644 --- a/jadx-samples/src/main/java/jadx/samples/RunTests.java +++ b/jadx-samples/src/main/java/jadx/samples/RunTests.java @@ -96,7 +96,7 @@ public class RunTests { } private static List getClasses(ClassLoader clsLoader, String packageName) { - List clsList = new ArrayList(); + List clsList = new ArrayList<>(); URL resource = clsLoader.getResource(packageName.replace('.', '/')); if (resource != null) { File path = new File(resource.getFile()); diff --git a/jadx-samples/src/main/java/jadx/samples/TestCF3.java b/jadx-samples/src/main/java/jadx/samples/TestCF3.java index 0e446ecd2..5a368ad29 100644 --- a/jadx-samples/src/main/java/jadx/samples/TestCF3.java +++ b/jadx-samples/src/main/java/jadx/samples/TestCF3.java @@ -218,8 +218,8 @@ public class TestCF3 extends AbstractTest { assertTrue(enabled); assertTrue(testNestedLoops( - new ArrayList(Arrays.asList("a1", "a2")), - new ArrayList(Arrays.asList("a1", "b2")))); + new ArrayList<>(Arrays.asList("a1", "a2")), + new ArrayList<>(Arrays.asList("a1", "b2")))); List list1 = Arrays.asList(null, "a", "b"); assertEquals(testReturnInLoop(list1), "a"); diff --git a/jadx-samples/src/main/java/jadx/samples/TestEnum.java b/jadx-samples/src/main/java/jadx/samples/TestEnum.java index 79323d2e1..3358d88b7 100644 --- a/jadx-samples/src/main/java/jadx/samples/TestEnum.java +++ b/jadx-samples/src/main/java/jadx/samples/TestEnum.java @@ -85,7 +85,7 @@ public class TestEnum extends AbstractTest { OBJECT, ARRAY; private static Set primitives = EnumSet.of(INT, FLOAT, LONG, DOUBLE); - public static List references = new ArrayList(); + public static List references = new ArrayList<>(); static { references.add(OBJECT); diff --git a/jadx-samples/src/main/java/jadx/samples/TestGenerics.java b/jadx-samples/src/main/java/jadx/samples/TestGenerics.java index 3b984e586..d3673dce2 100644 --- a/jadx-samples/src/main/java/jadx/samples/TestGenerics.java +++ b/jadx-samples/src/main/java/jadx/samples/TestGenerics.java @@ -35,7 +35,7 @@ public class TestGenerics extends AbstractTest { } } - public static Box integerBox = new Box(); + public static Box integerBox = new Box<>(); public interface Pair { public K getKey(); @@ -63,8 +63,8 @@ public class TestGenerics extends AbstractTest { } } - Pair p1 = new OrderedPair("8", 8); - OrderedPair> p = new OrderedPair>("primes", new Box()); + Pair p1 = new OrderedPair<>("8", 8); + OrderedPair> p = new OrderedPair<>("primes", new Box()); public static class Util { // Generic static method @@ -75,8 +75,8 @@ public class TestGenerics extends AbstractTest { } public static boolean use() { - Pair p1 = new OrderedPair(1, "str1"); - Pair p2 = new OrderedPair(2, "str2"); + Pair p1 = new OrderedPair<>(1, "str1"); + Pair p2 = new OrderedPair<>(2, "str2"); boolean same = Util.compare(p1, p2); return same; } @@ -168,7 +168,7 @@ public class TestGenerics extends AbstractTest { } private List test1(Map map) { - List list = new ArrayList(); + List list = new ArrayList<>(); String str = map.get("key"); list.add(str); return list; diff --git a/jadx-samples/src/main/java/jadx/samples/TestUnicode.java b/jadx-samples/src/main/java/jadx/samples/TestUnicode.java index af3149d56..15e02d8f1 100644 --- a/jadx-samples/src/main/java/jadx/samples/TestUnicode.java +++ b/jadx-samples/src/main/java/jadx/samples/TestUnicode.java @@ -10,7 +10,7 @@ public class TestUnicode extends AbstractTest { * http://www.ltg.ed.ac.uk/~richard/unicode-sample-3-2.html */ public List strings() { - List list = new ArrayList(); + List list = new ArrayList<>(); list.add("! \" # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \\ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~"); list.add("¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ"); list.add("∀ ∁ ∂ ∃ ∄ ∅ ∆ ∇ ∈ ∉ ∊ ∋ ∌ ∍ ∎ ∏ ∐ ∑ − ∓ ∔ ∕ ∖ ∗ ∘ ∙ √ ∛ ∜ ∝ ∞ ∟ ∠ ∡ ∢ ∣ ∤ ∥ ∦ ∧ ∨ ∩ ∪ ∫ ∬ ∭ ∮ ∯ ∰ ∱ ∲ ∳ ∴ ∵ ∶ ∷ ∸ ∹ ∺ ∻ ∼ ∽ ∾ ∿ ≀ ≁ ≂ ≃ ≄ ≅ ≆ ≇ ≈ ≉ ≊ ≋ ≌ ≍ ≎ ≏ ≐ ≑ ≒ ≓ ≔ ≕ ≖ ≗ ≘ ≙ ≚ ≛ ≜ ≝ ≞ ≟ ≠ ≡ ≢ ≣ ≤ ≥ ≦ ≧ ≨ ≩ ≪ ≫ ≬ ≭ ≮ ≯ ≰ ≱ ≲ ≳ ≴ ≵ ≶ ≷ ≸ ≹ ≺ ≻ ≼ ≽ ≾ ≿");