/* * Copyright (c) 2025 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { AVERAGE_LINE_FOR_REPAIRE_RULE_COEFFICIENT, NPAI_REPAIRE_WORKLOADA_COEFFICIEN, TEST_DEBUG_WORKLOAD_COEFFICIENT } from '../../utils/consts/WorkloadRelatedConst'; import type { FloderScanResultInfo } from './FloderScanResultInfo'; import type { ProblemNumbersInfo } from './ProblemNumbersInfo'; export class WorkLoadInfo { scanFilePathList: string[] = []; totalArkTSCodeLines = 0; totalCAndCPPCodeLines = 0; totalNapiCodeLines = 0; totalJsCodeLines = 0; totalTsCodeLines = 0; totalJsonCodeLines = 0; totalXmlCodeLines = 0; addFloderResult(result: FloderScanResultInfo): void { this.scanFilePathList.push(result.normalizedPath); this.totalArkTSCodeLines += result.arkTSCodeLines; this.totalCAndCPPCodeLines += result.cAndCPPCodeLines; this.totalNapiCodeLines += result.napiCodeLines; this.totalJsCodeLines += result.jsCodeLines; this.totalTsCodeLines += result.tsCodeLines; this.totalJsonCodeLines += result.jsonCodeLines; this.totalXmlCodeLines += result.xmlCodeLines; } calculateFixRate(problemNumbers: ProblemNumbersInfo): string { const totalLines = this.totalArkTSCodeLines + this.totalCAndCPPCodeLines; if (totalLines <= 0) { return '0.00%'; } const problemCount = problemNumbers.needToManualFixproblemNumbers; const ratio = (problemCount * AVERAGE_LINE_FOR_REPAIRE_RULE_COEFFICIENT * TEST_DEBUG_WORKLOAD_COEFFICIENT + this.totalNapiCodeLines * NPAI_REPAIRE_WORKLOADA_COEFFICIEN) / totalLines; return `${(ratio * 100).toFixed(2)}%`; } }