MCPcopy Index your code
hub / github.com/code-pushup/cli / createRunnerFunction

Function createRunnerFunction

packages/plugin-eslint/src/lib/runner/runner.ts:20–69  ·  view source on GitHub ↗
(options: {
  audits: Audit[];
  targets: ESLintTarget[];
  artifacts?: PluginArtifactOptions;
})

Source from the content-addressed store, hash-verified

18import { loadArtifacts } from './utils.js';
19
20export function createRunnerFunction(options: {
21 audits: Audit[];
22 targets: ESLintTarget[];
23 artifacts?: PluginArtifactOptions;
24}): RunnerFunction {
25 const { audits, targets, artifacts } = options;
26 const config: ESLintPluginRunnerConfig = {
27 targets,
28 slugs: audits.map(audit => audit.slug),
29 };
30
31 return async (): Promise<AuditOutputs> => {
32 logger.info(
33 `ESLint plugin executing ${pluralizeToken('lint target', targets.length)}`,
34 );
35
36 const linterOutputs = artifacts
37 ? await loadArtifacts(artifacts)
38 : await asyncSequential(targets, lint);
39
40 const lintResults = mergeLinterOutputs(linterOutputs);
41 const failedAudits = lintResultsToAudits(lintResults);
42
43 const stats = aggregateLintResultsStats(lintResults.results);
44 logger.info(
45 stats.problemsCount === 0
46 ? 'ESLint did not find any problems'
47 : `ESLint found ${pluralizeToken('problem', stats.problemsCount)} from ${pluralizeToken('rule', stats.failedRulesCount)} across ${pluralizeToken('file', stats.failedFilesCount)}`,
48 );
49
50 const totalCount = config.slugs.length;
51 const failedCount = failedAudits.length;
52 const passedCount = totalCount - failedCount;
53 const percentage = roundDecimals((passedCount / totalCount) * 100, 2);
54 logger.info(
55 `${pluralizeToken('audit', passedCount)} passed, ${pluralizeToken('audit', failedCount)} failed (${percentage}% success)`,
56 );
57
58 return config.slugs.map(
59 (slug): AuditOutput =>
60 failedAudits.find(audit => audit.slug === slug) ?? {
61 slug,
62 score: 1,
63 value: 0,
64 displayValue: 'passed',
65 details: { issues: [] },
66 },
67 );
68 };
69}

Callers

nothing calls this directly

Calls 8

pluralizeTokenFunction · 0.90
asyncSequentialFunction · 0.90
roundDecimalsFunction · 0.90
loadArtifactsFunction · 0.85
mergeLinterOutputsFunction · 0.85
lintResultsToAuditsFunction · 0.85
infoMethod · 0.80

Tested by

no test coverage detected