Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | 5x 5x 5x 5x 5x 5x 56x 24x 24x 24x 24x 24x 10x 14x 5x 9x 7x 2x 5x 4x 4x | import { CodeMapNode } from "../../../../../codeCharta.model" import percentRound from "percent-round" import { getAssociatedMetricThresholds } from "./getMetricThresholds" export interface RiskProfile { lowRisk: number moderateRisk: number highRisk: number veryHighRisk: number } export const HEIGHT_METRICS = ["complexity", "sonar_complexity", "mcc"] export const AREA_METRIC = "rloc" export const EXCLUDED_FILE_EXTENSION = new Set(["html", "sass", "css", "scss", "txt", "md", "json", undefined]) export function aggregateRiskProfile(node: CodeMapNode, rlocRisk: RiskProfile, fileExtension: string) { const riskMetric = HEIGHT_METRICS.find(metric => node.attributes[metric] !== undefined) const languageSpecificThresholds = getAssociatedMetricThresholds(fileExtension) const thresholds = languageSpecificThresholds[riskMetric] const nodeMetricValue = node.attributes[riskMetric] const nodeRlocValue = node.attributes[AREA_METRIC] if (nodeMetricValue <= thresholds.percentile70) { rlocRisk.lowRisk += nodeRlocValue } else if (nodeMetricValue <= thresholds.percentile80) { rlocRisk.moderateRisk += nodeRlocValue } else if (nodeMetricValue <= thresholds.percentile90) { rlocRisk.highRisk += nodeRlocValue } else { rlocRisk.veryHighRisk += nodeRlocValue } } export function getPercentagesOfRiskProfile(rlocRisk: RiskProfile): RiskProfile { const [lowRisk, moderateRisk, highRisk, veryHighRisk] = percentRound([ rlocRisk.lowRisk, rlocRisk.moderateRisk, rlocRisk.highRisk, rlocRisk.veryHighRisk ]) return { lowRisk, moderateRisk, highRisk, veryHighRisk } } |