From 19cf7c9f14b9f85e5263edc4dd4c85eff5fb391c Mon Sep 17 00:00:00 2001 From: Skylot Date: Mon, 13 May 2019 22:51:55 +0300 Subject: [PATCH] refactor: improve multi line warning print --- jadx-core/src/main/java/jadx/api/ResourcesLoader.java | 2 +- jadx-core/src/main/java/jadx/core/codegen/ClassGen.java | 2 +- jadx-core/src/main/java/jadx/core/codegen/CodeWriter.java | 4 +++- .../java/jadx/core/dex/visitors/regions/CheckRegions.java | 4 ++-- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/jadx-core/src/main/java/jadx/api/ResourcesLoader.java b/jadx-core/src/main/java/jadx/api/ResourcesLoader.java index e6ba7e84b..0eeae35a1 100644 --- a/jadx-core/src/main/java/jadx/api/ResourcesLoader.java +++ b/jadx-core/src/main/java/jadx/api/ResourcesLoader.java @@ -84,7 +84,7 @@ public final class ResourcesLoader { LOG.error("Decode error", e); CodeWriter cw = new CodeWriter(); cw.add("Error decode ").add(rf.getType().toString().toLowerCase()); - cw.startLine(Utils.getStackTrace(e.getCause())); + Utils.appendStackTrace(cw, e.getCause()); return ResContainer.textResource(rf.getName(), cw); } } 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 149581304..9a8b0883b 100644 --- a/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java @@ -263,7 +263,7 @@ public class ClassGen { } catch (Exception e) { code.newLine().add("/*"); code.newLine().addMultiLine(ErrorsCounter.methodError(mth, "Method generation error", e)); - code.newLine().addMultiLine(Utils.getStackTrace(e)); + Utils.appendStackTrace(code, e); code.newLine().add("*/"); code.setIndent(savedIndent); mth.addError("Method generation error: " + e.getMessage(), e); 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 4f5adc847..c37bedb50 100644 --- a/jadx-core/src/main/java/jadx/core/codegen/CodeWriter.java +++ b/jadx-core/src/main/java/jadx/core/codegen/CodeWriter.java @@ -97,10 +97,12 @@ public class CodeWriter { } public CodeWriter addMultiLine(String str) { - buf.append(str); if (str.contains(NL)) { + buf.append(str.replace(NL, NL + indentStr)); line += StringUtils.countMatches(str, NL); offset = 0; + } else { + buf.append(str); } return this; } 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 5ed55f609..45fc2d223 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 @@ -84,8 +84,8 @@ public class CheckRegions extends AbstractVisitor { private static String getBlockInsnStr(MethodNode mth, IBlock block) { CodeWriter code = new CodeWriter(); + code.incIndent(); code.newLine(); - code.setIndent(3); MethodGen mg = MethodGen.getFallbackMethodGen(mth); InsnGen ig = new InsnGen(mg, true); for (InsnNode insn : block.getInstructions()) { @@ -95,7 +95,7 @@ public class CheckRegions extends AbstractVisitor { // ignore } } - code.newLine().addIndent(); + code.newLine(); code.finish(); return code.toString(); }