/* * SonarQube * Copyright (C) 2009-2024 SonarSource SA * mailto:info AT sonarsource DOT com * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import { Dict, Metric } from '../../types/types'; export const DEFAULT_METRICS: Dict = { new_technical_debt: { key: 'new_technical_debt', type: 'WORK_DUR', name: 'Added Technical Debt', description: 'Added technical debt', domain: 'Maintainability', direction: -1, qualitative: true, hidden: false, }, blocker_violations: { key: 'blocker_violations', type: 'INT', name: 'Blocker Issues', description: 'Blocker issues', domain: 'Issues', direction: -1, qualitative: true, hidden: false, }, bugs: { key: 'bugs', type: 'INT', name: 'Bugs', description: 'Bugs', domain: 'Reliability', direction: -1, qualitative: false, hidden: false, }, classes: { key: 'classes', type: 'INT', name: 'Classes', description: 'Classes', domain: 'Size', direction: -1, qualitative: false, hidden: false, }, code_smells: { key: 'code_smells', type: 'INT', name: 'Code Smells', description: 'Code Smells', domain: 'Maintainability', direction: -1, qualitative: false, hidden: false, }, cognitive_complexity: { key: 'cognitive_complexity', type: 'INT', name: 'Cognitive Complexity', description: 'Cognitive complexity', domain: 'Complexity', direction: -1, qualitative: false, hidden: false, }, comment_lines: { key: 'comment_lines', type: 'INT', name: 'Comment Lines', description: 'Number of comment lines', domain: 'Size', direction: 1, qualitative: false, hidden: false, }, comment_lines_data: { key: 'comment_lines_data', type: 'DATA', name: 'comment_lines_data', domain: 'Size', direction: 0, qualitative: false, hidden: true, }, comment_lines_density: { key: 'comment_lines_density', type: 'PERCENT', name: 'Comments (%)', description: 'Comments balanced by ncloc + comment lines', domain: 'Size', direction: 1, qualitative: true, hidden: false, decimalScale: 1, }, class_complexity: { key: 'class_complexity', type: 'FLOAT', name: 'Complexity / Class', description: 'Complexity average by class', domain: 'Complexity', direction: -1, qualitative: true, hidden: true, decimalScale: 1, }, file_complexity: { key: 'file_complexity', type: 'FLOAT', name: 'Complexity / File', description: 'Complexity average by file', domain: 'Complexity', direction: -1, qualitative: true, hidden: true, decimalScale: 1, }, function_complexity: { key: 'function_complexity', type: 'FLOAT', name: 'Complexity / Function', description: 'Complexity average by function', domain: 'Complexity', direction: -1, qualitative: true, hidden: true, decimalScale: 1, }, complexity_in_classes: { key: 'complexity_in_classes', type: 'INT', name: 'Complexity in Classes', description: 'Cyclomatic complexity in classes', domain: 'Complexity', direction: -1, qualitative: false, hidden: true, }, complexity_in_functions: { key: 'complexity_in_functions', type: 'INT', name: 'Complexity in Functions', description: 'Cyclomatic complexity in functions', domain: 'Complexity', direction: -1, qualitative: false, hidden: true, }, branch_coverage: { key: 'branch_coverage', type: 'PERCENT', name: 'Condition Coverage', description: 'Condition coverage', domain: 'Coverage', direction: 1, qualitative: true, hidden: false, decimalScale: 1, }, new_branch_coverage: { key: 'new_branch_coverage', type: 'PERCENT', name: 'Condition Coverage on New Code', description: 'Condition coverage of new/changed code', domain: 'Coverage', direction: 1, qualitative: true, hidden: false, decimalScale: 1, }, conditions_to_cover: { key: 'conditions_to_cover', type: 'INT', name: 'Conditions to Cover', description: 'Conditions to cover', domain: 'Coverage', direction: -1, qualitative: false, hidden: false, }, new_conditions_to_cover: { key: 'new_conditions_to_cover', type: 'INT', name: 'Conditions to Cover on New Code', description: 'Conditions to cover on new code', domain: 'Coverage', direction: -1, qualitative: false, hidden: false, }, confirmed_issues: { key: 'confirmed_issues', type: 'INT', name: 'Confirmed Issues', description: 'Confirmed issues', domain: 'Issues', direction: -1, qualitative: true, hidden: false, }, coverage: { key: 'coverage', type: 'PERCENT', name: 'Coverage', description: 'Coverage by tests', domain: 'Coverage', direction: 1, qualitative: true, hidden: false, decimalScale: 1, }, new_coverage: { key: 'new_coverage', type: 'PERCENT', name: 'Coverage on New Code', description: 'Coverage of new/changed code', domain: 'Coverage', direction: 1, qualitative: true, hidden: false, decimalScale: 1, }, critical_violations: { key: 'critical_violations', type: 'INT', name: 'Critical Issues', description: 'Critical issues', domain: 'Issues', direction: -1, qualitative: true, hidden: false, }, complexity: { key: 'complexity', type: 'INT', name: 'Cyclomatic Complexity', description: 'Cyclomatic complexity', domain: 'Complexity', direction: -1, qualitative: false, hidden: false, }, last_commit_date: { key: 'last_commit_date', type: 'MILLISEC', name: 'Date of Last Commit', domain: 'SCM', direction: 0, qualitative: false, hidden: true, }, development_cost: { key: 'development_cost', type: 'STRING', name: 'Development Cost', description: 'Development cost', domain: 'Maintainability', direction: -1, qualitative: true, hidden: true, }, new_development_cost: { key: 'new_development_cost', type: 'FLOAT', name: 'Development Cost on New Code', description: 'Development cost on new code', domain: 'Maintainability', direction: -1, qualitative: true, hidden: true, decimalScale: 1, }, directories: { key: 'directories', type: 'INT', name: 'Directories', description: 'Directories', domain: 'Size', direction: -1, qualitative: false, hidden: false, }, duplicated_blocks: { key: 'duplicated_blocks', type: 'INT', name: 'Duplicated Blocks', description: 'Duplicated blocks', domain: 'Duplications', direction: -1, qualitative: true, hidden: false, }, new_duplicated_blocks: { key: 'new_duplicated_blocks', type: 'INT', name: 'Duplicated Blocks on New Code', description: 'Duplicated blocks on new code', domain: 'Duplications', direction: -1, qualitative: true, hidden: false, }, duplicated_files: { key: 'duplicated_files', type: 'INT', name: 'Duplicated Files', description: 'Duplicated files', domain: 'Duplications', direction: -1, qualitative: true, hidden: false, }, duplicated_lines: { key: 'duplicated_lines', type: 'INT', name: 'Duplicated Lines', description: 'Duplicated lines', domain: 'Duplications', direction: -1, qualitative: true, hidden: false, }, duplicated_lines_density: { key: 'duplicated_lines_density', type: 'PERCENT', name: 'Duplicated Lines (%)', description: 'Duplicated lines balanced by statements', domain: 'Duplications', direction: -1, qualitative: true, hidden: false, decimalScale: 1, }, new_duplicated_lines_density: { key: 'new_duplicated_lines_density', type: 'PERCENT', name: 'Duplicated Lines (%) on New Code', description: 'Duplicated lines (%) on new code balanced by statements', domain: 'Duplications', direction: -1, qualitative: true, hidden: false, decimalScale: 1, }, new_duplicated_lines: { key: 'new_duplicated_lines', type: 'INT', name: 'Duplicated Lines on New Code', description: 'Duplicated Lines on New Code', domain: 'Duplications', direction: -1, qualitative: true, hidden: false, }, duplications_data: { key: 'duplications_data', type: 'DATA', name: 'Duplication Details', description: 'Duplications details', domain: 'Duplications', direction: 0, qualitative: false, hidden: false, }, effort_to_reach_maintainability_rating_a: { key: 'effort_to_reach_maintainability_rating_a', type: 'WORK_DUR', name: 'Effort to Reach Maintainability Rating A', description: 'Effort to reach maintainability rating A', domain: 'Maintainability', direction: -1, qualitative: true, hidden: false, }, executable_lines_data: { key: 'executable_lines_data', type: 'DATA', name: 'executable_lines_data', domain: 'Coverage', direction: 0, qualitative: false, hidden: true, }, false_positive_issues: { key: 'false_positive_issues', type: 'INT', name: 'False Positive Issues', description: 'False positive issues', domain: 'Issues', direction: -1, qualitative: false, hidden: false, }, file_complexity_distribution: { key: 'file_complexity_distribution', type: 'DISTRIB', name: 'File Distribution / Complexity', description: 'Files distribution /complexity', domain: 'Complexity', direction: 0, qualitative: true, hidden: true, }, files: { key: 'files', type: 'INT', name: 'Files', description: 'Number of files', domain: 'Size', direction: -1, qualitative: false, hidden: false, }, function_complexity_distribution: { key: 'function_complexity_distribution', type: 'DISTRIB', name: 'Function Distribution / Complexity', description: 'Functions distribution /complexity', domain: 'Complexity', direction: 0, qualitative: true, hidden: true, }, functions: { key: 'functions', type: 'INT', name: 'Functions', description: 'Functions', domain: 'Size', direction: -1, qualitative: false, hidden: false, }, generated_lines: { key: 'generated_lines', type: 'INT', name: 'Generated Lines', description: 'Number of generated lines', domain: 'Size', direction: -1, qualitative: false, hidden: false, }, generated_ncloc: { key: 'generated_ncloc', type: 'INT', name: 'Generated Lines of Code', description: 'Generated non Commenting Lines of Code', domain: 'Size', direction: -1, qualitative: false, hidden: false, }, info_violations: { key: 'info_violations', type: 'INT', name: 'Info Issues', description: 'Info issues', domain: 'Issues', direction: 0, qualitative: true, hidden: false, }, violations: { key: 'violations', type: 'INT', name: 'Issues', description: 'Issues', domain: 'Issues', direction: -1, qualitative: true, hidden: false, }, last_change_on_maintainability_rating: { key: 'last_change_on_maintainability_rating', type: 'DATA', name: 'Last Change on Maintainability Rating', domain: 'Maintainability', direction: 0, qualitative: false, hidden: true, }, last_change_on_releasability_rating: { key: 'last_change_on_releasability_rating', type: 'DATA', name: 'Last Change on Releasability Rating', domain: 'Releasability', direction: 0, qualitative: false, hidden: true, }, last_change_on_reliability_rating: { key: 'last_change_on_reliability_rating', type: 'DATA', name: 'Last Change on Reliability Rating', domain: 'Reliability', direction: 0, qualitative: false, hidden: true, }, last_change_on_security_rating: { key: 'last_change_on_security_rating', type: 'DATA', name: 'Last Change on Security Rating', domain: 'Security', direction: 0, qualitative: false, hidden: true, }, last_change_on_security_review_rating: { key: 'last_change_on_security_review_rating', type: 'DATA', name: 'Last Change on Security Review Rating', domain: 'Security', direction: 0, qualitative: false, hidden: true, }, line_coverage: { key: 'line_coverage', type: 'PERCENT', name: 'Line Coverage', description: 'Line coverage', domain: 'Coverage', direction: 1, qualitative: true, hidden: false, decimalScale: 1, }, new_line_coverage: { key: 'new_line_coverage', type: 'PERCENT', name: 'Line Coverage on New Code', description: 'Line coverage of added/changed code', domain: 'Coverage', direction: 1, qualitative: true, hidden: false, decimalScale: 1, }, lines: { key: 'lines', type: 'INT', name: 'Lines', description: 'Lines', domain: 'Size', direction: -1, qualitative: false, hidden: false, }, ncloc: { key: 'ncloc', type: 'INT', name: 'Lines of Code', description: 'Non commenting lines of code', domain: 'Size', direction: -1, qualitative: false, hidden: false, }, ncloc_language_distribution: { key: 'ncloc_language_distribution', type: 'DATA', name: 'Lines of Code Per Language', description: 'Non Commenting Lines of Code Distributed By Language', domain: 'Size', direction: -1, qualitative: false, hidden: false, }, lines_to_cover: { key: 'lines_to_cover', type: 'INT', name: 'Lines to Cover', description: 'Lines to cover', domain: 'Coverage', direction: -1, qualitative: false, hidden: false, }, new_lines_to_cover: { key: 'new_lines_to_cover', type: 'INT', name: 'Lines to Cover on New Code', description: 'Lines to cover on new code', domain: 'Coverage', direction: -1, qualitative: false, hidden: false, }, leak_projects: { key: 'leak_projects', type: 'DATA', name: 'List of technical projects with their leaks', direction: 0, qualitative: false, hidden: true, }, sqale_rating: { key: 'sqale_rating', type: 'RATING', name: 'Maintainability Rating', description: 'A-to-E rating based on the technical debt ratio', domain: 'Maintainability', direction: 0, qualitative: true, hidden: false, }, maintainability_rating_distribution: { key: 'maintainability_rating_distribution', type: 'DATA', name: 'Maintainability Rating Distribution', description: 'Maintainability rating distribution', domain: 'Maintainability', direction: -1, qualitative: true, hidden: true, }, new_maintainability_rating_distribution: { key: 'new_maintainability_rating_distribution', type: 'DATA', name: 'Maintainability Rating Distribution on New Code', description: 'Maintainability rating distribution on new code', domain: 'Maintainability', direction: -1, qualitative: true, hidden: true, }, new_maintainability_rating: { key: 'new_maintainability_rating', type: 'RATING', name: 'Maintainability Rating on New Code', description: 'Maintainability rating on new code', domain: 'Maintainability', direction: -1, qualitative: true, hidden: false, }, major_violations: { key: 'major_violations', type: 'INT', name: 'Major Issues', description: 'Major issues', domain: 'Issues', direction: -1, qualitative: true, hidden: false, }, minor_violations: { key: 'minor_violations', type: 'INT', name: 'Minor Issues', description: 'Minor issues', domain: 'Issues', direction: -1, qualitative: true, hidden: false, }, ncloc_data: { key: 'ncloc_data', type: 'DATA', name: 'ncloc_data', domain: 'Size', direction: 0, qualitative: false, hidden: true, }, new_blocker_violations: { key: 'new_blocker_violations', type: 'INT', name: 'New Blocker Issues', description: 'New Blocker issues', domain: 'Issues', direction: -1, qualitative: true, hidden: false, }, new_bugs: { key: 'new_bugs', type: 'INT', name: 'New Bugs', description: 'New Bugs', domain: 'Reliability', direction: -1, qualitative: true, hidden: false, }, new_code_smells: { key: 'new_code_smells', type: 'INT', name: 'New Code Smells', description: 'New Code Smells', domain: 'Maintainability', direction: -1, qualitative: true, hidden: false, }, new_critical_violations: { key: 'new_critical_violations', type: 'INT', name: 'New Critical Issues', description: 'New Critical issues', domain: 'Issues', direction: -1, qualitative: true, hidden: false, }, new_info_violations: { key: 'new_info_violations', type: 'INT', name: 'New Info Issues', description: 'New Info issues', domain: 'Issues', direction: -1, qualitative: true, hidden: false, }, new_violations: { key: 'new_violations', type: 'INT', name: 'New Issues', description: 'New issues', domain: 'Issues', direction: -1, qualitative: true, hidden: false, }, new_lines: { key: 'new_lines', type: 'INT', name: 'New Lines', description: 'New lines', domain: 'Size', direction: -1, qualitative: false, hidden: false, }, new_major_violations: { key: 'new_major_violations', type: 'INT', name: 'New Major Issues', description: 'New Major issues', domain: 'Issues', direction: -1, qualitative: true, hidden: false, }, new_minor_violations: { key: 'new_minor_violations', type: 'INT', name: 'New Minor Issues', description: 'New Minor issues', domain: 'Issues', direction: -1, qualitative: true, hidden: false, }, new_security_hotspots: { key: 'new_security_hotspots', type: 'INT', name: 'New Security Hotspots', description: 'New Security Hotspots', domain: 'SecurityReview', direction: -1, qualitative: true, hidden: false, }, new_vulnerabilities: { key: 'new_vulnerabilities', type: 'INT', name: 'New Vulnerabilities', description: 'New Vulnerabilities', domain: 'Security', direction: -1, qualitative: true, hidden: false, }, unanalyzed_c: { key: 'unanalyzed_c', type: 'INT', name: 'Number of unanalyzed c files', domain: 'Size', direction: -1, qualitative: false, hidden: true, }, unanalyzed_cpp: { key: 'unanalyzed_cpp', type: 'INT', name: 'Number of unanalyzed c++ files', domain: 'Size', direction: -1, qualitative: false, hidden: true, }, open_issues: { key: 'open_issues', type: 'INT', name: 'Open Issues', description: 'Open issues', domain: 'Issues', direction: -1, qualitative: false, hidden: false, }, quality_profiles: { key: 'quality_profiles', type: 'DATA', name: 'Profiles', description: 'Details of quality profiles used during analysis', domain: 'General', direction: 0, qualitative: false, hidden: true, }, projects: { key: 'projects', type: 'INT', name: 'Project branches', description: 'Number of project branches', domain: 'Size', direction: -1, qualitative: false, hidden: false, }, public_api: { key: 'public_api', type: 'INT', name: 'Public API', description: 'Public API', domain: 'Documentation', direction: -1, qualitative: false, hidden: true, }, public_documented_api_density: { key: 'public_documented_api_density', type: 'PERCENT', name: 'Public Documented API (%)', description: 'Public documented classes and functions balanced by ncloc', domain: 'Documentation', direction: 1, qualitative: true, hidden: true, decimalScale: 1, }, public_undocumented_api: { key: 'public_undocumented_api', type: 'INT', name: 'Public Undocumented API', description: 'Public undocumented classes, functions and variables', domain: 'Documentation', direction: -1, qualitative: true, hidden: true, }, quality_gate_details: { key: 'quality_gate_details', type: 'DATA', name: 'Quality Gate Details', description: 'The project detailed status with regard to its quality gate', domain: 'General', direction: 0, qualitative: false, hidden: false, }, alert_status: { key: 'alert_status', type: 'LEVEL', name: 'Quality Gate Status', description: 'The project status with regard to its quality gate.', domain: 'Releasability', direction: 1, qualitative: true, hidden: false, }, releasability_rating: { key: 'releasability_rating', type: 'RATING', name: 'Releasability rating', domain: 'Releasability', direction: -1, qualitative: true, hidden: false, }, releasability_rating_distribution: { key: 'releasability_rating_distribution', type: 'DATA', name: 'Releasability Rating Distribution', description: 'Releasability rating distribution', domain: 'Releasability', direction: -1, qualitative: true, hidden: true, }, reliability_issues: { key: 'reliability_issues', type: 'DATA', name: 'Reliability', description: 'Reliability issues', direction: 0, qualitative: false, hidden: false, }, new_reliability_issues: { key: 'new_reliability_issues', type: 'DATA', name: 'New Reliability', description: 'New Reliability issues', direction: 0, qualitative: false, hidden: false, }, reliability_rating: { key: 'reliability_rating', type: 'RATING', name: 'Reliability Rating', description: 'Reliability rating', domain: 'Reliability', direction: -1, qualitative: true, hidden: false, }, reliability_rating_distribution: { key: 'reliability_rating_distribution', type: 'DATA', name: 'Reliability Rating Distribution', description: 'Maintainability rating distribution', domain: 'Reliability', direction: -1, qualitative: true, hidden: true, }, new_reliability_rating_distribution: { key: 'new_reliability_rating_distribution', type: 'DATA', name: 'Reliability Rating Distribution on New Code', description: 'Maintainability rating distribution on new code', domain: 'Reliability', direction: -1, qualitative: true, hidden: true, }, new_reliability_rating: { key: 'new_reliability_rating', type: 'RATING', name: 'Reliability Rating on New Code', description: 'Reliability rating on new code', domain: 'Reliability', direction: -1, qualitative: true, hidden: false, }, reliability_remediation_effort: { key: 'reliability_remediation_effort', type: 'WORK_DUR', name: 'Reliability Remediation Effort', description: 'Reliability Remediation Effort', domain: 'Reliability', direction: -1, qualitative: true, hidden: false, }, new_reliability_remediation_effort: { key: 'new_reliability_remediation_effort', type: 'WORK_DUR', name: 'Reliability Remediation Effort on New Code', description: 'Reliability remediation effort on new code', domain: 'Reliability', direction: -1, qualitative: true, hidden: false, }, reopened_issues: { key: 'reopened_issues', type: 'INT', name: 'Reopened Issues', description: 'Reopened issues', domain: 'Issues', direction: -1, qualitative: true, hidden: false, }, security_hotspots: { key: 'security_hotspots', type: 'INT', name: 'Security Hotspots', description: 'Security Hotspots', domain: 'SecurityReview', direction: -1, qualitative: false, hidden: false, }, security_hotspots_reviewed: { key: 'security_hotspots_reviewed', type: 'PERCENT', name: 'Security Hotspots Reviewed', description: 'Percentage of Security Hotspots Reviewed', domain: 'SecurityReview', direction: 1, qualitative: true, hidden: false, decimalScale: 1, }, new_security_hotspots_reviewed: { key: 'new_security_hotspots_reviewed', type: 'PERCENT', name: 'Security Hotspots Reviewed on New Code', description: 'Percentage of Security Hotspots Reviewed on New Code', domain: 'SecurityReview', direction: 1, qualitative: true, hidden: false, decimalScale: 1, }, security_issues: { key: 'security_issues', type: 'DATA', name: 'Security', description: 'Security issues', direction: 0, qualitative: false, hidden: false, }, new_security_issues: { key: 'new_security_issues', type: 'DATA', name: 'Security', description: 'New Security issues', domain: 'Issues', direction: 0, qualitative: false, hidden: false, }, security_rating: { key: 'security_rating', type: 'RATING', name: 'Security Rating', description: 'Security rating', domain: 'Security', direction: -1, qualitative: true, hidden: false, }, security_rating_distribution: { key: 'security_rating_distribution', type: 'DATA', name: 'Security Rating Distribution', description: 'Security rating distribution', domain: 'Security', direction: -1, qualitative: true, hidden: true, }, new_security_rating_distribution: { key: 'new_security_rating_distribution', type: 'DATA', name: 'Security Rating Distribution on New Code', description: 'Security rating distribution on new code', domain: 'Security', direction: -1, qualitative: true, hidden: true, }, new_security_rating: { key: 'new_security_rating', type: 'RATING', name: 'Security Rating on New Code', description: 'Security rating on new code', domain: 'Security', direction: -1, qualitative: true, hidden: false, }, security_remediation_effort: { key: 'security_remediation_effort', type: 'WORK_DUR', name: 'Security Remediation Effort', description: 'Security remediation effort', domain: 'Security', direction: -1, qualitative: true, hidden: false, }, new_security_remediation_effort: { key: 'new_security_remediation_effort', type: 'WORK_DUR', name: 'Security Remediation Effort on New Code', description: 'Security remediation effort on new code', domain: 'Security', direction: -1, qualitative: true, hidden: false, }, security_review_rating: { key: 'security_review_rating', type: 'RATING', name: 'Security Review Rating', description: 'Security Review Rating', domain: 'SecurityReview', direction: -1, qualitative: true, hidden: false, }, security_review_rating_distribution: { key: 'security_review_rating_distribution', type: 'DATA', name: 'Security Review Rating Distribution', description: 'Security review rating distribution', domain: 'Security', direction: -1, qualitative: true, hidden: true, }, new_security_review_rating_distribution: { key: 'new_security_review_rating_distribution', type: 'DATA', name: 'Security Review Rating Distribution on New Code', description: 'Security review rating distribution on new code', domain: 'Security', direction: -1, qualitative: true, hidden: true, }, new_security_review_rating: { key: 'new_security_review_rating', type: 'RATING', name: 'Security Review Rating on New Code', description: 'Security Review Rating on New Code', domain: 'SecurityReview', direction: -1, qualitative: true, hidden: false, }, security_hotspots_reviewed_status: { key: 'security_hotspots_reviewed_status', type: 'INT', name: 'Security Review Reviewed Status', description: 'Security Review Reviewed Status', domain: 'SecurityReview', direction: -1, qualitative: false, hidden: true, }, new_security_hotspots_reviewed_status: { key: 'new_security_hotspots_reviewed_status', type: 'INT', name: 'Security Review Reviewed Status on New Code', description: 'Security Review Reviewed Status on New Code', domain: 'SecurityReview', direction: -1, qualitative: false, hidden: true, }, security_hotspots_to_review_status: { key: 'security_hotspots_to_review_status', type: 'INT', name: 'Security Review To Review Status', description: 'Security Review To Review Status', domain: 'SecurityReview', direction: -1, qualitative: false, hidden: true, }, new_security_hotspots_to_review_status: { key: 'new_security_hotspots_to_review_status', type: 'INT', name: 'Security Review To Review Status on New Code', description: 'Security Review To Review Status on New Code', domain: 'SecurityReview', direction: -1, qualitative: false, hidden: true, }, skipped_tests: { key: 'skipped_tests', type: 'INT', name: 'Skipped Unit Tests', description: 'Number of skipped unit tests', domain: 'Coverage', direction: -1, qualitative: true, hidden: false, }, statements: { key: 'statements', type: 'INT', name: 'Statements', description: 'Number of statements', domain: 'Size', direction: -1, qualitative: false, hidden: false, }, maintainability_issues: { key: 'maintainability_issues', type: 'DATA', name: 'Maintainability', description: 'Maintainability issues', domain: 'Issues', direction: 0, qualitative: false, hidden: false, }, new_maintainability_issues: { key: 'new_maintainability_issues', type: 'DATA', name: 'Maintainability', description: 'New Maintainability issues', domain: 'Issues', direction: 0, qualitative: false, hidden: false, }, sqale_index: { key: 'sqale_index', type: 'WORK_DUR', name: 'Technical Debt', description: 'Total effort (in hours) to fix all the issues on the component and therefore to comply to all the requirements.', domain: 'Maintainability', direction: -1, qualitative: true, hidden: false, }, sqale_debt_ratio: { key: 'sqale_debt_ratio', type: 'PERCENT', name: 'Technical Debt Ratio', description: 'Ratio of the actual technical debt compared to the estimated cost to develop the whole source code from scratch', domain: 'Maintainability', direction: -1, qualitative: true, hidden: false, decimalScale: 1, }, new_sqale_debt_ratio: { key: 'new_sqale_debt_ratio', type: 'PERCENT', name: 'Technical Debt Ratio on New Code', description: 'Technical Debt Ratio of new/changed code.', domain: 'Maintainability', direction: -1, qualitative: true, hidden: false, decimalScale: 1, }, maintainability_rating_effort: { key: 'maintainability_rating_effort', type: 'DATA', name: 'Total number of projects having worst maintainability rating', domain: 'Maintainability', direction: 0, qualitative: false, hidden: true, }, reliability_rating_effort: { key: 'reliability_rating_effort', type: 'DATA', name: 'Total number of projects having worst reliability rating', domain: 'Reliability', direction: 0, qualitative: false, hidden: true, }, security_rating_effort: { key: 'security_rating_effort', type: 'DATA', name: 'Total number of projects having worst security rating', domain: 'Security', direction: 0, qualitative: false, hidden: true, }, security_review_rating_effort: { key: 'security_review_rating_effort', type: 'DATA', name: 'Total number of projects having worst security review rating', domain: 'Security', direction: 0, qualitative: false, hidden: true, }, releasability_effort: { key: 'releasability_effort', type: 'INT', name: 'Total number of projects not production ready', domain: 'Releasability', direction: -1, qualitative: true, hidden: true, }, uncovered_conditions: { key: 'uncovered_conditions', type: 'INT', name: 'Uncovered Conditions', description: 'Uncovered conditions', domain: 'Coverage', direction: -1, qualitative: false, hidden: false, }, new_uncovered_conditions: { key: 'new_uncovered_conditions', type: 'INT', name: 'Uncovered Conditions on New Code', description: 'Uncovered conditions on new code', domain: 'Coverage', direction: -1, qualitative: false, hidden: false, }, uncovered_lines: { key: 'uncovered_lines', type: 'INT', name: 'Uncovered Lines', description: 'Uncovered lines', domain: 'Coverage', direction: -1, qualitative: false, hidden: false, }, new_uncovered_lines: { key: 'new_uncovered_lines', type: 'INT', name: 'Uncovered Lines on New Code', description: 'Uncovered lines on new code', domain: 'Coverage', direction: -1, qualitative: false, hidden: false, }, test_execution_time: { key: 'test_execution_time', type: 'MILLISEC', name: 'Unit Test Duration', description: 'Execution duration of unit tests', domain: 'Coverage', direction: -1, qualitative: false, hidden: false, }, test_errors: { key: 'test_errors', type: 'INT', name: 'Unit Test Errors', description: 'Number of unit test errors', domain: 'Coverage', direction: -1, qualitative: true, hidden: false, }, test_failures: { key: 'test_failures', type: 'INT', name: 'Unit Test Failures', description: 'Number of unit test failures', domain: 'Coverage', direction: -1, qualitative: true, hidden: false, }, tests: { key: 'tests', type: 'INT', name: 'Unit Tests', description: 'Number of unit tests', domain: 'Coverage', direction: 1, qualitative: false, hidden: false, }, test_success_density: { key: 'test_success_density', type: 'PERCENT', name: 'Unit Test Success (%)', description: 'Density of successful unit tests', domain: 'Coverage', direction: 1, qualitative: true, hidden: false, decimalScale: 1, }, vulnerabilities: { key: 'vulnerabilities', type: 'INT', name: 'Vulnerabilities', description: 'Vulnerabilities', domain: 'Security', direction: -1, qualitative: false, hidden: false, }, accepted_issues: { key: 'accepted_issues', type: 'INT', name: 'Accepted Issues', description: 'Accepted issues', domain: 'Issues', direction: -1, qualitative: false, hidden: false, }, new_accepted_issues: { key: 'new_accepted_issues', type: 'INT', name: 'New Accepted Issues', description: 'New Accepted issues', domain: 'Issues', direction: -1, qualitative: false, hidden: false, }, };