mirror of
https://github.com/github/codeql-action.git
synced 2026-04-27 01:08:46 +00:00
Move diff-range computation into utils for reuse
This commit is contained in:
Generated
+114
-114
@@ -90251,6 +90251,9 @@ var path16 = __toESM(require("path"));
|
||||
var import_perf_hooks2 = require("perf_hooks");
|
||||
var io5 = __toESM(require_io());
|
||||
|
||||
// src/autobuild.ts
|
||||
var core11 = __toESM(require_core());
|
||||
|
||||
// src/api-client.ts
|
||||
var core5 = __toESM(require_core());
|
||||
var githubUtils = __toESM(require_utils4());
|
||||
@@ -90430,9 +90433,6 @@ function wrapApiConfigurationError(e) {
|
||||
return e;
|
||||
}
|
||||
|
||||
// src/autobuild.ts
|
||||
var core11 = __toESM(require_core());
|
||||
|
||||
// src/codeql.ts
|
||||
var fs14 = __toESM(require("fs"));
|
||||
var path14 = __toESM(require("path"));
|
||||
@@ -91635,6 +91635,117 @@ ${jsonContents}`
|
||||
);
|
||||
return JSON.parse(jsonContents);
|
||||
}
|
||||
async function getPullRequestEditedDiffRanges(branches, logger) {
|
||||
const fileDiffs = await getFileDiffsWithBasehead(branches, logger);
|
||||
if (fileDiffs === void 0) {
|
||||
return void 0;
|
||||
}
|
||||
if (fileDiffs.length >= 300) {
|
||||
logger.warning(
|
||||
`Cannot retrieve the full diff because there are too many (${fileDiffs.length}) changed files in the pull request.`
|
||||
);
|
||||
return void 0;
|
||||
}
|
||||
const results = [];
|
||||
for (const filediff of fileDiffs) {
|
||||
const diffRanges = getDiffRanges(filediff, logger);
|
||||
if (diffRanges === void 0) {
|
||||
return void 0;
|
||||
}
|
||||
results.push(...diffRanges);
|
||||
}
|
||||
return results;
|
||||
}
|
||||
async function getFileDiffsWithBasehead(branches, logger) {
|
||||
const repositoryNwo = getRepositoryNwoFromEnv(
|
||||
"CODE_SCANNING_REPOSITORY",
|
||||
"GITHUB_REPOSITORY"
|
||||
);
|
||||
const basehead = `${branches.base}...${branches.head}`;
|
||||
try {
|
||||
const response = await getApiClient().rest.repos.compareCommitsWithBasehead(
|
||||
{
|
||||
owner: repositoryNwo.owner,
|
||||
repo: repositoryNwo.repo,
|
||||
basehead,
|
||||
per_page: 1
|
||||
}
|
||||
);
|
||||
logger.debug(
|
||||
`Response from compareCommitsWithBasehead(${basehead}):
|
||||
${JSON.stringify(response, null, 2)}`
|
||||
);
|
||||
return response.data.files;
|
||||
} catch (error2) {
|
||||
if (error2.status) {
|
||||
logger.warning(`Error retrieving diff ${basehead}: ${error2.message}`);
|
||||
logger.debug(
|
||||
`Error running compareCommitsWithBasehead(${basehead}):
|
||||
Request: ${JSON.stringify(error2.request, null, 2)}
|
||||
Error Response: ${JSON.stringify(error2.response, null, 2)}`
|
||||
);
|
||||
return void 0;
|
||||
} else {
|
||||
throw error2;
|
||||
}
|
||||
}
|
||||
}
|
||||
function getDiffRanges(fileDiff, logger) {
|
||||
const filename = path9.join(getRequiredInput("checkout_path"), fileDiff.filename).replaceAll(path9.sep, "/");
|
||||
if (fileDiff.patch === void 0) {
|
||||
if (fileDiff.changes === 0) {
|
||||
return [];
|
||||
}
|
||||
return [
|
||||
{
|
||||
path: filename,
|
||||
startLine: 0,
|
||||
endLine: 0
|
||||
}
|
||||
];
|
||||
}
|
||||
let currentLine = 0;
|
||||
let additionRangeStartLine = void 0;
|
||||
const diffRanges = [];
|
||||
const diffLines = fileDiff.patch.split("\n");
|
||||
diffLines.push(" ");
|
||||
for (const diffLine of diffLines) {
|
||||
if (diffLine.startsWith("-")) {
|
||||
continue;
|
||||
}
|
||||
if (diffLine.startsWith("+")) {
|
||||
if (additionRangeStartLine === void 0) {
|
||||
additionRangeStartLine = currentLine;
|
||||
}
|
||||
currentLine++;
|
||||
continue;
|
||||
}
|
||||
if (additionRangeStartLine !== void 0) {
|
||||
diffRanges.push({
|
||||
path: filename,
|
||||
startLine: additionRangeStartLine,
|
||||
endLine: currentLine - 1
|
||||
});
|
||||
additionRangeStartLine = void 0;
|
||||
}
|
||||
if (diffLine.startsWith("@@ ")) {
|
||||
const match = diffLine.match(/^@@ -\d+(?:,\d+)? \+(\d+)(?:,\d+)? @@/);
|
||||
if (match === null) {
|
||||
logger.warning(
|
||||
`Cannot parse diff hunk header for ${fileDiff.filename}: ${diffLine}`
|
||||
);
|
||||
return void 0;
|
||||
}
|
||||
currentLine = parseInt(match[1], 10);
|
||||
continue;
|
||||
}
|
||||
if (diffLine.startsWith(" ")) {
|
||||
currentLine++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
return diffRanges;
|
||||
}
|
||||
|
||||
// src/trap-caching.ts
|
||||
var actionsCache2 = __toESM(require_cache3());
|
||||
@@ -93723,117 +93834,6 @@ async function setupDiffInformedQueryRun(branches, logger) {
|
||||
}
|
||||
);
|
||||
}
|
||||
async function getPullRequestEditedDiffRanges(branches, logger) {
|
||||
const fileDiffs = await getFileDiffsWithBasehead(branches, logger);
|
||||
if (fileDiffs === void 0) {
|
||||
return void 0;
|
||||
}
|
||||
if (fileDiffs.length >= 300) {
|
||||
logger.warning(
|
||||
`Cannot retrieve the full diff because there are too many (${fileDiffs.length}) changed files in the pull request.`
|
||||
);
|
||||
return void 0;
|
||||
}
|
||||
const results = [];
|
||||
for (const filediff of fileDiffs) {
|
||||
const diffRanges = getDiffRanges(filediff, logger);
|
||||
if (diffRanges === void 0) {
|
||||
return void 0;
|
||||
}
|
||||
results.push(...diffRanges);
|
||||
}
|
||||
return results;
|
||||
}
|
||||
async function getFileDiffsWithBasehead(branches, logger) {
|
||||
const repositoryNwo = getRepositoryNwoFromEnv(
|
||||
"CODE_SCANNING_REPOSITORY",
|
||||
"GITHUB_REPOSITORY"
|
||||
);
|
||||
const basehead = `${branches.base}...${branches.head}`;
|
||||
try {
|
||||
const response = await getApiClient().rest.repos.compareCommitsWithBasehead(
|
||||
{
|
||||
owner: repositoryNwo.owner,
|
||||
repo: repositoryNwo.repo,
|
||||
basehead,
|
||||
per_page: 1
|
||||
}
|
||||
);
|
||||
logger.debug(
|
||||
`Response from compareCommitsWithBasehead(${basehead}):
|
||||
${JSON.stringify(response, null, 2)}`
|
||||
);
|
||||
return response.data.files;
|
||||
} catch (error2) {
|
||||
if (error2.status) {
|
||||
logger.warning(`Error retrieving diff ${basehead}: ${error2.message}`);
|
||||
logger.debug(
|
||||
`Error running compareCommitsWithBasehead(${basehead}):
|
||||
Request: ${JSON.stringify(error2.request, null, 2)}
|
||||
Error Response: ${JSON.stringify(error2.response, null, 2)}`
|
||||
);
|
||||
return void 0;
|
||||
} else {
|
||||
throw error2;
|
||||
}
|
||||
}
|
||||
}
|
||||
function getDiffRanges(fileDiff, logger) {
|
||||
const filename = path16.join(getRequiredInput("checkout_path"), fileDiff.filename).replaceAll(path16.sep, "/");
|
||||
if (fileDiff.patch === void 0) {
|
||||
if (fileDiff.changes === 0) {
|
||||
return [];
|
||||
}
|
||||
return [
|
||||
{
|
||||
path: filename,
|
||||
startLine: 0,
|
||||
endLine: 0
|
||||
}
|
||||
];
|
||||
}
|
||||
let currentLine = 0;
|
||||
let additionRangeStartLine = void 0;
|
||||
const diffRanges = [];
|
||||
const diffLines = fileDiff.patch.split("\n");
|
||||
diffLines.push(" ");
|
||||
for (const diffLine of diffLines) {
|
||||
if (diffLine.startsWith("-")) {
|
||||
continue;
|
||||
}
|
||||
if (diffLine.startsWith("+")) {
|
||||
if (additionRangeStartLine === void 0) {
|
||||
additionRangeStartLine = currentLine;
|
||||
}
|
||||
currentLine++;
|
||||
continue;
|
||||
}
|
||||
if (additionRangeStartLine !== void 0) {
|
||||
diffRanges.push({
|
||||
path: filename,
|
||||
startLine: additionRangeStartLine,
|
||||
endLine: currentLine - 1
|
||||
});
|
||||
additionRangeStartLine = void 0;
|
||||
}
|
||||
if (diffLine.startsWith("@@ ")) {
|
||||
const match = diffLine.match(/^@@ -\d+(?:,\d+)? \+(\d+)(?:,\d+)? @@/);
|
||||
if (match === null) {
|
||||
logger.warning(
|
||||
`Cannot parse diff hunk header for ${fileDiff.filename}: ${diffLine}`
|
||||
);
|
||||
return void 0;
|
||||
}
|
||||
currentLine = parseInt(match[1], 10);
|
||||
continue;
|
||||
}
|
||||
if (diffLine.startsWith(" ")) {
|
||||
currentLine++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
return diffRanges;
|
||||
}
|
||||
function writeDiffRangeDataExtensionPack(logger, ranges) {
|
||||
if (ranges === void 0) {
|
||||
return void 0;
|
||||
|
||||
Reference in New Issue
Block a user