getDiffRanges: better fallback for absent patch
This commit is contained in:
parent
5889cfd499
commit
071996fbe2
6 changed files with 56 additions and 27 deletions
25
lib/analyze.js
generated
25
lib/analyze.js
generated
|
|
@ -243,6 +243,12 @@ async function getFileDiffsWithBasehead(baseRef, headLabel, logger) {
|
|||
}
|
||||
}
|
||||
function getDiffRanges(fileDiff, logger) {
|
||||
// Diff-informed queries expect the file path to be absolute. CodeQL always
|
||||
// uses forward slashes as the path separator, so on Windows we need to
|
||||
// replace any backslashes with forward slashes.
|
||||
const filename = path
|
||||
.join(actionsUtil.getRequiredInput("checkout_path"), fileDiff.filename)
|
||||
.replaceAll(path.sep, "/");
|
||||
if (fileDiff.patch === undefined) {
|
||||
if (fileDiff.changes === 0) {
|
||||
// There are situations where a changed file legitimately has no diff.
|
||||
|
|
@ -253,17 +259,16 @@ function getDiffRanges(fileDiff, logger) {
|
|||
return [];
|
||||
}
|
||||
// If a file is reported to have nonzero changes but no patch, that may be
|
||||
// due to the file diff being too large. In this case, we should return
|
||||
// undefined to indicate that we cannot process the diff.
|
||||
logger.warning(`No patch found for file ${fileDiff.filename} with ${fileDiff.changes} changes.`);
|
||||
return undefined;
|
||||
// due to the file diff being too large. In this case, we should fall back
|
||||
// to a special diff range that covers the entire file.
|
||||
return [
|
||||
{
|
||||
path: filename,
|
||||
startLine: 0,
|
||||
endLine: 0,
|
||||
},
|
||||
];
|
||||
}
|
||||
// Diff-informed queries expect the file path to be absolute. CodeQL always
|
||||
// uses forward slashes as the path separator, so on Windows we need to
|
||||
// replace any backslashes with forward slashes.
|
||||
const filename = path
|
||||
.join(actionsUtil.getRequiredInput("checkout_path"), fileDiff.filename)
|
||||
.replaceAll(path.sep, "/");
|
||||
// The 1-based file line number of the current line
|
||||
let currentLine = 0;
|
||||
// The 1-based file line number that starts the current range of added lines
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue