diff --git a/app/com/ysoft/odc/OdcParser.scala b/app/com/ysoft/odc/OdcParser.scala index 9dd5501..5d3b80b 100644 --- a/app/com/ysoft/odc/OdcParser.scala +++ b/app/com/ysoft/odc/OdcParser.scala @@ -83,6 +83,7 @@ final case class GroupedDependency(dependencies: Map[Dependency, Set[ReportInfo] def mavenIdentifiers = identifiers.filter(_.identifierType == "maven") def cpeIdentifiers = identifiers.filter(_.identifierType == "cpe") def vulnerabilities: Set[Vulnerability] = dependencies.keySet.flatMap(_.vulnerabilities) + def suppressedVulnerabilities: Set[Vulnerability] = dependencies.keySet.flatMap(_.suppressedVulnerabilities) def plainLibraryIdentifiers: Set[PlainLibraryIdentifier] = identifiers.flatMap(_.toLibraryIdentifierOption) def hasCpe: Boolean = cpeIdentifiers.nonEmpty } diff --git a/app/controllers/DependencyCheckReportsParser.scala b/app/controllers/DependencyCheckReportsParser.scala index efe177a..546e8f3 100644 --- a/app/controllers/DependencyCheckReportsParser.scala +++ b/app/controllers/DependencyCheckReportsParser.scala @@ -123,6 +123,7 @@ object DependencyCheckReportsParser{ lazy val groupedDependenciesByPlainLibraryIdentifier: Map[PlainLibraryIdentifier, Set[GroupedDependency]] = groupedDependencies.toSet.flatMap((grDep: GroupedDependency) => grDep.plainLibraryIdentifiers.map(_ -> grDep)).groupBy(_._1).mapValues(_.map(_._2)).map(identity) lazy val vulnerableDependencies = groupedDependencies.filter(_.vulnerabilities.nonEmpty) + lazy val suppressedOnlyDependencies = groupedDependencies.filter(gd => gd.vulnerabilities.isEmpty && gd.suppressedIdentifiers.nonEmpty) private val ProjectSelectorPattern = """^project:(.*)$""".r private val TeamSelectorPattern = """^team:(.*)$""".r diff --git a/app/controllers/Statistics.scala b/app/controllers/Statistics.scala index 984ccd5..4afd9fc 100644 --- a/app/controllers/Statistics.scala +++ b/app/controllers/Statistics.scala @@ -202,6 +202,7 @@ class Statistics @Inject() ( Future.successful(Ok(views.html.statistics.vulnerableLibraries( projectsWithSelection = selection.projectsWithSelection, vulnerableDependencies = reports.vulnerableDependencies, + dependenciesWithSuppressedVulnerabilitiesOnlyCount = reports.suppressedOnlyDependencies.size, allDependenciesCount = reports.groupedDependencies.size, reports = reports ))) diff --git a/app/views/statistics/vulnerableLibraries.scala.html b/app/views/statistics/vulnerableLibraries.scala.html index 4d943ba..208c654 100644 --- a/app/views/statistics/vulnerableLibraries.scala.html +++ b/app/views/statistics/vulnerableLibraries.scala.html @@ -2,6 +2,7 @@ projectsWithSelection: ProjectsWithSelection, vulnerableDependencies: Seq[GroupedDependency], allDependenciesCount: Int, + dependenciesWithSuppressedVulnerabilitiesOnlyCount: Int, reports: DependencyCheckReportsParser.Result )(implicit header: DefaultRequest) @@ -17,7 +18,9 @@