59 lines
1.3 KiB
JavaScript
59 lines
1.3 KiB
JavaScript
import SonarBase from './sonar-base.js'
|
|
import {
|
|
queryParamSchema,
|
|
getLabel,
|
|
positiveMetricColorScale,
|
|
keywords,
|
|
documentation,
|
|
} from './sonar-helpers.js'
|
|
|
|
const metric = 'public_documented_api_density'
|
|
|
|
export default class SonarDocumentedApiDensity extends SonarBase {
|
|
static category = 'analysis'
|
|
|
|
static route = {
|
|
base: `sonar/${metric}`,
|
|
pattern: ':component/:branch*',
|
|
queryParamSchema,
|
|
}
|
|
|
|
static examples = [
|
|
{
|
|
title: 'Sonar Documented API Density',
|
|
namedParams: {
|
|
component: 'org.ow2.petals:petals-se-ase',
|
|
branch: 'master',
|
|
},
|
|
queryParams: {
|
|
server: 'http://sonar.petalslink.com',
|
|
sonarVersion: '4.2',
|
|
},
|
|
staticPreview: this.render({ density: 82 }),
|
|
keywords,
|
|
documentation,
|
|
},
|
|
]
|
|
|
|
static defaultBadgeData = { label: getLabel({ metric }) }
|
|
|
|
static render({ density }) {
|
|
return {
|
|
message: `${density}%`,
|
|
color: positiveMetricColorScale(density),
|
|
}
|
|
}
|
|
|
|
async handle({ component, branch }, { server, sonarVersion }) {
|
|
const json = await this.fetch({
|
|
sonarVersion,
|
|
server,
|
|
component,
|
|
branch,
|
|
metricName: metric,
|
|
})
|
|
const metrics = this.transform({ json, sonarVersion })
|
|
return this.constructor.render({ density: metrics[metric] })
|
|
}
|
|
}
|