@datadog/datadog-ci 3.0.1 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/sarif/__tests__/utils.test.d.ts +1 -0
- package/dist/commands/sarif/__tests__/utils.test.js +26 -0
- package/dist/commands/sarif/__tests__/utils.test.js.map +1 -0
- package/dist/commands/sarif/api.js +1 -1
- package/dist/commands/sarif/api.js.map +1 -1
- package/dist/commands/sarif/interfaces.d.ts +1 -0
- package/dist/commands/sarif/renderer.js +1 -1
- package/dist/commands/sarif/renderer.js.map +1 -1
- package/dist/commands/sarif/upload.js +8 -4
- package/dist/commands/sarif/upload.js.map +1 -1
- package/dist/commands/sarif/utils.d.ts +20 -0
- package/dist/commands/sarif/utils.js +69 -1
- package/dist/commands/sarif/utils.js.map +1 -1
- package/dist/commands/sarif/validation.d.ts +3 -2
- package/dist/commands/sarif/validation.js +13 -1
- package/dist/commands/sarif/validation.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("../utils");
|
|
4
|
+
describe('validation of service and env', () => {
|
|
5
|
+
test('should correctly handle for datadog analyzer with static analysis only', () => {
|
|
6
|
+
const service = (0, utils_1.getServiceFromSarifTool)('./src/commands/sarif/__tests__/fixtures/datadog-sa-only.json');
|
|
7
|
+
expect(service).toBe(utils_1.SERVICE_DATADOG_ANALYZER_SA_ONLY);
|
|
8
|
+
});
|
|
9
|
+
test('should correctly handle for datadog analyzer with secrets only', () => {
|
|
10
|
+
const service = (0, utils_1.getServiceFromSarifTool)('./src/commands/sarif/__tests__/fixtures/datadog-secrets-only-empty.json');
|
|
11
|
+
expect(service).toBe(utils_1.SERVICE_DATADOG_ANALYZER_SECRETS_ONLY);
|
|
12
|
+
});
|
|
13
|
+
test('should correctly handle for datadog analyzer with static analysis and secrets', () => {
|
|
14
|
+
const service = (0, utils_1.getServiceFromSarifTool)('./src/commands/sarif/__tests__/fixtures/datadog-sa-secrets.json');
|
|
15
|
+
expect(service).toBe(utils_1.SERVICE_DATADOG_ANALYZER);
|
|
16
|
+
});
|
|
17
|
+
test('third party tool', () => {
|
|
18
|
+
const service = (0, utils_1.getServiceFromSarifTool)('./src/commands/sarif/__tests__/fixtures/valid-results.sarif');
|
|
19
|
+
expect(service).toBe('ESLint');
|
|
20
|
+
});
|
|
21
|
+
test('invalid file', () => {
|
|
22
|
+
const service = (0, utils_1.getServiceFromSarifTool)('./src/commands/sarif/__tests__/fixtures/invalid.sarif');
|
|
23
|
+
expect(service).toBe(utils_1.SERVICE_THIRD_PARTY_ANALYZER);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
//# sourceMappingURL=utils.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../../../src/commands/sarif/__tests__/utils.test.ts"],"names":[],"mappings":";;AAAA,oCAMiB;AAEjB,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,IAAI,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAClF,MAAM,OAAO,GAAG,IAAA,+BAAuB,EAAC,8DAA8D,CAAC,CAAA;QACvG,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,wCAAgC,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,gEAAgE,EAAE,GAAG,EAAE;QAC1E,MAAM,OAAO,GAAG,IAAA,+BAAuB,EAAC,yEAAyE,CAAC,CAAA;QAClH,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,6CAAqC,CAAC,CAAA;IAC7D,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,+EAA+E,EAAE,GAAG,EAAE;QACzF,MAAM,OAAO,GAAG,IAAA,+BAAuB,EAAC,iEAAiE,CAAC,CAAA;QAC1G,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,gCAAwB,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC5B,MAAM,OAAO,GAAG,IAAA,+BAAuB,EAAC,6DAA6D,CAAC,CAAA;QACtG,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAChC,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE;QACxB,MAAM,OAAO,GAAG,IAAA,+BAAuB,EAAC,uDAAuD,CAAC,CAAA;QAChG,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,oCAA4B,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -25,7 +25,7 @@ const maxBodyLength = Infinity;
|
|
|
25
25
|
const uploadSarifReport = (request) => (sarifReport, write) => __awaiter(void 0, void 0, void 0, function* () {
|
|
26
26
|
const form = new form_data_1.default();
|
|
27
27
|
write((0, renderer_1.renderUpload)(sarifReport));
|
|
28
|
-
const metadata = Object.assign(Object.assign({ service:
|
|
28
|
+
const metadata = Object.assign(Object.assign({ service: sarifReport.service }, sarifReport.spanTags), { event_type: 'static_analysis', event_format_name: 'sarif', event_format_version: '2.1.0' });
|
|
29
29
|
form.append('event', JSON.stringify(metadata), { filename: 'event.json' });
|
|
30
30
|
form.append('sarif_report_file', fs_1.default.createReadStream(sarifReport.reportPath).pipe((0, zlib_1.createGzip)()), {
|
|
31
31
|
filename: `${(0, uuid_1.v4)()}.sarif.gz`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/commands/sarif/api.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4CAAmB;AAEnB,+BAA+B;AAI/B,0DAAgC;AAChC,+BAAiC;AAEjC,+CAAqD;AAGrD,yCAAuC;AAEvC,sLAAsL;AACtL,iHAAiH;AACjH,MAAM,aAAa,GAAG,QAAQ,CAAA;AAEvB,MAAM,iBAAiB,GAAG,CAAC,OAAkE,EAAE,EAAE,CAAC,CACvG,WAAoB,EACpB,KAAwB,EACxB,EAAE;IACF,MAAM,IAAI,GAAG,IAAI,mBAAQ,EAAE,CAAA;IAC3B,KAAK,CAAC,IAAA,uBAAY,EAAC,WAAW,CAAC,CAAC,CAAA;IAEhC,MAAM,QAAQ,iCACZ,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/commands/sarif/api.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4CAAmB;AAEnB,+BAA+B;AAI/B,0DAAgC;AAChC,+BAAiC;AAEjC,+CAAqD;AAGrD,yCAAuC;AAEvC,sLAAsL;AACtL,iHAAiH;AACjH,MAAM,aAAa,GAAG,QAAQ,CAAA;AAEvB,MAAM,iBAAiB,GAAG,CAAC,OAAkE,EAAE,EAAE,CAAC,CACvG,WAAoB,EACpB,KAAwB,EACxB,EAAE;IACF,MAAM,IAAI,GAAG,IAAI,mBAAQ,EAAE,CAAA;IAC3B,KAAK,CAAC,IAAA,uBAAY,EAAC,WAAW,CAAC,CAAC,CAAA;IAEhC,MAAM,QAAQ,iCACZ,OAAO,EAAE,WAAW,CAAC,OAAO,IACzB,WAAW,CAAC,QAAQ,KACvB,UAAU,EAAE,iBAAiB,EAC7B,iBAAiB,EAAE,OAAO,EAC1B,oBAAoB,EAAE,OAAO,GAC9B,CAAA;IAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAC,QAAQ,EAAE,YAAY,EAAC,CAAC,CAAA;IAExE,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,YAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAA,iBAAU,GAAE,CAAC,EAAE;QAC/F,QAAQ,EAAE,GAAG,IAAA,SAAM,GAAE,WAAW;KACjC,CAAC,CAAA;IAEF,OAAO,OAAO,CAAC;QACb,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;QAC1B,aAAa;QACb,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,mBAAmB;KACzB,CAAC,CAAA;AACJ,CAAC,CAAA,CAAA;AA5BY,QAAA,iBAAiB,qBA4B7B;AAEM,MAAM,cAAc,GAAG,CAAC,aAAqB,EAAE,MAAc,EAAE,EAAE;IACtE,MAAM,aAAa,GAAG,IAAA,yBAAiB,EAAC,EAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAC,CAAC,CAAA;IAEzE,OAAO;QACL,iBAAiB,EAAE,IAAA,yBAAiB,EAAC,aAAa,CAAC;KACpD,CAAA;AACH,CAAC,CAAA;AANY,QAAA,cAAc,kBAM1B"}
|
|
@@ -5,6 +5,7 @@ import { SpanTags } from '../../helpers/interfaces';
|
|
|
5
5
|
export interface Payload {
|
|
6
6
|
reportPath: string;
|
|
7
7
|
spanTags: SpanTags;
|
|
8
|
+
service: string;
|
|
8
9
|
}
|
|
9
10
|
export interface APIHelper {
|
|
10
11
|
uploadSarifReport(sarifReport: Payload, write: Writable['write']): AxiosPromise<AxiosResponse>;
|
|
@@ -17,7 +17,7 @@ const renderInvalidFile = (sarifReport, errorMessages) => {
|
|
|
17
17
|
let fullStr = '';
|
|
18
18
|
const reportPath = `[${chalk_1.default.bold.dim(sarifReport)}]`;
|
|
19
19
|
fullStr += chalk_1.default.red(`${ICONS.FAILED} Invalid SARIF report file ${reportPath}.\n`);
|
|
20
|
-
fullStr += chalk_1.default.red(`The report is not a valid JSON or is not compliant with the SARIF json schema v2.1.0.\n`);
|
|
20
|
+
fullStr += chalk_1.default.red(`The report is too large, not a valid JSON or is not compliant with the SARIF json schema v2.1.0.\n`);
|
|
21
21
|
fullStr += chalk_1.default.red(`Error(s) found:\n`);
|
|
22
22
|
for (const errorMessage of errorMessages) {
|
|
23
23
|
fullStr += chalk_1.default.red(` - ${errorMessage}\n`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../../src/commands/sarif/renderer.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AAEvB,kDAAyB;AAEzB,0CAAyC;AAIzC,MAAM,KAAK,GAAG;IACZ,MAAM,EAAE,GAAG;IACX,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,IAAI;CACX,CAAA;AAEM,MAAM,iBAAiB,GAAG,CAAC,WAAmB,EAAE,aAAuB,EAAE,EAAE;IAChF,IAAI,OAAO,GAAG,EAAE,CAAA;IAChB,MAAM,UAAU,GAAG,IAAI,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAA;IAErD,OAAO,IAAI,eAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,8BAA8B,UAAU,KAAK,CAAC,CAAA;IAClF,OAAO,IAAI,eAAK,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../../src/commands/sarif/renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -161,6 +161,7 @@ class UploadSarifReportCommand extends clipanion_1.Command {
|
|
|
161
161
|
}
|
|
162
162
|
const validationErrorMessage = (0, validation_1.validateSarif)(sarifReport);
|
|
163
163
|
if (validationErrorMessage) {
|
|
164
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
164
165
|
this.context.stdout.write((0, renderer_1.renderInvalidFile)(sarifReport, [validationErrorMessage]));
|
|
165
166
|
return false;
|
|
166
167
|
}
|
|
@@ -171,10 +172,13 @@ class UploadSarifReportCommand extends clipanion_1.Command {
|
|
|
171
172
|
}
|
|
172
173
|
return true;
|
|
173
174
|
});
|
|
174
|
-
return validUniqueFiles.map((sarifReport) =>
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
175
|
+
return validUniqueFiles.map((sarifReport) => {
|
|
176
|
+
return {
|
|
177
|
+
reportPath: sarifReport,
|
|
178
|
+
spanTags,
|
|
179
|
+
service: (0, utils_2.getServiceFromSarifTool)(sarifReport),
|
|
180
|
+
};
|
|
181
|
+
});
|
|
178
182
|
});
|
|
179
183
|
}
|
|
180
184
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../src/commands/sarif/upload.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAAmB;AACnB,gDAAuB;AAEvB,kDAAyB;AACzB,yCAAyC;AACzC,+BAAyB;AAEzB,+CAAuE;AACvE,2DAA8D;AAE9D,2CAA2C;AAC3C,6CAA6C;AAE7C,+CAAgD;AAChD,6CAAkF;AAClF,+CAA6C;AAC7C,qEAAsD;AAEtD,+BAAoC;AAEpC,yCASmB;AACnB,
|
|
1
|
+
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../src/commands/sarif/upload.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1,21 @@
|
|
|
1
1
|
export declare const getBaseIntakeUrl: () => string;
|
|
2
|
+
export declare const TAG_DATADOG_TYPE_TYPE_STATIC = "DATADOG_RULE_TYPE:STATIC_ANALYSIS";
|
|
3
|
+
export declare const TAG_DATADOG_TYPE_TYPE_SECRET = "DATADOG_RULE_TYPE:SECRET";
|
|
4
|
+
export declare const SERVICE_DATADOG_ANALYZER = "datadog-analyzer";
|
|
5
|
+
export declare const SERVICE_DATADOG_ANALYZER_SA_ONLY = "datadog-analyzer-sa-only";
|
|
6
|
+
export declare const SERVICE_DATADOG_ANALYZER_SECRETS_ONLY = "datadog-analyzer-secrets-only";
|
|
7
|
+
export declare const SERVICE_THIRD_PARTY_ANALYZER = "third-party-analyzer";
|
|
8
|
+
/**
|
|
9
|
+
* Define the service and env based on the SARIF contents reports
|
|
10
|
+
* - if the report is produced by the datadog static analyzer, we look if the report
|
|
11
|
+
* contains only static analysis or secrets errors and change service
|
|
12
|
+
* - if the report is produced by a third party tool, we report it as is and cannot
|
|
13
|
+
* infer the nature of the results. We still try to get the first tool from the runs.
|
|
14
|
+
*
|
|
15
|
+
* The objective of this function is to make sure that if a user uploads one report
|
|
16
|
+
* for static analysis only and one report for secrets only, they will have a different
|
|
17
|
+
* service and env for each report so that they are not discarded later in our backend.
|
|
18
|
+
*
|
|
19
|
+
* @param filePath
|
|
20
|
+
*/
|
|
21
|
+
export declare const getServiceFromSarifTool: (filePath: string) => string;
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getBaseIntakeUrl = void 0;
|
|
6
|
+
exports.getServiceFromSarifTool = exports.SERVICE_THIRD_PARTY_ANALYZER = exports.SERVICE_DATADOG_ANALYZER_SECRETS_ONLY = exports.SERVICE_DATADOG_ANALYZER_SA_ONLY = exports.SERVICE_DATADOG_ANALYZER = exports.TAG_DATADOG_TYPE_TYPE_SECRET = exports.TAG_DATADOG_TYPE_TYPE_STATIC = exports.getBaseIntakeUrl = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
4
8
|
const getBaseIntakeUrl = () => {
|
|
5
9
|
if (process.env.DATADOG_SITE || process.env.DD_SITE) {
|
|
6
10
|
return `https://cicodescan-intake.${process.env.DATADOG_SITE || process.env.DD_SITE}`;
|
|
@@ -8,4 +12,68 @@ const getBaseIntakeUrl = () => {
|
|
|
8
12
|
return 'https://cicodescan-intake.datadoghq.com';
|
|
9
13
|
};
|
|
10
14
|
exports.getBaseIntakeUrl = getBaseIntakeUrl;
|
|
15
|
+
exports.TAG_DATADOG_TYPE_TYPE_STATIC = 'DATADOG_RULE_TYPE:STATIC_ANALYSIS';
|
|
16
|
+
exports.TAG_DATADOG_TYPE_TYPE_SECRET = 'DATADOG_RULE_TYPE:SECRET';
|
|
17
|
+
exports.SERVICE_DATADOG_ANALYZER = 'datadog-analyzer';
|
|
18
|
+
exports.SERVICE_DATADOG_ANALYZER_SA_ONLY = 'datadog-analyzer-sa-only';
|
|
19
|
+
exports.SERVICE_DATADOG_ANALYZER_SECRETS_ONLY = 'datadog-analyzer-secrets-only';
|
|
20
|
+
exports.SERVICE_THIRD_PARTY_ANALYZER = 'third-party-analyzer';
|
|
21
|
+
/**
|
|
22
|
+
* Define the service and env based on the SARIF contents reports
|
|
23
|
+
* - if the report is produced by the datadog static analyzer, we look if the report
|
|
24
|
+
* contains only static analysis or secrets errors and change service
|
|
25
|
+
* - if the report is produced by a third party tool, we report it as is and cannot
|
|
26
|
+
* infer the nature of the results. We still try to get the first tool from the runs.
|
|
27
|
+
*
|
|
28
|
+
* The objective of this function is to make sure that if a user uploads one report
|
|
29
|
+
* for static analysis only and one report for secrets only, they will have a different
|
|
30
|
+
* service and env for each report so that they are not discarded later in our backend.
|
|
31
|
+
*
|
|
32
|
+
* @param filePath
|
|
33
|
+
*/
|
|
34
|
+
const getServiceFromSarifTool = (filePath) => {
|
|
35
|
+
let otherTool = exports.SERVICE_THIRD_PARTY_ANALYZER;
|
|
36
|
+
const ruleTypes = new Set();
|
|
37
|
+
try {
|
|
38
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
39
|
+
const report = JSON.parse(String(fs_1.default.readFileSync(filePath)));
|
|
40
|
+
if ('runs' in report) {
|
|
41
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
42
|
+
for (const run of report['runs']) {
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
44
|
+
if ('tool' in run && 'driver' in run['tool'] && 'rules' in run['tool']['driver']) {
|
|
45
|
+
for (const rule of run['tool']['driver']['rules']) {
|
|
46
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
47
|
+
if ('properties' in rule && 'tags' in rule['properties']) {
|
|
48
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
49
|
+
for (const tag of rule['properties']['tags']) {
|
|
50
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
|
51
|
+
if (tag.includes('DATADOG_RULE_TYPE')) {
|
|
52
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
53
|
+
ruleTypes.add(tag);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
|
|
62
|
+
otherTool = report['runs'][0]['tool']['driver']['name'];
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
// ignore
|
|
66
|
+
}
|
|
67
|
+
if (ruleTypes.has(exports.TAG_DATADOG_TYPE_TYPE_STATIC) && ruleTypes.has(exports.TAG_DATADOG_TYPE_TYPE_SECRET)) {
|
|
68
|
+
return exports.SERVICE_DATADOG_ANALYZER;
|
|
69
|
+
}
|
|
70
|
+
if (ruleTypes.has(exports.TAG_DATADOG_TYPE_TYPE_STATIC) && !ruleTypes.has(exports.TAG_DATADOG_TYPE_TYPE_SECRET)) {
|
|
71
|
+
return exports.SERVICE_DATADOG_ANALYZER_SA_ONLY;
|
|
72
|
+
}
|
|
73
|
+
if (!ruleTypes.has(exports.TAG_DATADOG_TYPE_TYPE_STATIC) && ruleTypes.has(exports.TAG_DATADOG_TYPE_TYPE_SECRET)) {
|
|
74
|
+
return exports.SERVICE_DATADOG_ANALYZER_SECRETS_ONLY;
|
|
75
|
+
}
|
|
76
|
+
return otherTool;
|
|
77
|
+
};
|
|
78
|
+
exports.getServiceFromSarifTool = getServiceFromSarifTool;
|
|
11
79
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/commands/sarif/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/commands/sarif/utils.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAmB;AAEZ,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE;QACnD,OAAO,6BAA6B,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;KACtF;IAED,OAAO,yCAAyC,CAAA;AAClD,CAAC,CAAA;AANY,QAAA,gBAAgB,oBAM5B;AAEY,QAAA,4BAA4B,GAAG,mCAAmC,CAAA;AAClE,QAAA,4BAA4B,GAAG,0BAA0B,CAAA;AACzD,QAAA,wBAAwB,GAAG,kBAAkB,CAAA;AAC7C,QAAA,gCAAgC,GAAG,0BAA0B,CAAA;AAC7D,QAAA,qCAAqC,GAAG,+BAA+B,CAAA;AACvE,QAAA,4BAA4B,GAAG,sBAAsB,CAAA;AAElE;;;;;;;;;;;;GAYG;AACI,MAAM,uBAAuB,GAAG,CAAC,QAAgB,EAAU,EAAE;IAClE,IAAI,SAAS,GAAW,oCAA4B,CAAA;IACpD,MAAM,SAAS,GAAgB,IAAI,GAAG,EAAE,CAAA;IACxC,IAAI;QACF,mEAAmE;QACnE,MAAM,MAAM,GAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAEjE,IAAI,MAAM,IAAI,MAAM,EAAE;YACpB,sEAAsE;YACtE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;gBAChC,sEAAsE;gBACtE,IAAI,MAAM,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE;oBAChF,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE;wBACjD,sEAAsE;wBACtE,IAAI,YAAY,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE;4BACxD,sEAAsE;4BACtE,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE;gCAC5C,wGAAwG;gCACxG,IAAI,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;oCACrC,iEAAiE;oCACjE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;iCACnB;6BACF;yBACF;qBACF;iBACF;aACF;SACF;QAED,8GAA8G;QAC9G,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAA;KACxD;IAAC,OAAO,KAAK,EAAE;QACd,SAAS;KACV;IAED,IAAI,SAAS,CAAC,GAAG,CAAC,oCAA4B,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,oCAA4B,CAAC,EAAE;QAC9F,OAAO,gCAAwB,CAAA;KAChC;IAED,IAAI,SAAS,CAAC,GAAG,CAAC,oCAA4B,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,oCAA4B,CAAC,EAAE;QAC/F,OAAO,wCAAgC,CAAA;KACxC;IAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,oCAA4B,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,oCAA4B,CAAC,EAAE;QAC/F,OAAO,6CAAqC,CAAA;KAC7C;IAED,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAhDY,QAAA,uBAAuB,2BAgDnC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Validate the SARIF file
|
|
2
|
+
* Validate the SARIF file and check if the file is too large or not valid
|
|
3
|
+
* against the SARIF schema.
|
|
3
4
|
*
|
|
4
5
|
* @param sarifReportPath - the path of the SARIF file
|
|
5
6
|
*/
|
|
6
|
-
export declare const validateSarif: (sarifReportPath: string) =>
|
|
7
|
+
export declare const validateSarif: (sarifReportPath: string) => string | undefined;
|
|
7
8
|
/**
|
|
8
9
|
* Functions that looks for errors specific to how Datadog processes SARIF file. This way, we
|
|
9
10
|
* show the error directly to the user instead of uploading a file we cannot process in our backend.
|
|
@@ -8,12 +8,24 @@ const fs_1 = __importDefault(require("fs"));
|
|
|
8
8
|
const ajv_1 = __importDefault(require("ajv"));
|
|
9
9
|
const ajv_formats_1 = __importDefault(require("ajv-formats"));
|
|
10
10
|
const sarif_schema_2_1_0_json_1 = __importDefault(require("./json-schema/sarif-schema-2.1.0.json"));
|
|
11
|
+
const maxSarifFileSize = 5 * 1024 * 1024; // 5MB in bytes
|
|
11
12
|
/**
|
|
12
|
-
* Validate the SARIF file
|
|
13
|
+
* Validate the SARIF file and check if the file is too large or not valid
|
|
14
|
+
* against the SARIF schema.
|
|
13
15
|
*
|
|
14
16
|
* @param sarifReportPath - the path of the SARIF file
|
|
15
17
|
*/
|
|
16
18
|
const validateSarif = (sarifReportPath) => {
|
|
19
|
+
try {
|
|
20
|
+
const stats = fs_1.default.statSync(sarifReportPath); // Synchronously get file stats
|
|
21
|
+
const fileSize = stats.size;
|
|
22
|
+
if (fileSize > maxSarifFileSize) {
|
|
23
|
+
return `file size too large (size: ${fileSize / 1024 / 1024} MB, max size: ${maxSarifFileSize / 1024 / 1024} MB)`;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
return err.message;
|
|
28
|
+
}
|
|
17
29
|
const ajv = new ajv_1.default({ allErrors: true });
|
|
18
30
|
(0, ajv_formats_1.default)(ajv);
|
|
19
31
|
const sarifJsonSchemaValidate = ajv.compile(sarif_schema_2_1_0_json_1.default);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/commands/sarif/validation.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAmB;AAInB,8CAAqB;AACrB,8DAAoC;AAEpC,oGAAmE;AAEnE
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/commands/sarif/validation.ts"],"names":[],"mappings":"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"}
|