private Set<String> filterIncludedArtifacts(Set<String> artifacts) throws DependencyTreeBuilderException { Set<String> included = new TreeSet<>(); ArtifactFilter artifactFilter = new ScopeArtifactFilter(null); DependencyNode node = treeBuilder.buildDependencyTree(project, localRepository, artifactFactory, artifactMetadataSource, artifactFilter, artifactCollector); CollectingDependencyNodeVisitor visitor = new CollectingDependencyNodeVisitor(); node.accept(visitor); List<DependencyNode> nodes = visitor.getNodes(); for (DependencyNode dependencyNode : nodes) { Artifact artifact = dependencyNode.getArtifact(); if (getLog().isDebugEnabled()) { getLog().debug("Found dependency node: " + artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + artifact.getVersion() + " - scope=" + artifact.getScope()); } if (!Artifact.SCOPE_TEST.equals(artifact.getScope()) && !Artifact.SCOPE_PROVIDED.equals(artifact.getScope())) { String canonicalName = artifact.getGroupId() + ":" + artifact.getArtifactId(); if (artifacts.contains(canonicalName)) { getLog().debug(canonicalName + " marked for exclusion"); included.add(canonicalName); } } } return included; }
/** * {@inheritDoc} * * @deprecated */ public DependencyTree buildDependencyTree( MavenProject project, ArtifactRepository repository, ArtifactFactory factory, ArtifactMetadataSource metadataSource, ArtifactCollector collector ) throws DependencyTreeBuilderException { DependencyNode rootNode = buildDependencyTree( project, repository, factory, metadataSource, null, collector ); CollectingDependencyNodeVisitor collectingVisitor = new CollectingDependencyNodeVisitor(); rootNode.accept( collectingVisitor ); return new DependencyTree( rootNode, collectingVisitor.getNodes() ); }
treeRoot.accept(visitor); for (DependencyNode node : visitor.getNodes()){ if (node.getState() == DependencyNode.INCLUDED && ! treeRoot.equals(node)){ Artifact artifact = node.getArtifact();
List<DependencyNode> nodes = visitor.getNodes(); List<ITypeLoader> deps = new ArrayList<>(); for (DependencyNode dependencyNode : nodes) {
/** Visits a node (and all dependencies) to see if it contains duplicate scala versions */ private void checkArtifactForScalaVersion(String requiredScalaVersion, DependencyNode rootNode) throws Exception { final CheckScalaVersionVisitor visitor = new CheckScalaVersionVisitor(requiredScalaVersion, getLog()); CollectingDependencyNodeVisitor collectingVisitor = new CollectingDependencyNodeVisitor(); DependencyNodeVisitor firstPassVisitor = new FilteringDependencyNodeVisitor( collectingVisitor, createScalaDistroDependencyFilter() ); rootNode.accept( firstPassVisitor ); DependencyNodeFilter secondPassFilter = new AncestorOrSelfDependencyNodeFilter( collectingVisitor.getNodes() ); DependencyNodeVisitor filteredVisitor = new FilteringDependencyNodeVisitor( visitor, secondPassFilter ); rootNode.accept( filteredVisitor ); if(visitor.isFailed()) { visitor.logScalaDependents(); if(failOnMultipleScalaVersions) { getLog().error("Multiple versions of scala libraries detected!"); throw new MojoFailureException("Multiple versions of scala libraries detected!"); } getLog().warn("Multiple versions of scala libraries detected!"); } }
rootNode.accept( firstPassVisitor ); DependencyNodeFilter secondPassFilter = new AncestorOrSelfDependencyNodeFilter( collectingVisitor.getNodes() ); visitor = new FilteringDependencyNodeVisitor( visitor, secondPassFilter );
private void computeDependencyTree(final Project project, final SensorContext context) { LOG.warn("Computation of Maven dependencies by SonarQube is deprecated. Please update the version of SonarQube Maven plugin to 2.5+"); try { DependencyNode root = treeBuilder.buildDependencyTree(project.getPom(), localRepository, artifactFactory, artifactMetadataSource, null, artifactCollector); DependencyNodeVisitor visitor = new BuildingDependencyNodeVisitor(new DependencyNodeVisitor() { @Override public boolean visit(DependencyNode node) { return true; } @Override public boolean endVisit(DependencyNode node) { if (node.getParent() != null && node.getParent() != node) { saveDependency(project, node, context); } return true; } }); // mode verbose OFF : do not show the same lib many times DependencyNodeFilter filter = StateDependencyNodeFilter.INCLUDED; CollectingDependencyNodeVisitor collectingVisitor = new CollectingDependencyNodeVisitor(); DependencyNodeVisitor firstPassVisitor = new FilteringDependencyNodeVisitor(collectingVisitor, filter); root.accept(firstPassVisitor); DependencyNodeFilter secondPassFilter = new AncestorOrSelfDependencyNodeFilter(collectingVisitor.getNodes()); visitor = new FilteringDependencyNodeVisitor(visitor, secondPassFilter); root.accept(visitor); } catch (DependencyTreeBuilderException e) { throw new SonarException("Can not load the graph of dependencies of the project " + project.getKey(), e); } }
/** * Serializes the specified dependency tree to a string. * * @param rootNode the dependency tree root node to serialize * @return the serialized dependency tree */ private void serializeDependencyTree( DependencyNode rootNode, String key, Sink sink ) { DependencyNodeVisitor visitor = getSerializingDependencyNodeVisitor( sink ); visitor = new BuildingDependencyNodeVisitor( visitor ); DependencyNodeFilter nodeFilter = createDependencyNodeFilter( key ); if ( nodeFilter != null ) { CollectingDependencyNodeVisitor collectingVisitor = new CollectingDependencyNodeVisitor(); DependencyNodeVisitor firstPassVisitor = new FilteringDependencyNodeVisitor( collectingVisitor, nodeFilter ); rootNode.accept( firstPassVisitor ); DependencyNodeFilter secondPassFilter = new AncestorOrSelfDependencyNodeFilter( collectingVisitor.getNodes() ); visitor = new FilteringDependencyNodeVisitor( visitor, secondPassFilter ); } rootNode.accept( visitor ); }