From c0c4900ad165b856c2eda41be565b6f72b530617 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Pluta?= Date: Fri, 5 Apr 2019 09:59:13 +0200 Subject: [PATCH] 9: Fix checking package in JavaPlugin --- .../bartek/esa/core/archetype/BasePlugin.java | 4 ++ .../bartek/esa/core/archetype/JavaPlugin.java | 10 ++++- .../formatter/formatter/ColorFormatter.java | 40 ++++++++++++------- .../formatter/formatter/SimpleFormatter.java | 13 +++--- src/main/resources/description.properties | 5 ++- 5 files changed, 51 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/bartek/esa/core/archetype/BasePlugin.java b/src/main/java/com/bartek/esa/core/archetype/BasePlugin.java index 5b0db77..fbcd814 100644 --- a/src/main/java/com/bartek/esa/core/archetype/BasePlugin.java +++ b/src/main/java/com/bartek/esa/core/archetype/BasePlugin.java @@ -45,6 +45,10 @@ public abstract class BasePlugin implements Plugin { issues.add(issue); } + protected void addIssue(Issue issue) { + issues.add(issue); + } + protected File getOriginalFile() { return file; } diff --git a/src/main/java/com/bartek/esa/core/archetype/JavaPlugin.java b/src/main/java/com/bartek/esa/core/archetype/JavaPlugin.java index d617c13..b438f82 100644 --- a/src/main/java/com/bartek/esa/core/archetype/JavaPlugin.java +++ b/src/main/java/com/bartek/esa/core/archetype/JavaPlugin.java @@ -1,6 +1,7 @@ package com.bartek.esa.core.archetype; import com.bartek.esa.core.model.enumeration.Severity; +import com.bartek.esa.core.model.object.Issue; import com.bartek.esa.core.xml.XmlHelper; import com.bartek.esa.error.EsaException; import com.bartek.esa.file.matcher.GlobMatcher; @@ -43,7 +44,14 @@ public abstract class JavaPlugin extends BasePlugin { Node packageValue = root.getAttributes().getNamedItem("package"); if(packageValue == null) { - addIssue(Severity.ERROR, ".PACKAGE_LACK", null, null); + Issue issue = Issue.builder() + .issuer(JavaPlugin.class) + .descriptionCode(".NO_PACKAGE") + .severity(Severity.ERROR) + .build(); + + addIssue(issue); + return false; } diff --git a/src/main/java/com/bartek/esa/formatter/formatter/ColorFormatter.java b/src/main/java/com/bartek/esa/formatter/formatter/ColorFormatter.java index d9b2b7d..34ee131 100644 --- a/src/main/java/com/bartek/esa/formatter/formatter/ColorFormatter.java +++ b/src/main/java/com/bartek/esa/formatter/formatter/ColorFormatter.java @@ -7,6 +7,7 @@ import org.fusesource.jansi.Ansi; import org.fusesource.jansi.AnsiConsole; import javax.inject.Inject; +import java.util.Arrays; import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -26,7 +27,7 @@ public class ColorFormatter implements Formatter { @Override public void format(Set issues) { AnsiConsole.systemInstall(); - if(issues.isEmpty()) { + if (issues.isEmpty()) { Ansi noIssuesFound = ansi().fg(GREEN).a("No issues found.").reset(); System.out.println(noIssuesFound); return; @@ -52,29 +53,36 @@ public class ColorFormatter implements Formatter { private Ansi appendDescription(Issue issue, Ansi ansi) { String description = descriptionProvider.getDescriptionForIssue(issue); + String[] lines = description.split("\n"); + String firstLine = lines[0]; + String theRestOfLines = lines.length > 1 ? "\n" + String.join("\n", Arrays.copyOfRange(lines, 1, lines.length)) : ""; return ansi .fg(getColorForSeverity(issue)) .a(issue.getSeverity().name()) .reset() - .a(": ").a(description) + .a(": ").a(firstLine) + .fgBrightBlack().a(theRestOfLines) + .reset() .a("\n"); } private Ansi appendFile(Issue issue, Ansi ansi) { - return ansi - .fg(GREEN) - .a("File: ") - .reset() - .a(issue.getFile().getAbsolutePath()) - .a("\n"); + return Optional.ofNullable(issue.getFile()) + .map(file -> ansi + .fg(BLUE) + .a("File: ") + .reset() + .a(file.getAbsolutePath()) + .a("\n")) + .orElse(ansi); } private Ansi appendLine(Issue issue, Ansi ansi) { Optional.ofNullable(issue.getLine()) .ifPresent(line -> { ansi - .fg(BLUE) + .fg(CYAN) .a("Line"); Optional.ofNullable(issue.getLineNumber()).ifPresentOrElse( number -> ansi.a(" ").a(number).a(": "), @@ -86,11 +94,15 @@ public class ColorFormatter implements Formatter { } private Ansi.Color getColorForSeverity(Issue issue) { - switch(issue.getSeverity()) { - case INFO: return GREEN; - case WARNING: return YELLOW; - case ERROR: return MAGENTA; - case VULNERABILITY: return RED; + switch (issue.getSeverity()) { + case INFO: + return GREEN; + case WARNING: + return YELLOW; + case ERROR: + return MAGENTA; + case VULNERABILITY: + return RED; } return RED; diff --git a/src/main/java/com/bartek/esa/formatter/formatter/SimpleFormatter.java b/src/main/java/com/bartek/esa/formatter/formatter/SimpleFormatter.java index cba9e73..aae9181 100644 --- a/src/main/java/com/bartek/esa/formatter/formatter/SimpleFormatter.java +++ b/src/main/java/com/bartek/esa/formatter/formatter/SimpleFormatter.java @@ -19,7 +19,7 @@ public class SimpleFormatter implements Formatter { @Override public void format(Set issues) { - if(issues.isEmpty()) { + if (issues.isEmpty()) { System.out.println("No issues found."); return; } @@ -50,10 +50,13 @@ public class SimpleFormatter implements Formatter { } private void appendFile(Issue issue, StringBuilder format) { - format - .append("File: ") - .append(issue.getFile().getAbsolutePath()) - .append("\n"); + Optional.ofNullable(issue.getFile()) + .ifPresent(file -> + format + .append("File: ") + .append(file.getAbsolutePath()) + .append("\n") + ); } private void appendLine(Issue issue, StringBuilder format) { diff --git a/src/main/resources/description.properties b/src/main/resources/description.properties index 39d333c..7efa949 100644 --- a/src/main/resources/description.properties +++ b/src/main/resources/description.properties @@ -1 +1,4 @@ -com.bartek.esa.core.plugin.JavaPlugin.PACKAGE_LACK=There is no package defined in AndroidManifest.xml file. Please check fix to use this tool. \ No newline at end of file +com.bartek.esa.core.archetype.JavaPlugin.NO_PACKAGE=There is no package defined in AndroidManifest.xml file. \n\ + Package should be defined as attribute of tag.\n\ + For example: \n\ + Please fix it to use this tool. \ No newline at end of file