diff --git a/jadx-gui/build.gradle b/jadx-gui/build.gradle index 52cc7873d..03d41b4bd 100644 --- a/jadx-gui/build.gradle +++ b/jadx-gui/build.gradle @@ -46,6 +46,10 @@ dependencies { testImplementation project(":jadx-core").sourceSets.test.output } +test { + exclude '**/tmp/*' +} + application { applicationName = 'jadx-gui' mainClass.set('jadx.gui.JadxGUI') diff --git a/jadx-gui/src/main/java/jadx/gui/plugins/script/ScriptContentPanel.java b/jadx-gui/src/main/java/jadx/gui/plugins/script/ScriptContentPanel.java index 7a20da490..0ed3fe17b 100644 --- a/jadx-gui/src/main/java/jadx/gui/plugins/script/ScriptContentPanel.java +++ b/jadx-gui/src/main/java/jadx/gui/plugins/script/ScriptContentPanel.java @@ -108,6 +108,8 @@ public class ScriptContentPanel extends AbstractCodeContentPanel { check.addActionListener(ev -> checkScript()); JButton format = new JButton(NLS.str("script.format"), Icons.FORMAT); format.addActionListener(ev -> reformatCode()); + JButton scriptLog = new JButton(NLS.str("script.log"), Icons.FORMAT); + scriptLog.addActionListener(ev -> showScriptLog()); JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.LINE_AXIS)); @@ -122,6 +124,7 @@ public class ScriptContentPanel extends AbstractCodeContentPanel { panel.add(Box.createRigidArea(new Dimension(30, 0))); panel.add(resultLabel); panel.add(Box.createHorizontalGlue()); + panel.add(scriptLog); return panel; } @@ -178,9 +181,11 @@ public class ScriptContentPanel extends AbstractCodeContentPanel { errorService.apply(); if (!success) { resultLabel.setText("Compiler issues: " + issues.size()); - getTabbedPane().getMainWindow().showLogViewer(LogOptions.forScript(getNode().getName())); + showScriptLog(); } else if (!lintErrs.isEmpty()) { resultLabel.setText("Lint issues: " + lintErrs.size()); + } else { + resultLabel.setText("OK"); } return success; } catch (Throwable e) { @@ -230,6 +235,10 @@ public class ScriptContentPanel extends AbstractCodeContentPanel { scriptArea.loadSettings(); } + private void showScriptLog() { + getTabbedPane().getMainWindow().showLogViewer(LogOptions.forScript(getNode().getName())); + } + @Override public AbstractCodeArea getCodeArea() { return scriptArea; diff --git a/jadx-gui/src/main/resources/files/script.jadx.kts.tmpl b/jadx-gui/src/main/resources/files/script.jadx.kts.tmpl index bd2c87394..93bf02458 100644 --- a/jadx-gui/src/main/resources/files/script.jadx.kts.tmpl +++ b/jadx-gui/src/main/resources/files/script.jadx.kts.tmpl @@ -1,5 +1,5 @@ /** - For script usage check https://github.com/skylot/jadx/blob/master/jadx-plugins/jadx-script/readme.md +* For script usage check https://github.com/skylot/jadx/blob/master/jadx-plugins/jadx-script/README.md */ val jadx = getJadxInstance() diff --git a/jadx-gui/src/main/resources/i18n/Messages_de_DE.properties b/jadx-gui/src/main/resources/i18n/Messages_de_DE.properties index 25a738055..b0c304b74 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_de_DE.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_de_DE.properties @@ -259,6 +259,7 @@ popup.search_global=Globale Suche "%s" #script.save=Save #script.check=Check #script.format=Reformat +#script.log=Show log exclude_dialog.title=Paketauswahl exclude_dialog.ok=OK 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 54089c50d..e7440d2d7 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_en_US.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_en_US.properties @@ -259,6 +259,7 @@ script.run=Run script.save=Save script.check=Check script.format=Reformat +script.log=Show log exclude_dialog.title=Package Selector exclude_dialog.ok=OK diff --git a/jadx-gui/src/main/resources/i18n/Messages_es_ES.properties b/jadx-gui/src/main/resources/i18n/Messages_es_ES.properties index a717a2d0d..2f9a88c74 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_es_ES.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_es_ES.properties @@ -259,6 +259,7 @@ popup.rename=Nimeta ümber #script.save=Save #script.check=Check #script.format=Reformat +#script.log=Show log #exclude_dialog.title=Package Selector #exclude_dialog.ok=OK diff --git a/jadx-gui/src/main/resources/i18n/Messages_ko_KR.properties b/jadx-gui/src/main/resources/i18n/Messages_ko_KR.properties index f161f311a..a93bf0c52 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_ko_KR.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_ko_KR.properties @@ -259,6 +259,7 @@ popup.search_global="%s" 전역 검색 #script.save=Save #script.check=Check #script.format=Reformat +#script.log=Show log exclude_dialog.title=패키지 선택기 exclude_dialog.ok=확인 diff --git a/jadx-gui/src/main/resources/i18n/Messages_pt_BR.properties b/jadx-gui/src/main/resources/i18n/Messages_pt_BR.properties index cf6d7c206..d8cb21152 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_pt_BR.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_pt_BR.properties @@ -259,6 +259,7 @@ popup.search_global=Busca global "%s" #script.save=Save #script.check=Check #script.format=Reformat +#script.log=Show log exclude_dialog.title=Selecionar pacote exclude_dialog.ok=OK diff --git a/jadx-gui/src/main/resources/i18n/Messages_ru_RU.properties b/jadx-gui/src/main/resources/i18n/Messages_ru_RU.properties index 85be06468..8d5ba241b 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_ru_RU.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_ru_RU.properties @@ -259,6 +259,7 @@ popup.search_global=Глобальный поиск "%s" #script.save=Save #script.check=Check #script.format=Reformat +#script.log=Show log exclude_dialog.title=Выбор пакетов exclude_dialog.ok=OK diff --git a/jadx-gui/src/main/resources/i18n/Messages_zh_CN.properties b/jadx-gui/src/main/resources/i18n/Messages_zh_CN.properties index e28517544..8cf7c35d4 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_zh_CN.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_zh_CN.properties @@ -259,6 +259,7 @@ popup.search_global=全局搜索 “%s” #script.save=Save #script.check=Check #script.format=Reformat +#script.log=Show log exclude_dialog.title=选择要排除的包 exclude_dialog.ok=确定 diff --git a/jadx-gui/src/main/resources/i18n/Messages_zh_TW.properties b/jadx-gui/src/main/resources/i18n/Messages_zh_TW.properties index 94eb1f0c9..1e755c819 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_zh_TW.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_zh_TW.properties @@ -259,6 +259,7 @@ popup.search_global=全域搜尋 "%s" #script.save=Save #script.check=Check #script.format=Reformat +#script.log=Show log exclude_dialog.title=套件選擇 exclude_dialog.ok=OK diff --git a/jadx-plugins/jadx-script/examples/scripts/gui_custom_frida.jadx.kts b/jadx-plugins/jadx-script/examples/scripts/gui_custom_frida.jadx.kts index f61fafd80..5c575567b 100644 --- a/jadx-plugins/jadx-script/examples/scripts/gui_custom_frida.jadx.kts +++ b/jadx-plugins/jadx-script/examples/scripts/gui_custom_frida.jadx.kts @@ -16,7 +16,7 @@ jadx.gui.ifAvailable { "Custom Frida snippet (g)", enabled = ::isActionEnabled, keyBinding = "G", - action = ::runAction + action = ::runAction, ) } diff --git a/jadx-plugins/jadx-script/jadx-script-plugin/src/main/kotlin/jadx/plugins/script/ScriptEval.kt b/jadx-plugins/jadx-script/jadx-script-plugin/src/main/kotlin/jadx/plugins/script/ScriptEval.kt index a95b4f706..01ea2029c 100644 --- a/jadx-plugins/jadx-script/jadx-script-plugin/src/main/kotlin/jadx/plugins/script/ScriptEval.kt +++ b/jadx-plugins/jadx-script/jadx-script-plugin/src/main/kotlin/jadx/plugins/script/ScriptEval.kt @@ -69,7 +69,7 @@ class ScriptEval { Severity.FATAL, Severity.ERROR -> log.error(r.exception) { "Script execution error: $msg" } Severity.WARNING -> log.warn { "Script execution issue: $msg" } Severity.INFO -> log.info { "Script report: $msg" } - Severity.DEBUG -> log.debug { "Script report: $msg" } + Severity.DEBUG -> {} /* ignore, too verbose */ } } when (res) {