From a06231d007ea632c98b708a5362304c4d1dbe9f3 Mon Sep 17 00:00:00 2001 From: Skylot Date: Sat, 5 Aug 2023 19:26:28 +0100 Subject: [PATCH] fix(plugins): do not parse kotlin metadata if all options disabled --- .../jadx/plugins/kotlin/metadata/KotlinMetadataOptions.kt | 8 ++++++++ .../jadx/plugins/kotlin/metadata/KotlinMetadataPlugin.kt | 8 ++++++-- .../kotlin/metadata/pass/KotlinMetadataDecompilePass.kt | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/jadx-plugins/jadx-kotlin-metadata/src/main/kotlin/jadx/plugins/kotlin/metadata/KotlinMetadataOptions.kt b/jadx-plugins/jadx-kotlin-metadata/src/main/kotlin/jadx/plugins/kotlin/metadata/KotlinMetadataOptions.kt index 0302bda0b..3786c5781 100644 --- a/jadx-plugins/jadx-kotlin-metadata/src/main/kotlin/jadx/plugins/kotlin/metadata/KotlinMetadataOptions.kt +++ b/jadx-plugins/jadx-kotlin-metadata/src/main/kotlin/jadx/plugins/kotlin/metadata/KotlinMetadataOptions.kt @@ -43,6 +43,14 @@ class KotlinMetadataOptions : BaseOptionsParser() { ) } + fun isPreparePassNeeded(): Boolean { + return isClassAlias + } + + fun isDecompilePassNeeded(): Boolean { + return isMethodArgs || isFields || isCompanion || isDataClass || isToString || isGetters + } + companion object { const val CLASS_ALIAS_OPT = "$PLUGIN_ID.class-alias" const val METHOD_ARGS_OPT = "$PLUGIN_ID.method-args" diff --git a/jadx-plugins/jadx-kotlin-metadata/src/main/kotlin/jadx/plugins/kotlin/metadata/KotlinMetadataPlugin.kt b/jadx-plugins/jadx-kotlin-metadata/src/main/kotlin/jadx/plugins/kotlin/metadata/KotlinMetadataPlugin.kt index 2fda656dc..d33d6cfb8 100644 --- a/jadx-plugins/jadx-kotlin-metadata/src/main/kotlin/jadx/plugins/kotlin/metadata/KotlinMetadataPlugin.kt +++ b/jadx-plugins/jadx-kotlin-metadata/src/main/kotlin/jadx/plugins/kotlin/metadata/KotlinMetadataPlugin.kt @@ -16,8 +16,12 @@ class KotlinMetadataPlugin : JadxPlugin { override fun init(context: JadxPluginContext) { context.registerOptions(options) - context.addPass(KotlinMetadataPreparePass(options)) - context.addPass(KotlinMetadataDecompilePass(options)) + if (options.isPreparePassNeeded()) { + context.addPass(KotlinMetadataPreparePass(options)) + } + if (options.isDecompilePassNeeded()) { + context.addPass(KotlinMetadataDecompilePass(options)) + } } companion object { diff --git a/jadx-plugins/jadx-kotlin-metadata/src/main/kotlin/jadx/plugins/kotlin/metadata/pass/KotlinMetadataDecompilePass.kt b/jadx-plugins/jadx-kotlin-metadata/src/main/kotlin/jadx/plugins/kotlin/metadata/pass/KotlinMetadataDecompilePass.kt index 4c4a22d1a..fb5292a9e 100644 --- a/jadx-plugins/jadx-kotlin-metadata/src/main/kotlin/jadx/plugins/kotlin/metadata/pass/KotlinMetadataDecompilePass.kt +++ b/jadx-plugins/jadx-kotlin-metadata/src/main/kotlin/jadx/plugins/kotlin/metadata/pass/KotlinMetadataDecompilePass.kt @@ -50,7 +50,7 @@ class KotlinMetadataDecompilePass( val args = wrapper.getMethodArgs() args.forEach { (_, list) -> list.forEach { (rArg, alias) -> - // TODO comment not being added ? + // TODO: comment not being added? RenameReasonAttr.forNode(rArg).append(METADATA_REASON) rArg.name = alias }