diff --git a/build.gradle b/build.gradle index 2b360f5bb..d9b3bcc4a 100644 --- a/build.gradle +++ b/build.gradle @@ -1,10 +1,10 @@ //file:noinspection UnnecessaryQualifiedReference plugins { - id 'com.github.ben-manes.versions' version '0.45.0' + id 'com.github.ben-manes.versions' version '0.46.0' id 'com.diffplug.spotless' version '6.13.0' - id 'org.jetbrains.kotlin.jvm' version '1.7.20' + id 'org.jetbrains.kotlin.jvm' version '1.8.10' } ext.jadxVersion = System.getenv('JADX_VERSION') ?: "dev" @@ -42,7 +42,7 @@ allprojects { testImplementation 'ch.qos.logback:logback-classic:1.3.5' testImplementation 'org.hamcrest:hamcrest-library:2.2' - testImplementation 'org.mockito:mockito-core:4.10.0' + testImplementation 'org.mockito:mockito-core:4.11.0' testImplementation 'org.assertj:assertj-core:3.24.2' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.2' diff --git a/jadx-gui/build.gradle b/jadx-gui/build.gradle index 6ed547c95..8f842861d 100644 --- a/jadx-gui/build.gradle +++ b/jadx-gui/build.gradle @@ -15,12 +15,12 @@ dependencies { // jadx-script autocomplete support implementation(project(":jadx-plugins::jadx-script:jadx-script-ide")) implementation(project(":jadx-plugins::jadx-script:jadx-script-runtime")) - implementation 'org.jetbrains.kotlin:kotlin-scripting-common:1.7.20' - implementation 'com.fifesoft:autocomplete:3.3.0' + implementation 'org.jetbrains.kotlin:kotlin-scripting-common:1.8.10' + implementation 'com.fifesoft:autocomplete:3.3.1' // use KtLint for format and check jadx scripts - implementation 'com.pinterest.ktlint:ktlint-core:0.47.1' - implementation 'com.pinterest.ktlint:ktlint-ruleset-standard:0.47.1' + implementation 'com.pinterest.ktlint:ktlint-core:0.48.2' + implementation 'com.pinterest.ktlint:ktlint-ruleset-standard:0.48.2' implementation 'com.beust:jcommander:1.82' implementation 'ch.qos.logback:logback-classic:1.3.5' diff --git a/jadx-gui/src/main/java/jadx/gui/plugins/script/KtLintUtils.kt b/jadx-gui/src/main/java/jadx/gui/plugins/script/KtLintUtils.kt index e717552dd..efd5e8c41 100644 --- a/jadx-gui/src/main/java/jadx/gui/plugins/script/KtLintUtils.kt +++ b/jadx-gui/src/main/java/jadx/gui/plugins/script/KtLintUtils.kt @@ -17,7 +17,7 @@ object KtLintUtils { val configOverride = lazy { EditorConfigOverride.from( - indentStyleProperty to PropertyType.IndentStyleValue.tab + indentStyleProperty to PropertyType.IndentStyleValue.tab, ) } @@ -32,7 +32,7 @@ object KtLintUtils { if (!corrected) { LOG.warn("Lint error: {}", e) } - } + }, ) return KtLint.format(params) } @@ -49,7 +49,7 @@ object KtLintUtils { if (!corrected) { errors.add(e) } - } + }, ) KtLint.lint(params) return errors diff --git a/jadx-plugins/jadx-script/examples/build.gradle.kts b/jadx-plugins/jadx-script/examples/build.gradle.kts index 1dee84578..702b119d2 100644 --- a/jadx-plugins/jadx-script/examples/build.gradle.kts +++ b/jadx-plugins/jadx-script/examples/build.gradle.kts @@ -4,7 +4,7 @@ dependencies { implementation("org.jetbrains.kotlin:kotlin-stdlib-common") implementation("org.jetbrains.kotlin:kotlin-script-runtime") - implementation("io.github.microutils:kotlin-logging-jvm:3.0.2") + implementation("io.github.microutils:kotlin-logging-jvm:3.0.5") // script context support in IDE is poor, use stubs and manual imports for now // kotlinScriptDef(project(":jadx-plugins:jadx-script:jadx-script-runtime")) diff --git a/jadx-plugins/jadx-script/jadx-script-ide/build.gradle.kts b/jadx-plugins/jadx-script/jadx-script-ide/build.gradle.kts index 9c7b5fc90..0fe08c978 100644 --- a/jadx-plugins/jadx-script/jadx-script-ide/build.gradle.kts +++ b/jadx-plugins/jadx-script/jadx-script-ide/build.gradle.kts @@ -8,5 +8,5 @@ dependencies { implementation(project(":jadx-plugins:jadx-script:jadx-script-plugin")) implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4") - implementation("io.github.microutils:kotlin-logging-jvm:3.0.2") + implementation("io.github.microutils:kotlin-logging-jvm:3.0.5") } diff --git a/jadx-plugins/jadx-script/jadx-script-ide/src/main/kotlin/ScriptCompiler.kt b/jadx-plugins/jadx-script/jadx-script-ide/src/main/kotlin/ScriptCompiler.kt index 59aefa802..16dbcfe06 100644 --- a/jadx-plugins/jadx-script/jadx-script-ide/src/main/kotlin/ScriptCompiler.kt +++ b/jadx-plugins/jadx-script/jadx-script-ide/src/main/kotlin/ScriptCompiler.kt @@ -19,13 +19,13 @@ const val AUTO_COMPLETE_INSERT_STR = "ABCDEF" // defined at KJvmReplCompleter.IN data class ScriptCompletionResult( val completions: List, - val reports: List + val reports: List, ) data class ScriptAnalyzeResult( val issues: List, val renderType: String?, - val reports: List + val reports: List, ) class ScriptCompiler(private val scriptName: String) { @@ -36,7 +36,7 @@ class ScriptCompiler(private val scriptName: String) { val result = complete(code.toScriptSource(scriptName), cursor) return ScriptCompletionResult( completions = result.valueOrNull()?.toList() ?: emptyList(), - reports = result.reports + reports = result.reports, ) } @@ -46,7 +46,7 @@ class ScriptCompiler(private val scriptName: String) { return ScriptAnalyzeResult( issues = analyzerResult?.get(ReplAnalyzerResult.analysisDiagnostics)?.toList() ?: emptyList(), renderType = analyzerResult?.get(ReplAnalyzerResult.renderedResultType), - reports = result.reports + reports = result.reports, ) } diff --git a/jadx-plugins/jadx-script/jadx-script-plugin/build.gradle.kts b/jadx-plugins/jadx-script/jadx-script-plugin/build.gradle.kts index 93114e5be..b36108bd7 100644 --- a/jadx-plugins/jadx-script/jadx-script-plugin/build.gradle.kts +++ b/jadx-plugins/jadx-script/jadx-script-plugin/build.gradle.kts @@ -11,5 +11,5 @@ dependencies { implementation(project(":jadx-plugins:jadx-script:jadx-script-runtime")) - implementation("io.github.microutils:kotlin-logging-jvm:3.0.2") + implementation("io.github.microutils:kotlin-logging-jvm:3.0.5") } diff --git a/jadx-plugins/jadx-script/jadx-script-plugin/src/main/kotlin/jadx/plugins/script/runner/ScriptStates.kt b/jadx-plugins/jadx-script/jadx-script-plugin/src/main/kotlin/jadx/plugins/script/runner/ScriptStates.kt index 8e5d52379..6b03ea539 100644 --- a/jadx-plugins/jadx-script/jadx-script-plugin/src/main/kotlin/jadx/plugins/script/runner/ScriptStates.kt +++ b/jadx-plugins/jadx-script/jadx-script-plugin/src/main/kotlin/jadx/plugins/script/runner/ScriptStates.kt @@ -6,7 +6,7 @@ import java.io.File data class ScriptStateData( val scriptFile: File, val scriptData: JadxScriptData, - var error: Boolean = false + var error: Boolean = false, ) class ScriptStates { diff --git a/jadx-plugins/jadx-script/jadx-script-runtime/build.gradle.kts b/jadx-plugins/jadx-script/jadx-script-runtime/build.gradle.kts index 970611365..1cc05b1b3 100644 --- a/jadx-plugins/jadx-script/jadx-script-runtime/build.gradle.kts +++ b/jadx-plugins/jadx-script/jadx-script-runtime/build.gradle.kts @@ -14,7 +14,7 @@ dependencies { implementation(kotlin("scripting-dependencies-maven")) implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4") - implementation("io.github.microutils:kotlin-logging-jvm:3.0.2") + implementation("io.github.microutils:kotlin-logging-jvm:3.0.5") runtimeOnly(project(":jadx-plugins:jadx-dex-input")) runtimeOnly(project(":jadx-plugins:jadx-smali-input")) diff --git a/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/JadxScriptTemplate.kt b/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/JadxScriptTemplate.kt index 310645b24..82b902b6d 100644 --- a/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/JadxScriptTemplate.kt +++ b/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/JadxScriptTemplate.kt @@ -32,10 +32,10 @@ const val JADX_SCRIPT_LOG_PREFIX = "JadxScript:" @KotlinScript( fileExtension = "jadx.kts", - compilationConfiguration = JadxScriptConfiguration::class + compilationConfiguration = JadxScriptConfiguration::class, ) abstract class JadxScriptTemplate( - private val scriptData: JadxScriptData + private val scriptData: JadxScriptData, ) { val scriptName = scriptData.scriptName val log = KotlinLogging.logger("$JADX_SCRIPT_LOG_PREFIX$scriptName") @@ -56,7 +56,7 @@ object JadxScriptConfiguration : ScriptCompilationConfiguration({ jvm { dependenciesFromCurrentContext( - wholeClasspath = true + wholeClasspath = true, ) } ide { diff --git a/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/Runtime.kt b/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/Runtime.kt index d6ae9e46d..63942720e 100644 --- a/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/Runtime.kt +++ b/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/Runtime.kt @@ -23,7 +23,7 @@ class JadxScriptData( val jadxInstance: JadxDecompiler, val pluginContext: JadxPluginContext, val options: JadxScriptAllOptions, - val scriptFile: File + val scriptFile: File, ) { val afterLoad: MutableList<() -> Unit> = ArrayList() @@ -32,7 +32,7 @@ class JadxScriptData( class JadxScriptInstance( private val scriptData: JadxScriptData, - val log: KLogger + val log: KLogger, ) { private val decompiler = scriptData.jadxInstance diff --git a/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Gui.kt b/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Gui.kt index c0517f331..d0b50bb2c 100644 --- a/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Gui.kt +++ b/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Gui.kt @@ -6,7 +6,7 @@ import jadx.plugins.script.runtime.JadxScriptInstance class Gui( private val jadx: JadxScriptInstance, - private val guiContext: JadxGuiContext? + private val guiContext: JadxGuiContext?, ) { fun isAvailable() = guiContext != null @@ -27,7 +27,7 @@ class Gui( name: String, enabled: (ICodeNodeRef) -> Boolean = { _ -> true }, keyBinding: String? = null, - action: (ICodeNodeRef) -> Unit + action: (ICodeNodeRef) -> Unit, ) { context().addPopupMenuAction(name, enabled, keyBinding, action) } diff --git a/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Options.kt b/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Options.kt index 54950e666..9f5fcff13 100644 --- a/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Options.kt +++ b/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Options.kt @@ -20,7 +20,7 @@ class JadxScriptAllOptions : JadxPluginOptions { class ScriptOption( val name: String, val id: String, - private val getter: () -> T + private val getter: () -> T, ) { private var validate: ((T) -> Boolean)? = null @@ -43,7 +43,7 @@ class ScriptOption( class JadxScriptOptions( private val jadx: JadxScriptInstance, - private val options: JadxScriptAllOptions + private val options: JadxScriptAllOptions, ) { fun register( name: String, @@ -51,7 +51,7 @@ class JadxScriptOptions( values: List, defaultValue: String, type: OptionType = OptionType.STRING, - convert: (String?) -> T + convert: (String?) -> T, ): ScriptOption { val id = "jadx-script.${jadx.scriptName}.$name" options.descriptions.add(JadxOptionDescription(id, desc, defaultValue, values, type)) @@ -62,7 +62,7 @@ class JadxScriptOptions( name: String, desc: String = "", values: List = emptyList(), - defaultValue: String = "" + defaultValue: String = "", ): ScriptOption { return register(name, desc, values, defaultValue) { value -> if (value == null) { diff --git a/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Rename.kt b/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Rename.kt index 28beb89b3..421f670ae 100644 --- a/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Rename.kt +++ b/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Rename.kt @@ -16,37 +16,37 @@ class Rename(private val jadx: JadxScriptInstance) { jadx.addPass(object : ScriptOrderedPreparePass( jadx, "RenameAll", - runBefore = listOf("RenameVisitor") + runBefore = listOf("RenameVisitor"), ) { - override fun init(root: RootNode) { - for (pkgNode in root.packages) { - rename(makeNewName, pkgNode, pkgNode.pkgInfo.name) + override fun init(root: RootNode) { + for (pkgNode in root.packages) { + rename(makeNewName, pkgNode, pkgNode.pkgInfo.name) + } + for (cls in root.classes) { + rename(makeNewName, cls, cls.name) + for (mth in cls.methods) { + if (!mth.isConstructor) { + rename(makeNewName, mth, mth.name) + } } - for (cls in root.classes) { - rename(makeNewName, cls, cls.name) - for (mth in cls.methods) { - if (!mth.isConstructor) { - rename(makeNewName, mth, mth.name) - } - } - for (fld in cls.fields) { - rename(makeNewName, fld, fld.name) - } + for (fld in cls.fields) { + rename(makeNewName, fld, fld.name) } } + } - private inline fun rename( - makeNewName: (String, IDexNode) -> String?, - node: T, - name: String - ) { - if (node is IAttributeNode && node.contains(AFlag.DONT_RENAME)) { - return - } - makeNewName.invoke(name, node)?.let { - node.rename(it) - } + private inline fun rename( + makeNewName: (String, IDexNode) -> String?, + node: T, + name: String, + ) { + if (node is IAttributeNode && node.contains(AFlag.DONT_RENAME)) { + return } - }) + makeNewName.invoke(name, node)?.let { + node.rename(it) + } + } + }) } } diff --git a/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Stages.kt b/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Stages.kt index e9ea821c9..d75e13923 100644 --- a/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Stages.kt +++ b/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Stages.kt @@ -12,14 +12,14 @@ class Stages(private val jadx: JadxScriptInstance) { jadx.addPass(object : ScriptOrderedDecompilePass( jadx, "StageRawInsns", - runAfter = listOf("start") + runAfter = listOf("start"), ) { - override fun visit(mth: MethodNode) { - mth.instructions?.let { - block.invoke(mth, it) - } + override fun visit(mth: MethodNode) { + mth.instructions?.let { + block.invoke(mth, it) } - }) + } + }) } fun mthEarlyBlocks(block: (MethodNode, List) -> Unit) { @@ -28,32 +28,32 @@ class Stages(private val jadx: JadxScriptInstance) { fun mthBlocks( beforePass: String = "RegionMakerVisitor", - block: (MethodNode, List) -> Unit + block: (MethodNode, List) -> Unit, ) { jadx.addPass(object : ScriptOrderedDecompilePass( jadx, "StageMthBlocks", - runBefore = listOf(beforePass) + runBefore = listOf(beforePass), ) { - override fun visit(mth: MethodNode) { - mth.basicBlocks?.let { - block.invoke(mth, it) - } + override fun visit(mth: MethodNode) { + mth.basicBlocks?.let { + block.invoke(mth, it) } - }) + } + }) } fun mthRegions(block: (MethodNode, Region) -> Unit) { jadx.addPass(object : ScriptOrderedDecompilePass( jadx, "StageMthRegions", - runBefore = listOf("PrepareForCodeGen") + runBefore = listOf("PrepareForCodeGen"), ) { - override fun visit(mth: MethodNode) { - mth.region?.let { - block.invoke(mth, it) - } + override fun visit(mth: MethodNode) { + mth.region?.let { + block.invoke(mth, it) } - }) + } + }) } } diff --git a/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Wrappers.kt b/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Wrappers.kt index a1298c63f..6ceb9c3da 100644 --- a/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Wrappers.kt +++ b/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Wrappers.kt @@ -17,14 +17,14 @@ private fun buildSimplePassInfo(jadx: JadxScriptInstance, name: String) = abstract class ScriptPreparePass( private val jadx: JadxScriptInstance, - private val name: String + private val name: String, ) : JadxPreparePass { override fun getInfo() = buildSimplePassInfo(jadx, name) } abstract class ScriptDecompilePass( private val jadx: JadxScriptInstance, - private val name: String + private val name: String, ) : JadxDecompilePass { override fun getInfo() = buildSimplePassInfo(jadx, name) @@ -43,7 +43,7 @@ abstract class ScriptOrderedPass( private val jadx: JadxScriptInstance, private val name: String, private val runAfter: List = listOf(), - private val runBefore: List = listOf() + private val runBefore: List = listOf(), ) : JadxPass { override fun getInfo(): OrderedJadxPassInfo { val scriptName = buildScriptName(jadx, name) @@ -55,14 +55,14 @@ abstract class ScriptOrderedPreparePass( jadx: JadxScriptInstance, name: String, runAfter: List = listOf(), - runBefore: List = listOf() + runBefore: List = listOf(), ) : ScriptOrderedPass(jadx, name, runAfter, runBefore), JadxPreparePass abstract class ScriptOrderedDecompilePass( jadx: JadxScriptInstance, name: String, runAfter: List = listOf(), - runBefore: List = listOf() + runBefore: List = listOf(), ) : ScriptOrderedPass(jadx, name, runAfter, runBefore), JadxDecompilePass { override fun init(root: RootNode) {