let child1Row = ui.measureRow(/^Child 1/); | let child1Row = ui.measureRow(/^Child 1/); | ||||
[ | [ | ||||
['Releasability', 'OK'], | ['Releasability', 'OK'], | ||||
['security', 'C'], | |||||
['Reliability', 'C'], | ['Reliability', 'C'], | ||||
['vulnerabilities', 'C'], | |||||
['security_hotspots', 'C'], | |||||
['Maintainability', 'C'], | ['Maintainability', 'C'], | ||||
['security_review', 'C'], | |||||
['ncloc', '3'], | ['ncloc', '3'], | ||||
['last_analysis_date', '2022-02-01'], | ['last_analysis_date', '2022-02-01'], | ||||
].forEach(([domain, value]) => { | ].forEach(([domain, value]) => { | ||||
let child2Row = ui.measureRow(/^Child 2/); | let child2Row = ui.measureRow(/^Child 2/); | ||||
[ | [ | ||||
['Releasability', 'ERROR'], | ['Releasability', 'ERROR'], | ||||
['security', '—'], | |||||
['Reliability', '—'], | ['Reliability', '—'], | ||||
['vulnerabilities', '—'], | |||||
['security_hotspots', '—'], | |||||
['Maintainability', '—'], | ['Maintainability', '—'], | ||||
['security_review', '—'], | |||||
['ncloc', '—'], | ['ncloc', '—'], | ||||
['last_analysis_date', '—'], | ['last_analysis_date', '—'], | ||||
].forEach(([domain, value]) => { | ].forEach(([domain, value]) => { | ||||
child1Row = ui.measureRow(/^Child 1/); | child1Row = ui.measureRow(/^Child 1/); | ||||
[ | [ | ||||
['Releasability', 'OK'], | ['Releasability', 'OK'], | ||||
['security', 'B'], | |||||
['Reliability', 'B'], | ['Reliability', 'B'], | ||||
['vulnerabilities', 'B'], | |||||
['security_hotspots', 'B'], | |||||
['Maintainability', 'B'], | ['Maintainability', 'B'], | ||||
['security_review', 'B'], | |||||
['ncloc', '2'], | ['ncloc', '2'], | ||||
].forEach(([domain, value]) => { | ].forEach(([domain, value]) => { | ||||
expect(ui.measureValueCell(child1Row, domain, value)).toBeInTheDocument(); | expect(ui.measureValueCell(child1Row, domain, value)).toBeInTheDocument(); | ||||
child2Row = ui.measureRow(/^Child 2/); | child2Row = ui.measureRow(/^Child 2/); | ||||
[ | [ | ||||
['Releasability', 'ERROR'], | ['Releasability', 'ERROR'], | ||||
['security', '—'], | |||||
['Reliability', '—'], | ['Reliability', '—'], | ||||
['vulnerabilities', '—'], | |||||
['security_hotspots', '—'], | |||||
['Maintainability', '—'], | ['Maintainability', '—'], | ||||
['security_review', '—'], | |||||
['ncloc', '—'], | ['ncloc', '—'], | ||||
].forEach(([domain, value]) => { | ].forEach(([domain, value]) => { | ||||
expect(ui.measureValueCell(child2Row, domain, value)).toBeInTheDocument(); | expect(ui.measureValueCell(child2Row, domain, value)).toBeInTheDocument(); |
exports[`getCodeMetrics should return the right metrics for portfolios 1`] = ` | exports[`getCodeMetrics should return the right metrics for portfolios 1`] = ` | ||||
[ | [ | ||||
"releasability_rating", | "releasability_rating", | ||||
"new_reliability_rating", | |||||
"new_security_rating", | "new_security_rating", | ||||
"new_security_review_rating", | |||||
"new_reliability_rating", | |||||
"new_maintainability_rating", | "new_maintainability_rating", | ||||
"new_security_review_rating", | |||||
"new_lines", | "new_lines", | ||||
"releasability_rating", | "releasability_rating", | ||||
"reliability_rating", | |||||
"security_rating", | "security_rating", | ||||
"security_review_rating", | |||||
"reliability_rating", | |||||
"sqale_rating", | "sqale_rating", | ||||
"security_review_rating", | |||||
"ncloc", | "ncloc", | ||||
] | ] | ||||
`; | `; | ||||
exports[`getCodeMetrics should return the right metrics for portfolios 2`] = ` | exports[`getCodeMetrics should return the right metrics for portfolios 2`] = ` | ||||
[ | [ | ||||
"releasability_rating", | "releasability_rating", | ||||
"new_reliability_rating", | |||||
"new_security_rating", | "new_security_rating", | ||||
"new_security_review_rating", | |||||
"new_reliability_rating", | |||||
"new_maintainability_rating", | "new_maintainability_rating", | ||||
"new_security_review_rating", | |||||
"new_lines", | "new_lines", | ||||
"releasability_rating", | "releasability_rating", | ||||
"reliability_rating", | |||||
"security_rating", | "security_rating", | ||||
"security_review_rating", | |||||
"reliability_rating", | |||||
"sqale_rating", | "sqale_rating", | ||||
"security_review_rating", | |||||
"ncloc", | "ncloc", | ||||
"alert_status", | "alert_status", | ||||
] | ] | ||||
exports[`getCodeMetrics should return the right metrics for portfolios 3`] = ` | exports[`getCodeMetrics should return the right metrics for portfolios 3`] = ` | ||||
[ | [ | ||||
"releasability_rating", | "releasability_rating", | ||||
"new_reliability_rating", | |||||
"new_security_rating", | "new_security_rating", | ||||
"new_security_review_rating", | |||||
"new_reliability_rating", | |||||
"new_maintainability_rating", | "new_maintainability_rating", | ||||
"new_security_review_rating", | |||||
"new_lines", | "new_lines", | ||||
"alert_status", | "alert_status", | ||||
] | ] | ||||
exports[`getCodeMetrics should return the right metrics for portfolios 4`] = ` | exports[`getCodeMetrics should return the right metrics for portfolios 4`] = ` | ||||
[ | [ | ||||
"releasability_rating", | "releasability_rating", | ||||
"reliability_rating", | |||||
"security_rating", | "security_rating", | ||||
"security_review_rating", | |||||
"reliability_rating", | |||||
"sqale_rating", | "sqale_rating", | ||||
"security_review_rating", | |||||
"ncloc", | "ncloc", | ||||
"alert_status", | "alert_status", | ||||
] | ] |
handleSelectNewCode: (newCodeSelected: boolean) => void; | handleSelectNewCode: (newCodeSelected: boolean) => void; | ||||
} | } | ||||
export default function CodeAppRenderer(props: Props) { | |||||
export default function CodeAppRenderer(props: Readonly<Props>) { | |||||
const { | const { | ||||
branchLike, | branchLike, | ||||
component, | component, |
if (isPortfolio) { | if (isPortfolio) { | ||||
columns = [ | columns = [ | ||||
translate('metric_domain.Releasability'), | translate('metric_domain.Releasability'), | ||||
translate('portfolio.metric_domain.security'), | |||||
translate('metric_domain.Reliability'), | translate('metric_domain.Reliability'), | ||||
translate('portfolio.metric_domain.vulnerabilities'), | |||||
translate('portfolio.metric_domain.security_hotspots'), | |||||
translate('metric_domain.Maintainability'), | translate('metric_domain.Maintainability'), | ||||
translate('portfolio.metric_domain.security_review'), | |||||
translate('metric.ncloc.name'), | translate('metric.ncloc.name'), | ||||
]; | ]; | ||||
const PORTFOLIO_METRICS = [ | const PORTFOLIO_METRICS = [ | ||||
MetricKey.releasability_rating, | MetricKey.releasability_rating, | ||||
MetricKey.reliability_rating, | |||||
MetricKey.security_rating, | MetricKey.security_rating, | ||||
MetricKey.security_review_rating, | |||||
MetricKey.reliability_rating, | |||||
MetricKey.sqale_rating, | MetricKey.sqale_rating, | ||||
MetricKey.security_review_rating, | |||||
MetricKey.ncloc, | MetricKey.ncloc, | ||||
]; | ]; | ||||
const NEW_PORTFOLIO_METRICS = [ | const NEW_PORTFOLIO_METRICS = [ | ||||
MetricKey.releasability_rating, | MetricKey.releasability_rating, | ||||
MetricKey.new_reliability_rating, | |||||
MetricKey.new_security_rating, | MetricKey.new_security_rating, | ||||
MetricKey.new_security_review_rating, | |||||
MetricKey.new_reliability_rating, | |||||
MetricKey.new_maintainability_rating, | MetricKey.new_maintainability_rating, | ||||
MetricKey.new_security_review_rating, | |||||
MetricKey.new_lines, | MetricKey.new_lines, | ||||
]; | ]; | ||||
import * as React from 'react'; | import * as React from 'react'; | ||||
import { FormattedMessage, useIntl } from 'react-intl'; | import { FormattedMessage, useIntl } from 'react-intl'; | ||||
import DocumentationLink from '../common/DocumentationLink'; | import DocumentationLink from '../common/DocumentationLink'; | ||||
import { ComponentQualifier } from '../../types/component'; | |||||
interface AnalysisMissingInfoMessageProps { | interface AnalysisMissingInfoMessageProps { | ||||
qualifier: string; | qualifier: string; | ||||
}: Readonly<AnalysisMissingInfoMessageProps>) { | }: Readonly<AnalysisMissingInfoMessageProps>) { | ||||
const intl = useIntl(); | const intl = useIntl(); | ||||
if (qualifier === ComponentQualifier.Portfolio) { | |||||
return null; | |||||
} | |||||
return ( | return ( | ||||
<FlagMessage variant="info" className={className}> | <FlagMessage variant="info" className={className}> | ||||
<FormattedMessage | <FormattedMessage |
portfolio.number_of_projects=Number of project branches | portfolio.number_of_projects=Number of project branches | ||||
portfolio.number_of_lines=Number of lines of code | portfolio.number_of_lines=Number of lines of code | ||||
portfolio.metric_domain.vulnerabilities=Security Vulnerabilities | |||||
portfolio.metric_domain.security_hotspots=Security Review | |||||
portfolio.metric_domain.security=Security | |||||
portfolio.metric_domain.security_review=Security Review | |||||
#------------------------------------------------------------------------------ | #------------------------------------------------------------------------------ | ||||
# | # |