Skip to content

Commit

Permalink
[MNG-7806] Plugins verification - remove used in module(s) report
Browse files Browse the repository at this point in the history
  • Loading branch information
slawekjaranowski committed Jun 13, 2023
1 parent 7e0fa3e commit 3135553
Showing 1 changed file with 15 additions and 47 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,16 @@

import java.io.File;
import java.nio.file.Path;
import java.util.*;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

import org.apache.maven.eventspy.AbstractEventSpy;
Expand All @@ -33,7 +42,6 @@
import org.apache.maven.plugin.PluginValidationManager;
import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.project.MavenProject;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.artifact.Artifact;
import org.eclipse.aether.util.ConfigUtils;
Expand Down Expand Up @@ -118,7 +126,7 @@ public void reportPluginValidationIssue(
String pluginKey = pluginKey(pluginArtifact);
PluginValidationIssues pluginIssues =
pluginIssues(session).computeIfAbsent(pluginKey, k -> new PluginValidationIssues());
pluginIssues.reportPluginIssue(locality, null, null, issue);
pluginIssues.reportPluginIssue(locality, null, issue);
mayReportInline(session, locality, issue);
}

Expand All @@ -128,8 +136,7 @@ public void reportPluginValidationIssue(
String pluginKey = pluginKey(mojoDescriptor);
PluginValidationIssues pluginIssues = pluginIssues(mavenSession.getRepositorySession())
.computeIfAbsent(pluginKey, k -> new PluginValidationIssues());
pluginIssues.reportPluginIssue(
locality, pluginDeclaration(mavenSession, mojoDescriptor), pluginOccurrence(mavenSession), issue);
pluginIssues.reportPluginIssue(locality, pluginDeclaration(mavenSession, mojoDescriptor), issue);
mayReportInline(mavenSession.getRepositorySession(), locality, issue);
}

Expand All @@ -144,11 +151,7 @@ public void reportPluginMojoValidationIssue(
PluginValidationIssues pluginIssues = pluginIssues(mavenSession.getRepositorySession())
.computeIfAbsent(pluginKey, k -> new PluginValidationIssues());
pluginIssues.reportPluginMojoIssue(
locality,
pluginDeclaration(mavenSession, mojoDescriptor),
pluginOccurrence(mavenSession),
mojoInfo(mojoDescriptor, mojoClass),
issue);
locality, pluginDeclaration(mavenSession, mojoDescriptor), mojoInfo(mojoDescriptor, mojoClass), issue);
mayReportInline(mavenSession.getRepositorySession(), locality, issue);
}

Expand Down Expand Up @@ -182,12 +185,6 @@ private void reportSessionCollectedValidationIssues(MavenSession mavenSession) {
logger.warn(" * {}", pluginDeclaration);
}
}
if (!issues.pluginOccurrences.isEmpty()) {
logger.warn(" Used in module(s):");
for (String pluginOccurrence : issues.pluginOccurrences) {
logger.warn(" * {}", pluginOccurrence);
}
}
if (!issues.pluginIssues.isEmpty()) {
for (IssueLocality issueLocality : issueLocalitiesToReport) {
Set<String> pluginIssues = issues.pluginIssues.get(issueLocality);
Expand Down Expand Up @@ -279,22 +276,6 @@ private String pluginDeclaration(MavenSession mavenSession, MojoDescriptor mojoD
}
}

private String pluginOccurrence(MavenSession mavenSession) {
MavenProject prj = mavenSession.getCurrentProject();
String result = prj.getGroupId() + ":" + prj.getArtifactId() + ":" + prj.getVersion();
File currentPom = prj.getFile();
if (currentPom != null) {
Path topLevelBasedir =
mavenSession.getTopLevelProject().getBasedir().toPath();
Path current = currentPom.toPath().toAbsolutePath().normalize();
if (current.startsWith(topLevelBasedir)) {
current = topLevelBasedir.relativize(current);
}
result += " (" + current + ")";
}
return result;
}

private String mojoInfo(MojoDescriptor mojoDescriptor, Class<?> mojoClass) {
return mojoDescriptor.getFullGoalName() + " (" + mojoClass.getName() + ")";
}
Expand All @@ -308,44 +289,31 @@ private ConcurrentHashMap<String, PluginValidationIssues> pluginIssues(Repositor
private static class PluginValidationIssues {
private final LinkedHashSet<String> pluginDeclarations;

private final LinkedHashSet<String> pluginOccurrences;

private final HashMap<IssueLocality, LinkedHashSet<String>> pluginIssues;

private final HashMap<IssueLocality, LinkedHashMap<String, LinkedHashSet<String>>> mojoIssues;

private PluginValidationIssues() {
this.pluginDeclarations = new LinkedHashSet<>();
this.pluginOccurrences = new LinkedHashSet<>();
this.pluginIssues = new HashMap<>();
this.mojoIssues = new HashMap<>();
}

private synchronized void reportPluginIssue(
IssueLocality issueLocality, String pluginDeclaration, String pluginOccurrence, String issue) {
IssueLocality issueLocality, String pluginDeclaration, String issue) {
if (pluginDeclaration != null) {
pluginDeclarations.add(pluginDeclaration);
}
if (pluginOccurrence != null) {
pluginOccurrences.add(pluginOccurrence);
}
pluginIssues
.computeIfAbsent(issueLocality, k -> new LinkedHashSet<>())
.add(issue);
}

private synchronized void reportPluginMojoIssue(
IssueLocality issueLocality,
String pluginDeclaration,
String pluginOccurrence,
String mojoInfo,
String issue) {
IssueLocality issueLocality, String pluginDeclaration, String mojoInfo, String issue) {
if (pluginDeclaration != null) {
pluginDeclarations.add(pluginDeclaration);
}
if (pluginOccurrence != null) {
pluginOccurrences.add(pluginOccurrence);
}
mojoIssues
.computeIfAbsent(issueLocality, k -> new LinkedHashMap<>())
.computeIfAbsent(mojoInfo, k -> new LinkedHashSet<>())
Expand Down

0 comments on commit 3135553

Please sign in to comment.