Change from metric to rule

The SARIF that we are interpreting has moved away from using `metric`
to the more general term, `rule`. We need to adapt our baseline lines of
code counting to use `rule` as well.
This commit is contained in:
Andrew Eisenberg 2021-05-04 09:38:38 -07:00
parent 8e3540bb01
commit a2312a0bf3
6 changed files with 30 additions and 30 deletions

View file

@ -44,23 +44,23 @@ test("status report fields and search path setting", async (t) => {
sarifFile,
JSON.stringify({
runs: [
// variant 1 uses metricId
// variant 1 uses ruleId
{
properties: {
metricResults: [
{
metricId: `${language}/summary/lines-of-code`,
ruleId: `${language}/summary/lines-of-code`,
value: 123,
},
],
},
},
// variant 2 uses metric.id
// variant 2 uses rule.id
{
properties: {
metricResults: [
{
metric: {
rule: {
id: `${language}/summary/lines-of-code`,
},
value: 123,
@ -166,21 +166,21 @@ test("status report fields and search path setting", async (t) => {
const sarif = JSON.parse(fs.readFileSync(filePath, "utf8"));
t.deepEqual(sarif.runs[0].properties.metricResults, [
{
metricId: `${lang}/summary/lines-of-code`,
ruleId: `${lang}/summary/lines-of-code`,
value: 123,
baseline: lineCount,
},
]);
t.deepEqual(sarif.runs[1].properties.metricResults, [
{
metric: {
rule: {
id: `${lang}/summary/lines-of-code`,
},
value: 123,
baseline: lineCount,
},
]);
// when the metric doesn't exists, it should not be added
// when the rule doesn't exists, it should not be added
t.deepEqual(sarif.runs[2].properties.metricResults, []);
}
});

View file

@ -295,16 +295,16 @@ async function injectLinesOfCode(
const sarif = JSON.parse(fs.readFileSync(sarifFile, "utf8"));
if (Array.isArray(sarif.runs)) {
for (const run of sarif.runs) {
const metricId = `${language}/summary/lines-of-code`;
const ruleId = `${language}/summary/lines-of-code`;
run.properties = run.properties || {};
run.properties.metricResults = run.properties.metricResults || [];
const metric = run.properties.metricResults.find(
// the metric id can be in either of two places
(m) => m.metricId === metricId || m.metric?.id === metricId
const rule = run.properties.metricResults.find(
// the rule id can be in either of two places
(r) => r.ruleId === ruleId || r.rule?.id === ruleId
);
// only add the baseline value if the metric already exists
if (metric) {
metric.baseline = lineCounts[language];
// only add the baseline value if the rule already exists
if (rule) {
rule.baseline = lineCounts[language];
}
}
}