Skip to content

Commit 203fdaf

Browse files
committed
Fix usage of rule identifiers
1 parent d3ddbd1 commit 203fdaf

File tree

3 files changed

+54
-10
lines changed

3 files changed

+54
-10
lines changed

code-scanning-export/__tests__/sarif.test.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,50 @@ describe('createSarifReport', () => {
185185
})
186186
expect(report.runs[0].results).toHaveLength(2)
187187
})
188+
189+
it('generate a valid report for PHPStan', () => {
190+
const report = createSarifReport([phpstanAlert])
191+
192+
expect(report).toMatchSchema(sarifSchema)
193+
194+
expect(report).toMatchObject({
195+
version: '2.1.0',
196+
$schema: 'https://json.schemastore.org/sarif-2.1.0.json',
197+
runs: [
198+
{
199+
tool: {
200+
driver: {
201+
name: 'PHPStan',
202+
version: '1.11.x-dev@0055aac',
203+
rules: [
204+
{
205+
id: 'new.static',
206+
shortDescription: { text: '' },
207+
properties: { tags: [] }
208+
}
209+
]
210+
}
211+
},
212+
results: [
213+
{
214+
ruleId: 'new.static',
215+
message: { text: 'Unsafe usage of new static().' },
216+
level: 'error',
217+
locations: [
218+
{
219+
physicalLocation: {
220+
artifactLocation: { uri: 'src/Query/Builder.php' },
221+
region: { startLine: 954, endLine: 954, startColumn: 1 }
222+
}
223+
}
224+
],
225+
suppressions: []
226+
}
227+
]
228+
}
229+
]
230+
})
231+
})
188232
})
189233

190234
describe('createSarifResult', () => {

code-scanning-export/dist/index.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29344,7 +29344,7 @@ function createSarifReport(alerts) {
2934429344
};
2934529345
}
2934629346
results[alert.tool.name].results.push(createSarifResult(alert));
29347-
const ruleName = getRuleIdentifier(alert);
29347+
const ruleName = getRuleIdentifier(alert.rule);
2934829348
if (ruleName && !results[alert.tool.name].tool.driver.rules[ruleName]) {
2934929349
results[alert.tool.name].tool.driver.rules[ruleName] = createSarifRule(alert.rule);
2935029350
}
@@ -29369,14 +29369,14 @@ function createSarifReport(alerts) {
2936929369
exports.createSarifReport = createSarifReport;
2937029370
function createSarifRule(rule) {
2937129371
return {
29372-
id: rule.name,
29372+
id: getRuleIdentifier(rule),
2937329373
shortDescription: { text: rule.description },
2937429374
properties: { tags: rule.tags }
2937529375
};
2937629376
}
2937729377
function createSarifResult(alert) {
2937829378
return {
29379-
ruleId: getRuleIdentifier(alert),
29379+
ruleId: getRuleIdentifier(alert.rule),
2938029380
message: alert.most_recent_instance.message,
2938129381
level: alert.rule.severity,
2938229382
locations: createResultLocation(alert),
@@ -29429,8 +29429,8 @@ function createRegion(location) {
2942929429
}
2943029430
return region;
2943129431
}
29432-
function getRuleIdentifier(alert) {
29433-
return alert.rule.name ? alert.rule.name : alert.rule.id ? alert.rule.id : '';
29432+
function getRuleIdentifier(rule) {
29433+
return rule.name ? rule.name : rule.id ? rule.id : '';
2943429434
}
2943529435

2943629436

code-scanning-export/src/sarif.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ export function createSarifReport(alerts: AlertType[]): SarifReport {
6161

6262
results[alert.tool.name].results.push(createSarifResult(alert))
6363

64-
const ruleName = getRuleIdentifier(alert)
64+
const ruleName = getRuleIdentifier(alert.rule)
6565

6666
if (ruleName && !results[alert.tool.name].tool.driver.rules[ruleName]) {
6767
results[alert.tool.name].tool.driver.rules[ruleName] = createSarifRule(
@@ -93,15 +93,15 @@ export function createSarifReport(alerts: AlertType[]): SarifReport {
9393

9494
function createSarifRule(rule: RuleType): object {
9595
return {
96-
id: rule.name,
96+
id: getRuleIdentifier(rule),
9797
shortDescription: { text: rule.description },
9898
properties: { tags: rule.tags }
9999
}
100100
}
101101

102102
export function createSarifResult(alert: AlertType): object {
103103
return {
104-
ruleId: getRuleIdentifier(alert),
104+
ruleId: getRuleIdentifier(alert.rule),
105105
message: alert.most_recent_instance.message,
106106
level: alert.rule.severity,
107107
locations: createResultLocation(alert),
@@ -163,6 +163,6 @@ function createRegion(location: AlertLocationType): Region {
163163
return region
164164
}
165165

166-
function getRuleIdentifier(alert: AlertType): string {
167-
return alert.rule.name ? alert.rule.name : alert.rule.id ? alert.rule.id : ''
166+
function getRuleIdentifier(rule: RuleType): string {
167+
return rule.name ? rule.name : rule.id ? rule.id : ''
168168
}

0 commit comments

Comments
 (0)