mirror of
https://github.com/ysoftdevs/odc-analyzer.git
synced 2026-01-15 00:03:59 +01:00
32 lines
1.9 KiB
Scala
32 lines
1.9 KiB
Scala
package com.ysoft.odc.statistics
|
|
|
|
import controllers.DependencyCheckReportsParser.Result
|
|
import controllers._
|
|
import models.Library
|
|
|
|
case class LibDepStatistics(libraries: Set[(Int, Library)], dependencies: Set[GroupedDependency], failedProjects: FailedProjects){
|
|
def vulnerableRatio = vulnerableDependencies.size.toDouble / dependencies.size.toDouble
|
|
lazy val vulnerabilities: Set[Vulnerability] = dependencies.flatMap(_.vulnerabilities)
|
|
lazy val vulnerabilitiesByName = vulnerabilities.map(v => v.name -> v).toMap
|
|
lazy val vulnerabilityNames = vulnerabilities.map(_.name)
|
|
lazy val vulnerabilitiesToDependencies: Map[Vulnerability, Set[GroupedDependency]] = vulnerableDependencies.flatMap(dep =>
|
|
dep.vulnerabilities.map(vuln => (vuln, dep))
|
|
).groupBy(_._1).mapValues(_.map(_._2)).map(identity)
|
|
vulnerableDependencies.flatMap(dep => dep.vulnerabilities.map(_ -> dep)).groupBy(_._1).mapValues(_.map(_._2)).map(identity)
|
|
vulnerableDependencies.flatMap(dep => dep.vulnerabilities.map(_ -> dep)).groupBy(_._1).mapValues(_.map(_._2)).map(identity)
|
|
lazy val vulnerableDependencies = dependencies.filter(_.isVulnerable)
|
|
lazy val (dependenciesWithCpe, dependenciesWithoutCpe) = dependencies.partition(_.hasCpe)
|
|
lazy val cpeRatio = dependenciesWithCpe.size.toDouble / dependencies.size.toDouble
|
|
//lazy val weaknesses = vulnerabilities.flatMap(_.cweOption)
|
|
//lazy val weaknessesFrequency = LibDepStatistics.computeWeaknessesFrequency(vulnerabilities)
|
|
}
|
|
|
|
object LibDepStatistics{
|
|
//private def computeWeaknessesFrequency(vulnerabilities: Set[Vulnerability]) = vulnerabilities.toSeq.map(_.cweOption).groupBy(identity).mapValues(_.size).map(identity).withDefaultValue(0)
|
|
def apply(libraries: Set[(Int, Library)], dependencies: Set[GroupedDependency], parsedReports: Result): LibDepStatistics = LibDepStatistics(
|
|
libraries = libraries,
|
|
dependencies = dependencies,
|
|
failedProjects = parsedReports.failedProjects
|
|
)
|
|
}
|