From c09500540ce28edc3937e9d117595d98e3e763f5 Mon Sep 17 00:00:00 2001 From: Edoardo Pirovano Date: Mon, 7 Jun 2021 15:42:03 +0100 Subject: [PATCH] Some refactoring in fingerprint computation --- lib/fingerprints.js | 22 +++++++++------------- lib/fingerprints.js.map | 2 +- src/fingerprints.ts | 24 +++++++++--------------- 3 files changed, 19 insertions(+), 29 deletions(-) diff --git a/lib/fingerprints.js b/lib/fingerprints.js index 066f17939..90752b2a9 100644 --- a/lib/fingerprints.js +++ b/lib/fingerprints.js @@ -16,6 +16,7 @@ const tab = "\t".charCodeAt(0); const space = " ".charCodeAt(0); const lf = "\n".charCodeAt(0); const cr = "\r".charCodeAt(0); +const EOF = 65535; const BLOCK_SIZE = 100; const MOD = long_1.default.fromInt(37); // L // Compute the starting point for the hash mod @@ -109,17 +110,13 @@ async function hash(callback, filepath) { } updateHash(current); }; - await new Promise((fulfill) => { - const readStream = fs.createReadStream(filepath, "utf8"); - readStream.on("close", fulfill); - readStream.on("end", () => { - processCharacter(65535); - }); - readStream.on("data", (data) => { - for (let i = 0; i < data.length; ++i) - processCharacter(data.charCodeAt(i)); - }); - }); + const readStream = fs.createReadStream(filepath, "utf8"); + for await (const data of readStream) { + for (let i = 0; i < data.length; ++i) { + processCharacter(data.charCodeAt(i)); + } + } + processCharacter(EOF); // Flush the remaining lines for (let i = 0; i < BLOCK_SIZE; i++) { if (lineNumbers[index] !== -1) { @@ -232,8 +229,7 @@ async function addFingerprints(sarifContents, checkoutPath, logger) { logger.debug(`Unable to compute fingerprint for invalid location: ${JSON.stringify(primaryLocation)}`); continue; } - if (typeof ((_e = (_d = (_c = primaryLocation) === null || _c === void 0 ? void 0 : _c.physicalLocation) === null || _d === void 0 ? void 0 : _d.region) === null || _e === void 0 ? void 0 : _e.startLine) === - "undefined") { + if (((_e = (_d = (_c = primaryLocation) === null || _c === void 0 ? void 0 : _c.physicalLocation) === null || _d === void 0 ? void 0 : _d.region) === null || _e === void 0 ? void 0 : _e.startLine) === undefined) { // Locations without a line number are unlikely to be source files continue; } diff --git a/lib/fingerprints.js.map b/lib/fingerprints.js.map index 4c6bffa4e..159c7de5c 100644 --- a/lib/fingerprints.js.map +++ b/lib/fingerprints.js.map @@ -1 +1 @@ -{"version":3,"file":"fingerprints.js","sourceRoot":"","sources":["../src/fingerprints.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fingerprints.js","sourceRoot":"","sources":["../src/fingerprints.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/fingerprints.ts b/src/fingerprints.ts index dea3f9622..4b0840fb0 100644 --- a/src/fingerprints.ts +++ b/src/fingerprints.ts @@ -8,6 +8,7 @@ const tab = "\t".charCodeAt(0); const space = " ".charCodeAt(0); const lf = "\n".charCodeAt(0); const cr = "\r".charCodeAt(0); +const EOF = 65535; const BLOCK_SIZE = 100; const MOD = Long.fromInt(37); // L @@ -114,17 +115,13 @@ export async function hash(callback: hashCallback, filepath: string) { updateHash(current); }; - await new Promise((fulfill) => { - const readStream = fs.createReadStream(filepath, "utf8"); - readStream.on("close", fulfill); - readStream.on("end", () => { - processCharacter(65535); - }); - readStream.on("data", (data) => { - for (let i = 0; i < data.length; ++i) - processCharacter(data.charCodeAt(i)); - }); - }); + const readStream = fs.createReadStream(filepath, "utf8"); + for await (const data of readStream) { + for (let i = 0; i < data.length; ++i) { + processCharacter(data.charCodeAt(i)); + } + } + processCharacter(EOF); // Flush the remaining lines for (let i = 0; i < BLOCK_SIZE; i++) { @@ -274,10 +271,7 @@ export async function addFingerprints( continue; } - if ( - typeof primaryLocation?.physicalLocation?.region?.startLine === - "undefined" - ) { + if (primaryLocation?.physicalLocation?.region?.startLine === undefined) { // Locations without a line number are unlikely to be source files continue; }