Move shouldPerformDiffInformedAnalysis()
This commit is contained in:
parent
534bc63d5e
commit
1994ea768e
2 changed files with 64 additions and 59 deletions
|
|
@ -2,7 +2,6 @@ import * as fs from "fs";
|
||||||
import * as path from "path";
|
import * as path from "path";
|
||||||
import { performance } from "perf_hooks";
|
import { performance } from "perf_hooks";
|
||||||
|
|
||||||
import * as github from "@actions/github";
|
|
||||||
import * as io from "@actions/io";
|
import * as io from "@actions/io";
|
||||||
import del from "del";
|
import del from "del";
|
||||||
import * as yaml from "js-yaml";
|
import * as yaml from "js-yaml";
|
||||||
|
|
@ -16,6 +15,8 @@ import { getJavaTempDependencyDir } from "./dependency-caching";
|
||||||
import { addDiagnostic, makeDiagnostic } from "./diagnostics";
|
import { addDiagnostic, makeDiagnostic } from "./diagnostics";
|
||||||
import {
|
import {
|
||||||
DiffThunkRange,
|
DiffThunkRange,
|
||||||
|
PullRequestBranches,
|
||||||
|
shouldPerformDiffInformedAnalysis,
|
||||||
writeDiffRangesJsonFile,
|
writeDiffRangesJsonFile,
|
||||||
} from "./diff-informed-analysis-utils";
|
} from "./diff-informed-analysis-utils";
|
||||||
import { EnvVar } from "./environment";
|
import { EnvVar } from "./environment";
|
||||||
|
|
@ -255,64 +256,6 @@ async function finalizeDatabaseCreation(
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
interface PullRequestBranches {
|
|
||||||
base: string;
|
|
||||||
head: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getPullRequestBranches(): PullRequestBranches | undefined {
|
|
||||||
const pullRequest = github.context.payload.pull_request;
|
|
||||||
if (pullRequest) {
|
|
||||||
return {
|
|
||||||
base: pullRequest.base.ref,
|
|
||||||
// We use the head label instead of the head ref here, because the head
|
|
||||||
// ref lacks owner information and by itself does not uniquely identify
|
|
||||||
// the head branch (which may be in a forked repository).
|
|
||||||
head: pullRequest.head.label,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
// PR analysis under Default Setup does not have the pull_request context,
|
|
||||||
// but it should set CODE_SCANNING_REF and CODE_SCANNING_BASE_BRANCH.
|
|
||||||
const codeScanningRef = process.env.CODE_SCANNING_REF;
|
|
||||||
const codeScanningBaseBranch = process.env.CODE_SCANNING_BASE_BRANCH;
|
|
||||||
if (codeScanningRef && codeScanningBaseBranch) {
|
|
||||||
return {
|
|
||||||
base: codeScanningBaseBranch,
|
|
||||||
// PR analysis under Default Setup analyzes the PR head commit instead of
|
|
||||||
// the merge commit, so we can use the provided ref directly.
|
|
||||||
head: codeScanningRef,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if the action should perform diff-informed analysis.
|
|
||||||
*
|
|
||||||
* @returns If the action should perform diff-informed analysis, return
|
|
||||||
* the base and head branches that should be used to compute the diff ranges.
|
|
||||||
* Otherwise return `undefined`.
|
|
||||||
*/
|
|
||||||
async function shouldPerformDiffInformedAnalysis(
|
|
||||||
codeql: CodeQL,
|
|
||||||
features: FeatureEnablement,
|
|
||||||
logger: Logger,
|
|
||||||
): Promise<PullRequestBranches | undefined> {
|
|
||||||
if (!(await features.getValue(Feature.DiffInformedQueries, codeql))) {
|
|
||||||
return undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
const branches = getPullRequestBranches();
|
|
||||||
if (!branches) {
|
|
||||||
logger.info(
|
|
||||||
"Not performing diff-informed analysis " +
|
|
||||||
"because we are not analyzing a pull request.",
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return branches;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set up the diff-informed analysis feature.
|
* Set up the diff-informed analysis feature.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,71 @@
|
||||||
import * as fs from "fs";
|
import * as fs from "fs";
|
||||||
import * as path from "path";
|
import * as path from "path";
|
||||||
|
|
||||||
|
import * as github from "@actions/github";
|
||||||
|
|
||||||
import * as actionsUtil from "./actions-util";
|
import * as actionsUtil from "./actions-util";
|
||||||
|
import type { CodeQL } from "./codeql";
|
||||||
|
import { Feature, FeatureEnablement } from "./feature-flags";
|
||||||
import { Logger } from "./logging";
|
import { Logger } from "./logging";
|
||||||
|
|
||||||
|
export interface PullRequestBranches {
|
||||||
|
base: string;
|
||||||
|
head: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getPullRequestBranches(): PullRequestBranches | undefined {
|
||||||
|
const pullRequest = github.context.payload.pull_request;
|
||||||
|
if (pullRequest) {
|
||||||
|
return {
|
||||||
|
base: pullRequest.base.ref,
|
||||||
|
// We use the head label instead of the head ref here, because the head
|
||||||
|
// ref lacks owner information and by itself does not uniquely identify
|
||||||
|
// the head branch (which may be in a forked repository).
|
||||||
|
head: pullRequest.head.label,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// PR analysis under Default Setup does not have the pull_request context,
|
||||||
|
// but it should set CODE_SCANNING_REF and CODE_SCANNING_BASE_BRANCH.
|
||||||
|
const codeScanningRef = process.env.CODE_SCANNING_REF;
|
||||||
|
const codeScanningBaseBranch = process.env.CODE_SCANNING_BASE_BRANCH;
|
||||||
|
if (codeScanningRef && codeScanningBaseBranch) {
|
||||||
|
return {
|
||||||
|
base: codeScanningBaseBranch,
|
||||||
|
// PR analysis under Default Setup analyzes the PR head commit instead of
|
||||||
|
// the merge commit, so we can use the provided ref directly.
|
||||||
|
head: codeScanningRef,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the action should perform diff-informed analysis.
|
||||||
|
*
|
||||||
|
* @returns If the action should perform diff-informed analysis, return
|
||||||
|
* the base and head branches that should be used to compute the diff ranges.
|
||||||
|
* Otherwise return `undefined`.
|
||||||
|
*/
|
||||||
|
export async function shouldPerformDiffInformedAnalysis(
|
||||||
|
codeql: CodeQL,
|
||||||
|
features: FeatureEnablement,
|
||||||
|
logger: Logger,
|
||||||
|
): Promise<PullRequestBranches | undefined> {
|
||||||
|
if (!(await features.getValue(Feature.DiffInformedQueries, codeql))) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
const branches = getPullRequestBranches();
|
||||||
|
if (!branches) {
|
||||||
|
logger.info(
|
||||||
|
"Not performing diff-informed analysis " +
|
||||||
|
"because we are not analyzing a pull request.",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return branches;
|
||||||
|
}
|
||||||
|
|
||||||
export interface DiffThunkRange {
|
export interface DiffThunkRange {
|
||||||
path: string;
|
path: string;
|
||||||
startLine: number;
|
startLine: number;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue