From 7b4321ecee403c6c73d538ff32c150f8a92e4699 Mon Sep 17 00:00:00 2001 From: Skylot Date: Sat, 2 Jun 2018 14:39:33 +0300 Subject: [PATCH] gui: fix build for java 10 and update dependencies (#291) --- .gitignore | 1 - .travis.yml | 64 ++++++++++-------- build.gradle | 4 +- gradle.properties | 1 + gradle/wrapper/gradle-wrapper.jar | Bin 54333 -> 54413 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- jadx-cli/build.gradle | 2 +- jadx-core/build.gradle | 10 +-- .../jadx/core/dex/visitors/ModVisitor.java | 18 ++--- .../core/dex/visitors/SimplifyVisitor.java | 4 +- .../main/java/jadx/core/utils/DebugUtils.java | 2 + jadx-gui/build.gradle | 11 ++- .../src/main/java/jadx/gui/ui/CodePanel.java | 2 +- .../jadx/gui/utils/TextStandardActions.java | 16 ++--- 14 files changed, 71 insertions(+), 66 deletions(-) create mode 100644 gradle.properties diff --git a/.gitignore b/.gitignore index ead4e1c4..902e0fea 100644 --- a/.gitignore +++ b/.gitignore @@ -18,7 +18,6 @@ build/ classes/ idea/ .gradle/ -gradle.properties jadx-output/ *-tmp/ diff --git a/.travis.yml b/.travis.yml index 3a060eb0..7087a01d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,39 +1,49 @@ language: java -jdk: - - oraclejdk8 +sudo: false +dist: trusty + +before_install: + - wget https://github.com/sormuras/bach/raw/master/install-jdk.sh + - chmod +x gradlew env: - - TERM=dumb GRADLE_OPTS="-Dorg.gradle.daemon=false" + global: + - TERM=dumb -before_install: - - chmod +x gradlew +matrix: + include: + - env: JDK=oracle-8 + jdk: oraclejdk8 + - env: JDK=oracle-10 + install: . ./install-jdk.sh -F 10 -L BCL script: - - sed -i " 1 s/.*/&-b$TRAVIS_BUILD_NUMBER-$(git rev-parse --short HEAD)/" version - - cat version - - sed -i "s/BUILD_VERSION/$(head -c -1 version)/g" bintray.json - - ./gradlew clean build + - java -version + - sed -i " 1 s/.*/&-b$TRAVIS_BUILD_NUMBER-$(git rev-parse --short HEAD)/" version + - cat version + - sed -i "s/BUILD_VERSION/$(head -c -1 version)/g" bintray.json + - ./gradlew clean build after_success: - - ./gradlew clean build jacocoTestReport - - bash <(curl -s https://codecov.io/bash) || echo "Codecov did not collect coverage reports" - - ./gradlew clean sonarqube -Dsonar.host.url=$SONAR_HOST -Dsonar.organization=$SONAR_ORG -Dsonar.login=$SONAR_TOKEN - - ./gradlew clean dist + - test $JDK = "oracle-8" && ./gradlew clean build jacocoTestReport && bash <(curl -s https://codecov.io/bash) || echo "Codecov did not collect coverage reports" + - test $JDK = "oracle-8" && ./gradlew clean sonarqube -Dsonar.host.url=$SONAR_HOST -Dsonar.organization=$SONAR_ORG -Dsonar.login=$SONAR_TOKEN || echo "Skip sonar build and upload" -deploy: - provider: bintray - edge: - branch: v1.8.47 - file: bintray.json - user: skylot - key: $BINTRAY_KEY - skip_cleanup: true - on: - branch: master - tags: false +before_deploy: + - ./gradlew clean dist -sudo: false +deploy: + provider: bintray + edge: + branch: v1.8.47 + file: bintray.json + user: skylot + key: $BINTRAY_KEY + skip_cleanup: true + on: + branch: master + tags: false + condition: $JDK = oracle-8 notifications: - email: - - skylot@gmail.com + email: + - skylot@gmail.com diff --git a/build.gradle b/build.gradle index 7e43a940..531f3d30 100644 --- a/build.gradle +++ b/build.gradle @@ -41,7 +41,7 @@ allprojects { testCompile 'ch.qos.logback:logback-classic:1.2.3' testCompile 'junit:junit:4.12' testCompile 'org.hamcrest:hamcrest-library:1.3' - testCompile 'org.mockito:mockito-core:2.15.0' + testCompile 'org.mockito:mockito-core:2.18.3' testCompile 'org.spockframework:spock-core:1.1-groovy-2.4' testCompile 'cglib:cglib-nodep:3.2.6' } @@ -53,7 +53,7 @@ allprojects { } jacoco { - toolVersion = "0.8.0" + toolVersion = "0.8.1" } jacocoTestReport { reports { diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 00000000..6b1823d8 --- /dev/null +++ b/gradle.properties @@ -0,0 +1 @@ +org.gradle.daemon=false diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index c44b679acd3f794ddbb3aa5e919244914911014a..91ca28c8b802289c3a438766657a5e98f20eff03 100644 GIT binary patch delta 7643 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 568c50bf..16d28051 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.5.1-bin.zip diff --git a/jadx-cli/build.gradle b/jadx-cli/build.gradle index e77c09f9..c1bb1679 100644 --- a/jadx-cli/build.gradle +++ b/jadx-cli/build.gradle @@ -5,7 +5,7 @@ applicationName = 'jadx' dependencies { compile(project(':jadx-core')) - compile 'com.beust:jcommander:1.72' + compile 'com.beust:jcommander:1.74' compile 'ch.qos.logback:logback-classic:1.2.3' } diff --git a/jadx-core/build.gradle b/jadx-core/build.gradle index 54c5dc95..46471a64 100644 --- a/jadx-core/build.gradle +++ b/jadx-core/build.gradle @@ -5,12 +5,12 @@ dependencies { compile files('lib/dx-1.14.jar') compile 'commons-io:commons-io:2.6' - compile 'org.ow2.asm:asm:6.0' - compile 'org.jetbrains:annotations:15.0' - compile 'uk.com.robust-it:cloning:1.9.9' + compile 'org.ow2.asm:asm:6.2' + compile 'org.jetbrains:annotations:16.0.2' + compile 'uk.com.robust-it:cloning:1.9.10' - testCompile 'org.smali:smali:2.2.2' - testCompile 'org.smali:baksmali:2.2.2' + testCompile 'org.smali:smali:2.2.3' + testCompile 'org.smali:baksmali:2.2.3' testCompile 'org.apache.commons:commons-lang3:3.7' } 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 f1530ee5..1b4e8050 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 @@ -249,14 +249,9 @@ public class ModVisitor extends AbstractVisitor { || !parentClass.getInnerClasses().contains(classNode)) { return; } - if (!classNode.getAccessFlags().isStatic() - && (callMth.getArgsCount() == 0 - || !callMth.getArgumentsTypes().get(0).equals(parentClass.getClassInfo().getType()))) { - return; - } // TODO: calculate this constructor and other constructor usage Map argsMap = getArgsToFieldsMapping(callMthNode, co); - if (argsMap.isEmpty()) { + if (argsMap.isEmpty() && !callMthNode.getArguments(true).isEmpty()) { return; } @@ -285,9 +280,14 @@ public class ModVisitor extends AbstractVisitor { private static Map getArgsToFieldsMapping(MethodNode callMthNode, ConstructorInsn co) { Map map = new LinkedHashMap<>(); - ClassNode parentClass = callMthNode.getParentClass(); + MethodInfo callMth = callMthNode.getMethodInfo(); + ClassNode cls = callMthNode.getParentClass(); + ClassNode parentClass = cls.getParentClass(); List argList = callMthNode.getArguments(false); - int startArg = parentClass.getAccessFlags().isStatic() ? 0 : 1; + int startArg = 0; + if (callMth.getArgsCount() != 0 && callMth.getArgumentsTypes().get(0).equals(parentClass.getClassInfo().getType())) { + startArg = 1; + } int argsCount = argList.size(); for (int i = startArg; i < argsCount; i++) { RegisterArg arg = argList.get(i); @@ -298,7 +298,7 @@ public class ModVisitor extends AbstractVisitor { FieldNode fieldNode = null; if (useInsn.getType() == InsnType.IPUT) { FieldInfo field = (FieldInfo) ((IndexInsnNode) useInsn).getIndex(); - fieldNode = parentClass.searchField(field); + fieldNode = cls.searchField(field); if (fieldNode == null || !fieldNode.getAccessFlags().isSynthetic()) { return Collections.emptyMap(); } 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 d8a9ae95..60c68e9a 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 @@ -208,8 +208,8 @@ public class SimplifyVisitor extends AbstractVisitor { } // end of if constructor is for StringBuilder } // end of if we found a constructor early in the chain - } catch (Throwable e) { - LOG.debug("Can't convert string concatenation: {} insn: {}", mth, insn, e); + } catch (Exception e) { + LOG.warn("Can't convert string concatenation: {} insn: {}", mth, insn, e); } } return null; 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 40176659..c930e96d 100644 --- a/jadx-core/src/main/java/jadx/core/utils/DebugUtils.java +++ b/jadx-core/src/main/java/jadx/core/utils/DebugUtils.java @@ -6,6 +6,7 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Set; +import org.jetbrains.annotations.TestOnly; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -32,6 +33,7 @@ import jadx.core.utils.exceptions.CodegenException; import jadx.core.utils.exceptions.JadxRuntimeException; @Deprecated +@TestOnly public class DebugUtils { private static final Logger LOG = LoggerFactory.getLogger(DebugUtils.class); diff --git a/jadx-gui/build.gradle b/jadx-gui/build.gradle index 6c8158f1..caa5123d 100644 --- a/jadx-gui/build.gradle +++ b/jadx-gui/build.gradle @@ -1,6 +1,6 @@ plugins { - id 'edu.sc.seis.launch4j' version '2.4.3' - id 'com.github.johnrengelman.shadow' version '2.0.2' + id 'edu.sc.seis.launch4j' version '2.4.4' + id 'com.github.johnrengelman.shadow' version '2.0.4' } apply plugin: 'application' @@ -11,14 +11,14 @@ dependencies { compile(project(":jadx-core")) compile(project(":jadx-cli")) compile 'com.fifesoft:rsyntaxtextarea:2.6.1' - compile 'com.google.code.gson:gson:2.8.2' + compile 'com.google.code.gson:gson:2.8.5' compile files('libs/jfontchooser-1.0.5.jar') compile 'hu.kazocsaba:image-viewer:1.2.3' compile 'org.apache.commons:commons-lang3:3.7' - compile 'io.reactivex.rxjava2:rxjava:2.1.13' - compile "com.github.akarnokd:rxjava2-swing:0.2.12" + compile 'io.reactivex.rxjava2:rxjava:2.1.14' + compile "com.github.akarnokd:rxjava2-swing:0.2.13" } applicationDistribution.with { @@ -63,7 +63,6 @@ launch4j { initialHeapPercent = 5 maxHeapSize = 4096 maxHeapPercent = 70 - } test { 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 e6cfad19..ac754533 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/CodePanel.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/CodePanel.java @@ -30,7 +30,7 @@ class CodePanel extends ContentPanel { add(searchBar, BorderLayout.NORTH); add(scrollPane); - KeyStroke key = KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_MASK); + KeyStroke key = KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_DOWN_MASK); Utils.addKeyBinding(codeArea, key, "SearchAction", new SearchAction()); } 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 bfd58950..9b5e254b 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/TextStandardActions.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/TextStandardActions.java @@ -1,8 +1,6 @@ package jadx.gui.utils; 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.*; @@ -102,26 +100,22 @@ public class TextStandardActions { } private void addKeyActions() { - KeyStroke undoKey = KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_MASK); + KeyStroke undoKey = KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_DOWN_MASK); textComponent.getInputMap().put(undoKey, undoAction); - KeyStroke redoKey = KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.CTRL_MASK); + KeyStroke redoKey = KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.CTRL_DOWN_MASK); textComponent.getInputMap().put(redoKey, redoAction); } private void registerListeners() { textComponent.addMouseListener(new MouseAdapter() { + @Override public void mouseReleased(MouseEvent e) { - if (e.getModifiers() == InputEvent.BUTTON3_MASK - && e.getSource() == textComponent) { + if (e.getButton() == 3 && e.getSource() == textComponent) { process(e); } } }); - textComponent.getDocument().addUndoableEditListener(new UndoableEditListener() { - public void undoableEditHappened(UndoableEditEvent event) { - undoManager.addEdit(event.getEdit()); - } - }); + textComponent.getDocument().addUndoableEditListener(event -> undoManager.addEdit(event.getEdit())); } private void process(MouseEvent e) { -- GitLab