@( projectsWithSelection: ProjectsWithSelection, vulnerableDependencies: Seq[GroupedDependency], allDependenciesCount: Int, dependenciesWithSuppressedVulnerabilitiesOnlyCount: Int, reports: DependencyCheckReportsParser.Result )(implicit header: DefaultRequest, mainTemplateData: MainTemplateData) @main( title = s"Vulnerable libraries for ${projectsWithSelection.projectNameText} (${vulnerableDependencies.size} deps, ${vulnerableDependencies.flatMap(_.cpeIdentifiers.map(_.toCpeIdentifierOption.get)).toSet.size} CPEs)", projectsOption = Some((projectsWithSelection, routes.Statistics.vulnerableLibraries(_))) ){ @healthReport(reports.failedProjects)

Plot

List

Libraries are sorted:

  1. by max vulnerability score if defined for at least one vulnerability
  2. by affected dependency count if the score above is not defined
  3. by number of vulnerabilities
  4. by affected project count

Note that the number of affected projects is calculated from the current view, not from all projects (unless all projects are selected).

@dependencyList( "vulnerable", vulnerableDependencies.sorted(severityOrdering), selectorOption = projectsWithSelection.selectorString, addButtons = false ) }