UNPKG

@code-pushup/eslint-plugin

Version:

Code PushUp plugin for detecting problems in source code using ESLint.📋

37 lines • 1.9 kB
import { asyncSequential, logger, pluralizeToken, roundDecimals, } from '@code-pushup/utils'; import { lint } from './lint.js'; import { aggregateLintResultsStats } from './stats.js'; import { lintResultsToAudits, mergeLinterOutputs } from './transform.js'; import { loadArtifacts } from './utils.js'; export function createRunnerFunction(options) { const { audits, targets, artifacts } = options; const config = { targets, slugs: audits.map(audit => audit.slug), }; return async () => { logger.info(`ESLint plugin executing ${pluralizeToken('lint target', targets.length)}`); const linterOutputs = artifacts ? await loadArtifacts(artifacts) : await asyncSequential(targets, lint); const lintResults = mergeLinterOutputs(linterOutputs); const failedAudits = lintResultsToAudits(lintResults); const stats = aggregateLintResultsStats(lintResults.results); logger.info(stats.problemsCount === 0 ? 'ESLint did not find any problems' : `ESLint found ${pluralizeToken('problem', stats.problemsCount)} from ${pluralizeToken('rule', stats.failedRulesCount)} across ${pluralizeToken('file', stats.failedFilesCount)}`); const totalCount = config.slugs.length; const failedCount = failedAudits.length; const passedCount = totalCount - failedCount; const percentage = roundDecimals((passedCount / totalCount) * 100, 2); logger.info(`${pluralizeToken('audit', passedCount)} passed, ${pluralizeToken('audit', failedCount)} failed (${percentage}% success)`); return config.slugs.map((slug) => failedAudits.find(audit => audit.slug === slug) ?? { slug, score: 1, value: 0, displayValue: 'passed', details: { issues: [] }, }); }; } //# sourceMappingURL=runner.js.map