From e9dacba8c7a412b41d56bcc61c6155900d8cb970 Mon Sep 17 00:00:00 2001 From: cesarsotovalero Date: Mon, 16 Nov 2020 11:01:11 +0100 Subject: [PATCH] Add dependency size to JSON field --- .../java/se/kth/depclean/DepCleanMojo.java | 21 ++++++++----------- .../kth/depclean/util/json/NodeAdapter.java | 11 ++++++---- .../util/json/ParsedDependencies.java | 10 +++++++-- 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/depclean-maven-plugin/src/main/java/se/kth/depclean/DepCleanMojo.java b/depclean-maven-plugin/src/main/java/se/kth/depclean/DepCleanMojo.java index a730e1be..5f01955e 100644 --- a/depclean-maven-plugin/src/main/java/se/kth/depclean/DepCleanMojo.java +++ b/depclean-maven-plugin/src/main/java/se/kth/depclean/DepCleanMojo.java @@ -165,7 +165,7 @@ public void execute() throws MojoExecutionException, MojoFailureException { System.out.println(SEPARATOR); getLog().info("Starting DepClean dependency analysis"); - File pomFile = new File(project.getBasedir().getAbsolutePath() + "/" + "pom.xml"); + File pomFile = new File(project.getBasedir().getAbsolutePath() + File.separator + "pom.xml"); String packaging = project.getPackaging(); if (packaging.equals("pom")) { @@ -173,7 +173,7 @@ public void execute() throws MojoExecutionException, MojoFailureException { return; } - String pathToPutDebloatedPom = project.getBasedir().getAbsolutePath() + "/" + "pom-debloated.xml"; + String pathToPutDebloatedPom = project.getBasedir().getAbsolutePath() + File.separator + "pom-debloated.xml"; /* Build Maven model to manipulate the pom */ Model model; @@ -196,19 +196,17 @@ public void execute() throws MojoExecutionException, MojoFailureException { return; } - // TODO calculate the size of all the dependencies in target/dependency /* Get the size of the dependencies */ Map sizeOfDependencies = new HashMap<>(); Iterator iterator = FileUtils.iterateFiles( new File( - project.getBuild().getDirectory() + "/" + project.getBuild().getDirectory() + File.separator + "dependency"), new String[]{"jar"}, true); while (iterator.hasNext()) { File file = iterator.next(); sizeOfDependencies.put(file.getName(), FileUtils.sizeOf(file)); } - /* Decompress dependencies */ String dependencyDirectoryName = project.getBuild().getDirectory() + "/" + "dependency"; File dependencyDirectory = new File(dependencyDirectoryName); @@ -378,8 +376,8 @@ public void execute() throws MojoExecutionException, MojoFailureException { /* Writing the JSON file with the debloat results */ if (createResultJson) { - getLog().info("Starting creating JSON file"); - String treeFile = project.getBuild().getDirectory() + "/" + "tree.txt"; + String jsonFile = project.getBuild().getDirectory() + File.separator + "results.json"; + String treeFile = project.getBuild().getDirectory() + File.separator + "tree.txt"; /* Copy direct dependencies locally */ try { MavenInvoker.runCommand("mvn dependency:tree -DoutputFile=" + treeFile + " -Dverbose=true"); @@ -389,16 +387,15 @@ public void execute() throws MojoExecutionException, MojoFailureException { } ParsedDependencies parsedDependencies = new ParsedDependencies( treeFile, + sizeOfDependencies, usedDeclaredArtifactsCoordinates, usedUndeclaredArtifactsCoordinates ); try { - FileUtils.write(new File(project.getBuild().getDirectory() + "/" + "results.json"), - parsedDependencies.parseTreeToJSON(), - Charset.defaultCharset() - ); + FileUtils.write(new File(jsonFile), parsedDependencies.parseTreeToJSON(), Charset.defaultCharset()); + getLog().info("JSON file in created in " + jsonFile); } catch (ParseException | IOException e) { - getLog().error("Unable generate JSON file."); + getLog().error("Unable to generate JSON file."); } } } diff --git a/depclean-maven-plugin/src/main/java/se/kth/depclean/util/json/NodeAdapter.java b/depclean-maven-plugin/src/main/java/se/kth/depclean/util/json/NodeAdapter.java index 78c08114..ae4be8b9 100644 --- a/depclean-maven-plugin/src/main/java/se/kth/depclean/util/json/NodeAdapter.java +++ b/depclean-maven-plugin/src/main/java/se/kth/depclean/util/json/NodeAdapter.java @@ -6,24 +6,27 @@ import fr.dutra.tools.maven.deptree.core.Node; import java.io.IOException; -import java.util.Random; +import java.util.Map; import java.util.Set; public class NodeAdapter extends TypeAdapter { private final Set usedDeclaredArtifactsCoordinates; private final Set usedUndeclaredArtifactsCoordinates; - Random random = new Random(); + private final Map sizeOfDependencies; public NodeAdapter(Set usedDeclaredArtifactsCoordinates, - Set usedUndeclaredArtifactsCoordinates) { + Set usedUndeclaredArtifactsCoordinates, + Map sizeOfDependencies) { this.usedDeclaredArtifactsCoordinates = usedDeclaredArtifactsCoordinates; this.usedUndeclaredArtifactsCoordinates = usedUndeclaredArtifactsCoordinates; + this.sizeOfDependencies = sizeOfDependencies; } @Override public void write(JsonWriter jsonWriter, Node node) throws IOException { String coordinates = node.getGroupId() + ":" + node.getArtifactId() + ":" + node.getVersion() + ":" + node.getScope(); + String dependencyJar = node.getArtifactId() + "-" + node.getVersion() + ".jar"; jsonWriter.beginObject() .name("coordinates") .jsonValue("\"" + node.getArtifactCanonicalForm() + "\"") @@ -50,7 +53,7 @@ public void write(JsonWriter jsonWriter, Node node) throws IOException { .jsonValue("\"" + node.getClassifier() + "\"") .name("size") - .jsonValue(String.valueOf(random.nextDouble())) + .jsonValue(String.valueOf(sizeOfDependencies.get(dependencyJar))) .name("status") .jsonValue((usedDeclaredArtifactsCoordinates.contains(coordinates) || diff --git a/depclean-maven-plugin/src/main/java/se/kth/depclean/util/json/ParsedDependencies.java b/depclean-maven-plugin/src/main/java/se/kth/depclean/util/json/ParsedDependencies.java index 069d5ed6..effc0a77 100644 --- a/depclean-maven-plugin/src/main/java/se/kth/depclean/util/json/ParsedDependencies.java +++ b/depclean-maven-plugin/src/main/java/se/kth/depclean/util/json/ParsedDependencies.java @@ -14,6 +14,7 @@ import java.io.InputStreamReader; import java.io.Reader; import java.nio.charset.StandardCharsets; +import java.util.Map; import java.util.Set; @Slf4j @@ -22,13 +23,17 @@ public class ParsedDependencies { private final String treeTextFilePath; private final Set usedDeclaredArtifactsCoordinates; private final Set usedUndeclaredArtifactsCoordinates; + private final Map sizeOfDependencies; public ParsedDependencies(String treeTextFilePath, + Map sizeOfDependencies, Set usedDeclaredArtifactsCoordinates, - Set usedUndeclaredArtifactsCoordinates) { + Set usedUndeclaredArtifactsCoordinates + ) { this.treeTextFilePath = treeTextFilePath; this.usedDeclaredArtifactsCoordinates = usedDeclaredArtifactsCoordinates; this.usedUndeclaredArtifactsCoordinates = usedUndeclaredArtifactsCoordinates; + this.sizeOfDependencies = sizeOfDependencies; } public String parseTreeToJSON() throws ParseException, IOException { @@ -40,7 +45,8 @@ public String parseTreeToJSON() throws ParseException, IOException { Node tree = parser.parse(r); NodeAdapter nodeAdapter = new NodeAdapter( usedDeclaredArtifactsCoordinates, - usedUndeclaredArtifactsCoordinates + usedUndeclaredArtifactsCoordinates, + sizeOfDependencies ); GsonBuilder gsonBuilder = new GsonBuilder() .registerTypeAdapter(Node.class, nodeAdapter);