Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#145 Include only runtime configurations #153

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -72,13 +72,21 @@ public class DependenciesFinder

private static final String RELEASE_RUNTIME_CONFIGURATION_NAME = "releaseRuntimeClasspath";

private static final Set<String> CONFIGURATION_NAMES = ImmutableSet.of(
private static final Set<String> COMPILE_CONFIGURATION_NAMES = ImmutableSet.of(
COMPILE_CLASSPATH_CONFIGURATION_NAME,
RUNTIME_CLASSPATH_CONFIGURATION_NAME,
RELEASE_COMPILE_LEGACY_CONFIGURATION_NAME,
RELEASE_COMPILE_CONFIGURATION_NAME);

private static final Set<String> RUNTIME_CONFIGURATION_NAMES = ImmutableSet.of(
RUNTIME_CLASSPATH_CONFIGURATION_NAME,
RELEASE_RUNTIME_APK_LEGACY_CONFIGURATION_NAME,
RELEASE_RUNTIME_LIBRARY_LEGACY_CONFIGURATION_NAME,
RELEASE_COMPILE_CONFIGURATION_NAME, RELEASE_RUNTIME_CONFIGURATION_NAME);
RELEASE_RUNTIME_CONFIGURATION_NAME);

private static final Set<String> CONFIGURATION_NAMES = ImmutableSet.<String> builder()
.addAll(COMPILE_CONFIGURATION_NAMES)
.addAll(RUNTIME_CONFIGURATION_NAMES)
.build();

private static final String COPY_CONFIGURATION_NAME = "sonatypeCopyConfiguration";

Expand All @@ -87,10 +95,11 @@ public class DependenciesFinder
public Set<ResolvedDependency> findResolvedDependencies(
Project project,
boolean allConfigurations,
boolean runtimeConfigurationsOnly,
Map<String, String> variantAttributes)
{
return new LinkedHashSet<>(new LinkedHashSet<>(project.getConfigurations()).stream()
.filter(configuration -> isAcceptableConfiguration(configuration, allConfigurations))
.filter(configuration -> isAcceptableConfiguration(configuration, allConfigurations, runtimeConfigurationsOnly))
.flatMap(configuration -> getDependencies(project, configuration, variantAttributes,
resolvedConfiguration -> resolvedConfiguration.getFirstLevelModuleDependencies().stream()))
.collect(collectResolvedDependencies()).values());
Expand All @@ -99,6 +108,7 @@ public Set<ResolvedDependency> findResolvedDependencies(
public List<Module> findModules(
Project rootProject,
boolean allConfigurations,
boolean runtimeConfigurationsOnly,
Set<String> modulesExcluded,
Map<String, String> variantAttributes)
{
Expand All @@ -108,18 +118,19 @@ public List<Module> findModules(
if (!modulesExcluded.contains(project.getName())) {
Module module = buildModule(project);

findResolvedArtifacts(project, allConfigurations, variantAttributes).forEach(resolvedArtifact -> {
ModuleVersionIdentifier artifactId = resolvedArtifact.getModuleVersion().getId();
findResolvedArtifacts(project, allConfigurations, runtimeConfigurationsOnly, variantAttributes)
.forEach(resolvedArtifact -> {
ModuleVersionIdentifier artifactId = resolvedArtifact.getModuleVersion().getId();

Artifact artifact = new Artifact()
.setId(artifactId.getGroup() + ":" + artifactId.getName() + ":" + artifactId.getVersion())
.setPathname(resolvedArtifact.getFile())
.setMonitored(true);
Artifact artifact = new Artifact()
.setId(artifactId.getGroup() + ":" + artifactId.getName() + ":" + artifactId.getVersion())
.setPathname(resolvedArtifact.getFile())
.setMonitored(true);

module.addConsumedArtifact(artifact);
module.addConsumedArtifact(artifact);
});

findResolvedDependencies(project, allConfigurations, variantAttributes).forEach(
findResolvedDependencies(project, allConfigurations, runtimeConfigurationsOnly, variantAttributes).forEach(
resolvedDependency -> module.addDependency(processDependency(resolvedDependency, true, new HashSet<>()))
);

Expand All @@ -134,10 +145,11 @@ public List<Module> findModules(
Set<ResolvedArtifact> findResolvedArtifacts(
Project project,
boolean allConfigurations,
boolean runtimeConfigurationsOnly,
Map<String, String> variantAttributes)
{
return new LinkedHashSet<>(project.getConfigurations()).stream()
.filter(configuration -> isAcceptableConfiguration(configuration, allConfigurations))
.filter(configuration -> isAcceptableConfiguration(configuration, allConfigurations, runtimeConfigurationsOnly))
.flatMap(configuration -> getDependencies(project, configuration, variantAttributes,
resolvedConfiguration -> resolvedConfiguration.getResolvedArtifacts().stream()))
.collect(Collectors.toSet());
Expand Down Expand Up @@ -344,12 +356,22 @@ private boolean isParent(
return false;
}

private boolean isAcceptableConfiguration(Configuration configuration, boolean allConfigurations) {
private boolean isAcceptableConfiguration(
Configuration configuration,
boolean allConfigurations,
boolean runtimeConfigurationsOnly)
{
if (configuration.getName().endsWith(COPY_CONFIGURATION_NAME))
return false;
if (allConfigurations) {
return configuration.isCanBeResolved();
}
if (runtimeConfigurationsOnly) {
return configuration.isCanBeResolved() && (RUNTIME_CONFIGURATION_NAMES.contains(configuration.getName())
|| StringUtils.endsWithIgnoreCase(configuration.getName(), RELEASE_RUNTIME_APK_LEGACY_CONFIGURATION_NAME)
|| StringUtils.endsWithIgnoreCase(configuration.getName(), RELEASE_RUNTIME_LIBRARY_LEGACY_CONFIGURATION_NAME)
|| StringUtils.endsWithIgnoreCase(configuration.getName(), RELEASE_RUNTIME_CONFIGURATION_NAME));
}
return configuration.isCanBeResolved() && (CONFIGURATION_NAMES.contains(configuration.getName())
|| StringUtils.endsWithIgnoreCase(configuration.getName(), RELEASE_COMPILE_LEGACY_CONFIGURATION_NAME)
|| StringUtils.endsWithIgnoreCase(configuration.getName(), RELEASE_RUNTIME_APK_LEGACY_CONFIGURATION_NAME)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public NexusIqIndexTask() {
public void saveModule() {
try {
List<Module> modules = dependenciesFinder.findModules(getProject(), extension.isAllConfigurations(),
extension.getModulesExcluded(), extension.getVariantAttributes());
extension.isRuntimeConfigurationsOnly(), extension.getModulesExcluded(), extension.getVariantAttributes());
List<File> files = new ArrayList<>(modules.size());

for (Module module : modules) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ public class NexusIqPluginIndexExtension
{
private boolean allConfigurations;

private boolean runtimeConfigurationsOnly;

private Set<String> modulesExcluded;

private Map<String, String> variantAttributes;
Expand All @@ -42,6 +44,14 @@ public void setAllConfigurations(boolean allConfigurations) {
this.allConfigurations = allConfigurations;
}

public boolean isRuntimeConfigurationsOnly() {
return runtimeConfigurationsOnly;
}

public void setRuntimeConfigurationsOnly(boolean runtimeConfigurationsOnly) {
this.runtimeConfigurationsOnly = runtimeConfigurationsOnly;
}

public Set<String> getModulesExcluded() {
return modulesExcluded;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ public class NexusIqPluginScanExtension

private boolean allConfigurations;

private boolean runtimeConfigurationsOnly;

private boolean simulationEnabled;

private String simulatedPolicyActionId;
Expand Down Expand Up @@ -146,6 +148,14 @@ public void setAllConfigurations(boolean allConfigurations) {
this.allConfigurations = allConfigurations;
}

public boolean isRuntimeConfigurationsOnly() {
return runtimeConfigurationsOnly;
}

public void setRuntimeConfigurationsOnly(boolean runtimeConfigurationsOnly) {
this.runtimeConfigurationsOnly = runtimeConfigurationsOnly;
}

public boolean isSimulationEnabled() {
return simulationEnabled;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,8 @@ public void scan() {
Collections.singletonList(new Action(extension.getSimulatedPolicyActionId()))));
}

dependenciesFinder.findModules(getProject(), extension.isAllConfigurations(), extension.getModulesExcluded(),
extension.getVariantAttributes());
dependenciesFinder.findModules(getProject(), extension.isAllConfigurations(),
extension.isRuntimeConfigurationsOnly(), extension.getModulesExcluded(), extension.getVariantAttributes());

applicationPolicyEvaluation =
new ApplicationPolicyEvaluation(0, 0, 0, 0, 0, 0, 0, 0, 1, alerts, "simulated/report");
Expand All @@ -110,7 +110,7 @@ public void scan() {

File scanFolder = new File(extension.getScanFolderPath());
List<Module> modules = dependenciesFinder.findModules(getProject(), extension.isAllConfigurations(),
extension.getModulesExcluded(), extension.getVariantAttributes());
extension.isRuntimeConfigurationsOnly(), extension.getModulesExcluded(), extension.getVariantAttributes());

ScanResult scanResult = iqClient.scan(extension.getApplicationId(), proprietaryConfig, buildProperties(),
buildScanTargets(), scanFolder, Collections.emptyMap(), Collections.emptySet(), modules);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,8 @@ public void audit() {
.filter(project -> extension.getModulesIncluded() == null || extension.getModulesIncluded().isEmpty() || extension.getModulesIncluded().contains(project.getName()))
.filter(project -> extension.getModulesExcluded() == null || !extension.getModulesExcluded().contains(project.getName()))
.flatMap(project -> dependenciesFinder
.findResolvedDependencies(project, extension.isAllConfigurations(), extension.getVariantAttributes())
.findResolvedDependencies(project, extension.isAllConfigurations(),
extension.isRuntimeConfigurationsOnly(), extension.getVariantAttributes())
.stream())
.collect(Collectors.toCollection(LinkedHashSet::new));
BiMap<ResolvedDependency, PackageUrl> dependenciesMap = HashBiMap.create();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ public class OssIndexPluginExtension

private boolean allConfigurations;

private boolean runtimeConfigurationsOnly;

private Set<String> modulesIncluded;

private Set<String> modulesExcluded;
Expand Down Expand Up @@ -139,6 +141,14 @@ public void setAllConfigurations(boolean allConfigurations) {
this.allConfigurations = allConfigurations;
}

public boolean isRuntimeConfigurationsOnly() {
return runtimeConfigurationsOnly;
}

public void setRuntimeConfigurationsOnly(boolean runtimeConfigurationsOnly) {
this.runtimeConfigurationsOnly = runtimeConfigurationsOnly;
}

public Set<String> getModulesIncluded() {
return modulesIncluded;
}
Expand Down
Loading