diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 000000000..ccbe84d83 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: true +contact_links: + - name: Contact GitHub Support + url: https://support.github.com/contact?subject=Code+Scanning+Beta+Support&tags=code-scanning-support + about: Contact Support about code scanning diff --git a/.github/codeql/codeql-config.yml b/.github/codeql/codeql-config.yml index 6883bf197..1a3d79a79 100644 --- a/.github/codeql/codeql-config.yml +++ b/.github/codeql/codeql-config.yml @@ -2,5 +2,12 @@ name: "CodeQL config" queries: - name: Run custom queries uses: ./queries + # Run all extra query suites, both because we want to + # and because it'll act as extra testing. This is why + # we include both even though one is a superset of the + # other, because we're testing the parsing logic and + # that the suites exist in the codeql bundle. + - uses: security-extended + - uses: security-and-quality paths-ignore: - tests \ No newline at end of file diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 761d70aa5..a3a5831d3 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -1,6 +1,6 @@ name: "CodeQL action" -on: [push] +on: [push, pull_request] jobs: build: @@ -11,6 +11,16 @@ jobs: steps: - uses: actions/checkout@v1 + with: + # Must fetch at least the immediate parents so that if this is + # a pull request then we can checkout the head of the pull request. + fetch-depth: 2 + + # If this run was triggered by a pull request event then checkout + # the head of the pull request instead of the merge commit. + - run: git checkout HEAD^2 + if: ${{ github.event_name == 'pull_request' }} + - uses: ./init with: languages: javascript diff --git a/.github/workflows/integration-testing.yml b/.github/workflows/integration-testing.yml index 2a5edd43c..b6ae20c5c 100644 --- a/.github/workflows/integration-testing.yml +++ b/.github/workflows/integration-testing.yml @@ -1,14 +1,10 @@ name: "Integration Testing" -on: [push] +on: [push, pull_request] jobs: multi-language-repo_test-autodetect-languages: - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest, windows-latest] - runs-on: ${{ matrix.os }} + runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 @@ -16,9 +12,8 @@ jobs: shell: bash run: | mkdir ../action - shopt -s dotglob - mv * ../action/ - mv ../action/tests/multi-language-repo/* . + mv * .github ../action/ + mv ../action/tests/multi-language-repo/{*,.github} . - uses: ./../action/init - name: Build code shell: bash @@ -26,6 +21,20 @@ jobs: - uses: ./../action/analyze env: TEST_MODE: true + - run: | + cd "$CODEQL_ACTION_DATABASE_DIR" + # List all directories as there will be precisely one directory per database + # but there may be other files in this directory such as query suites. + if [ "$(ls -d */ | wc -l)" != 6 ] || \ + [[ ! -d cpp ]] || \ + [[ ! -d csharp ]] || \ + [[ ! -d go ]] || \ + [[ ! -d java ]] || \ + [[ ! -d javascript ]] || \ + [[ ! -d python ]]; then + echo "Did not find expected number of databases. Database dir contains: $(ls)" + exit 1 + fi multi-language-repo_test-custom-queries: strategy: @@ -40,9 +49,8 @@ jobs: shell: bash run: | mkdir ../action - shopt -s dotglob - mv * ../action/ - mv ../action/tests/multi-language-repo/* . + mv * .github ../action/ + mv ../action/tests/multi-language-repo/{*,.github} . - uses: ./../action/init with: languages: cpp,csharp,java,javascript,python @@ -72,9 +80,8 @@ jobs: shell: bash run: | mkdir ../action - shopt -s dotglob - mv * ../action/ - mv ../action/tests/multi-language-repo/* . + mv * .github ../action/ + mv ../action/tests/multi-language-repo/{*,.github} . - uses: ./../action/init with: languages: go @@ -96,9 +103,8 @@ jobs: shell: bash run: | mkdir ../action - shopt -s dotglob - mv * ../action/ - mv ../action/tests/multi-language-repo/* . + mv * .github ../action/ + mv ../action/tests/multi-language-repo/{*,.github} . - name: Set up Ruby uses: ruby/setup-ruby@v1 with: diff --git a/README.md b/README.md index ec41fa853..382f6a038 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ The underlying CodeQL CLI, used in this action, is licensed under the [GitHub Co ## Usage +This is a short walkthrough, but for more information read [configuring code scanning](https://help.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning). + To get code scanning results from CodeQL analysis on your repo you can use the following workflow as a template: ```yaml @@ -18,6 +20,7 @@ name: "Code Scanning - Action" on: push: + pull_request: schedule: - cron: '0 0 * * 0' @@ -33,6 +36,17 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v2 + with: + # Must fetch at least the immediate parents so that if this is + # a pull request then we can checkout the head of the pull request. + # Only include this option if you are running this workflow on pull requests. + fetch-depth: 2 + + # If this run was triggered by a pull request event then checkout + # the head of the pull request instead of the merge commit. + # Only include this step if you are running this workflow on pull requests. + - run: git checkout HEAD^2 + if: ${{ github.event_name == 'pull_request' }} # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL @@ -78,24 +92,9 @@ If you prefer to integrate this within an existing CI workflow, it should end up uses: github/codeql-action/analyze@v1 ``` -### Actions triggers - -The CodeQL action should be run on `push` events, and on a `schedule`. `Push` events allow us to do a detailed analysis of the delta in a pull request, while the `schedule` event ensures that GitHub regularly scans the repository for the latest vulnerabilities, even if the repository becomes inactive. This action does not support the `pull_request` event. - -### Configuration - -You may optionally specify additional queries for CodeQL to execute by using a config file. The queries must belong to a [QL pack](https://help.semmle.com/codeql/codeql-cli/reference/qlpack-overview.html) and can be in your repository or any public repository. You can choose a single .ql file, a folder containing multiple .ql files, a .qls [query suite](https://help.semmle.com/codeql/codeql-cli/procedures/query-suites.html) file, or any combination of the above. To use queries from other repositories use the same syntax as when [using an action](https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsuses). +### Configuration file -You can disable the default queries using `disable-default-queries: true`. - -You can choose to ignore some files or folders from the analysis, or include additional files/folders for analysis. This *only* works for Javascript and Python analysis. -Identifying potential files for extraction: - -- Scans each folder that's defined as `paths` in turn, traversing subfolders, and looking for relevant files. -- If it finds a subfolder that's defined as `paths-ignore`, stop traversing. -- If a file or folder is both in `paths` and `paths-ignore`, the `paths-ignore` is ignored. - -Use the `config-file` parameter of the init action to enable the configuration file. For example: +Use the `config-file` parameter of the `init` action to enable the configuration file. The value of `config-file` is the path to the configuration file you want to use. This example loads the configuration file `./.github/codeql/codeql-config.yml`. ```yaml - uses: github/codeql-action/init@v1 @@ -103,72 +102,8 @@ Use the `config-file` parameter of the init action to enable the configuration f config-file: ./.github/codeql/codeql-config.yml ``` -A config file looks like this: - -```yaml -name: "My CodeQL config" - -disable-default-queries: true - -queries: - - name: In-repo queries (Runs the queries located in the my-queries folder of the repo) - uses: ./my-queries - - name: External Javascript QL pack (Runs a QL pack located in an external repo) - uses: /Semmle/ql/javascript/ql/src/Electron@master - - name: External query (Runs a single query located in an external QL pack) - uses: Semmle/ql/javascript/ql/src/AngularJS/DeadAngularJSEventListener.ql@master - - name: Select query suite (Runs a query suites) - uses: ./codeql-querypacks/complex-python-querypack/rootAndBar.qls - -paths: - - src/util.ts - -paths-ignore: - - src - - lib -``` +The configuration file must be located within the local repository. For information on how to write a configuration file, see "[Using a custom configuration](https://help.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#using-a-custom-configuration)." ## Troubleshooting -### Trouble with Go dependencies - -#### If you use a vendor directory - -Try passing - -```yaml -env: - GOFLAGS: "-mod=vendor" -``` - -to `github/codeql-action/analyze`. - -#### If you do not use a vendor directory - -Dependencies on public repositories should just work. If you have dependencies on private repositories, one option is to use `git config` and a [personal access token](https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line) to authenticate when downloading dependencies. Add a section like - -```yaml -steps: - - name: Configure git private repo access - env: - TOKEN: ${{ secrets.GITHUB_PAT }} - run: | - git config --global url."https://${TOKEN}@github.com/foo/bar".insteadOf "https://github.com/foo/bar" - git config --global url."https://${TOKEN}@github.com/foo/baz".insteadOf "https://github.com/foo/baz" -``` - -before any codeql actions. A similar thing can also be done with an SSH key or deploy key. - -### C# using dotnet version 2 on linux - -This currently requires invoking `dotnet` with the `/p:UseSharedCompilation=false` flag. For example: - -```shell -dotnet build /p:UseSharedCompilation=false -``` - -Version 3 does not require the additional flag. - -### Analysing Go together with other languages on `macos-latest` - -When running on macos it is currently not possible to analyze Go in conjunction with any of Java, C/C++, or C#. Each language can still be analyzed separately. \ No newline at end of file +Read about [troubleshooting code scanning](https://help.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-code-scanning). diff --git a/init/action.yml b/init/action.yml index 2a0750d69..2e7c9ee99 100644 --- a/init/action.yml +++ b/init/action.yml @@ -5,7 +5,7 @@ inputs: tools: description: URL of CodeQL tools required: false - default: https://github.com/github/codeql-action/releases/download/codeql-bundle-20200427/codeql-bundle.tar.gz + default: https://github.com/github/codeql-action/releases/download/codeql-bundle-20200601/codeql-bundle.tar.gz languages: description: The languages to be analysed required: false diff --git a/lib/config-utils.js b/lib/config-utils.js index 13882c5a0..a04a322b8 100644 --- a/lib/config-utils.js +++ b/lib/config-utils.js @@ -21,12 +21,15 @@ class ExternalQuery { } } exports.ExternalQuery = ExternalQuery; +// The set of acceptable values for built-in suites from the codeql bundle +const builtinSuites = ['security-extended', 'security-and-quality']; class Config { constructor() { this.name = ""; this.disableDefaultQueries = false; this.additionalQueries = []; this.externalQueries = []; + this.additionalSuites = []; this.pathsIgnore = []; this.paths = []; } @@ -39,9 +42,33 @@ class Config { } // Check for the local path case before we start trying to parse the repository name if (queryUses.startsWith("./")) { - this.additionalQueries.push(queryUses.slice(2)); + const localQueryPath = queryUses.slice(2); + // Resolve the local path against the workspace so that when this is + // passed to codeql it resolves to exactly the path we expect it to resolve to. + const workspacePath = util.getRequiredEnvParam('GITHUB_WORKSPACE'); + const absoluteQueryPath = path.join(workspacePath, localQueryPath); + // Check the file exists + if (!fs.existsSync(absoluteQueryPath)) { + throw new Error(getLocalPathDoesNotExist(localQueryPath)); + } + // Check the local path doesn't jump outside the repo using '..' or symlinks + if (!(fs.realpathSync(absoluteQueryPath) + path.sep).startsWith(workspacePath + path.sep)) { + throw new Error(getLocalPathOutsideOfRepository(localQueryPath)); + } + this.additionalQueries.push(absoluteQueryPath); return; } + // Check for one of the builtin suites + if (queryUses.indexOf('/') === -1 && queryUses.indexOf('@') === -1) { + const suite = builtinSuites.find((suite) => suite === queryUses); + if (suite) { + this.additionalSuites.push(suite); + return; + } + else { + throw new Error(getQueryUsesIncorrect(queryUses)); + } + } let tok = queryUses.split('@'); if (tok.length !== 2) { throw new Error(getQueryUsesIncorrect(queryUses)); @@ -74,9 +101,21 @@ function getQueryUsesBlank() { } exports.getQueryUsesBlank = getQueryUsesBlank; function getQueryUsesIncorrect(queryUses) { - return '"uses" value for queries must be a path, or owner/repo@ref \n Found: ' + queryUses; + return '"uses" value for queries must be a built-in suite (' + builtinSuites.join(' or ') + + '), a relative path, or of the form owner/repo@ref\n' + + 'Found: ' + queryUses; } exports.getQueryUsesIncorrect = getQueryUsesIncorrect; +function getLocalPathOutsideOfRepository(localPath) { + return 'Unable to use queries from local path "' + localPath + + '" as it is outside of the repository'; +} +exports.getLocalPathOutsideOfRepository = getLocalPathOutsideOfRepository; +function getLocalPathDoesNotExist(localPath) { + return 'Unable to use queries from local path "' + localPath + + '" as the path does not exist in the repository'; +} +exports.getLocalPathDoesNotExist = getLocalPathDoesNotExist; function getConfigFileOutsideWorkspaceErrorMessage(configFile) { return 'The configuration file "' + configFile + '" is outside of the workspace'; } diff --git a/lib/config-utils.js.map b/lib/config-utils.js.map index 46cc1aaa6..3c639b48a 100644 --- a/lib/config-utils.js.map +++ b/lib/config-utils.js.map @@ -1 +1 @@ -{"version":3,"file":"config-utils.js","sourceRoot":"","sources":["../src/config-utils.ts"],"names":[],"mappings":";;;;;;;;;AAAA,oDAAsC;AACtC,gDAAkC;AAClC,uCAAyB;AACzB,8CAAgC;AAChC,2CAA6B;AAE7B,6CAA+B;AAE/B,MAAa,aAAa;IAKtB,YAAY,UAAkB,EAAE,GAAW;QAFpC,SAAI,GAAG,EAAE,CAAC;QAGb,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;CACJ;AATD,sCASC;AAED,MAAa,MAAM;IAAnB;QACW,SAAI,GAAG,EAAE,CAAC;QACV,0BAAqB,GAAG,KAAK,CAAC;QAC9B,sBAAiB,GAAa,EAAE,CAAC;QACjC,oBAAe,GAAoB,EAAE,CAAC;QACtC,gBAAW,GAAa,EAAE,CAAC;QAC3B,UAAK,GAAa,EAAE,CAAC;IA4ChC,CAAC;IA1CU,QAAQ,CAAC,SAAiB;QAC7B,qEAAqE;QACrE,kDAAkD;QAClD,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,SAAS,KAAK,EAAE,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC;SACxC;QAED,oFAAoF;QACpF,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YAC5B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,OAAO;SACV;QAED,IAAI,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;SACrD;QAED,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACnB,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxB,+BAA+B;QAC/B,+BAA+B;QAC/B,yFAAyF;QACzF,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;SACrD;QACD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YAChB,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;SAClD;QAED,2DAA2D;QAC3D,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC9C,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;SACrD;QAED,IAAI,QAAQ,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC7D,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;YAClB,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;SAC1B;QACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;CACJ;AAlDD,wBAkDC;AAED,SAAgB,iBAAiB;IAC7B,OAAO,0CAA0C,CAAC;AACtD,CAAC;AAFD,8CAEC;AAED,SAAgB,qBAAqB,CAAC,SAAiB;IACnD,OAAO,uEAAuE,GAAG,SAAS,CAAC;AAC/F,CAAC;AAFD,sDAEC;AAED,SAAgB,yCAAyC,CAAC,UAAkB;IACxE,OAAO,0BAA0B,GAAG,UAAU,GAAG,+BAA+B,CAAC;AACrF,CAAC;AAFD,8FAEC;AAED,SAAgB,qCAAqC,CAAC,UAAkB;IACpE,OAAO,0BAA0B,GAAG,UAAU,GAAG,kBAAkB,CAAC;AACxE,CAAC;AAFD,sFAEC;AAED,SAAS,UAAU;IACf,IAAI,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAE9C,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAE5B,qDAAqD;IACrD,IAAI,UAAU,KAAK,EAAE,EAAE;QACnB,IAAI,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACjD,OAAO,MAAM,CAAC;KACjB;IAED,qDAAqD;IACrD,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;IACnE,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAErD,2DAA2D;IAC3D,IAAI,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE;QAC/D,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,UAAU,CAAC,CAAC,CAAC;KAC1E;IAED,mCAAmC;IACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,UAAU,CAAC,CAAC,CAAC;KACtE;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAEtE,IAAI,UAAU,CAAC,IAAI,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE;QACxD,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;KACjC;IAED,IAAI,UAAU,CAAC,yBAAyB,CAAC,IAAI,OAAO,UAAU,CAAC,yBAAyB,CAAC,KAAK,SAAS,EAAE;QACrG,MAAM,CAAC,qBAAqB,GAAG,UAAU,CAAC,yBAAyB,CAAC,CAAC;KACxE;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;IACnC,IAAI,OAAO,IAAI,OAAO,YAAY,KAAK,EAAE;QACrC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACpB,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;gBAChC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC/B;QACL,CAAC,CAAC,CAAC;KACN;IAED,MAAM,WAAW,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAC/C,IAAI,WAAW,IAAI,WAAW,YAAY,KAAK,EAAE;QAC7C,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBAC1B,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACjC;QACL,CAAC,CAAC,CAAC;KACN;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;IAC/B,IAAI,KAAK,IAAI,KAAK,YAAY,KAAK,EAAE;QACjC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACjB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBAC1B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC3B;QACL,CAAC,CAAC,CAAC;KACN;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,eAAe;IACpB,OAAO,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;AACxD,CAAC;AAED,SAAgB,aAAa;IACzB,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,CAAC;AAClD,CAAC;AAFD,sCAEC;AAED,KAAK,UAAU,UAAU,CAAC,MAAc;IACpC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;IACnC,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IACxD,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC5B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AAC7B,CAAC;AAEM,KAAK,UAAU,UAAU;IAC5B,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;QAC3B,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;KAEnC;SAAM;QACH,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;QACzB,OAAO,MAAM,CAAC;KACjB;AACL,CAAC;AAfD,gCAeC"} \ No newline at end of file +{"version":3,"file":"config-utils.js","sourceRoot":"","sources":["../src/config-utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/config-utils.test.js b/lib/config-utils.test.js index 24197d574..c06207d06 100644 --- a/lib/config-utils.test.js +++ b/lib/config-utils.test.js @@ -87,6 +87,7 @@ ava_1.default("load non-empty input", async (t) => { name: my config disable-default-queries: true queries: + - uses: ./ - uses: ./foo - uses: foo/bar@dev paths-ignore: @@ -98,12 +99,14 @@ ava_1.default("load non-empty input", async (t) => { const expectedConfig = new configUtils.Config(); expectedConfig.name = 'my config'; expectedConfig.disableDefaultQueries = true; - expectedConfig.additionalQueries.push('foo'); + expectedConfig.additionalQueries.push(tmpDir); + expectedConfig.additionalQueries.push(path.join(tmpDir, 'foo')); expectedConfig.externalQueries = [new configUtils.ExternalQuery('foo/bar', 'dev')]; expectedConfig.pathsIgnore = ['a', 'b']; expectedConfig.paths = ['c/d']; fs.writeFileSync(path.join(tmpDir, 'input'), inputFileContents, 'utf8'); setInput('config-file', 'input'); + fs.mkdirSync(path.join(tmpDir, 'foo')); const actualConfig = await configUtils.loadConfig(); // Should exactly equal the object we constructed earlier t.deepEqual(actualConfig, expectedConfig); @@ -195,7 +198,9 @@ const testInputs = { "foo/bar": configUtils.getQueryUsesIncorrect("foo/bar"), "foo/bar@v1@v2": configUtils.getQueryUsesIncorrect("foo/bar@v1@v2"), "foo@master": configUtils.getQueryUsesIncorrect("foo@master"), - "https://github.com/foo/bar@master": configUtils.getQueryUsesIncorrect("https://github.com/foo/bar@master") + "https://github.com/foo/bar@master": configUtils.getQueryUsesIncorrect("https://github.com/foo/bar@master"), + "./foo": configUtils.getLocalPathDoesNotExist("foo"), + "./..": configUtils.getLocalPathOutsideOfRepository(".."), }; for (const [input, result] of Object.entries(testInputs)) { ava_1.default("load invalid input - queries uses \"" + input + "\"", async (t) => { diff --git a/lib/config-utils.test.js.map b/lib/config-utils.test.js.map index 6aa5421e0..3e3bd5601 100644 --- a/lib/config-utils.test.js.map +++ b/lib/config-utils.test.js.map @@ -1 +1 @@ -{"version":3,"file":"config-utils.test.js","sourceRoot":"","sources":["../src/config-utils.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"config-utils.test.js","sourceRoot":"","sources":["../src/config-utils.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/finalize-db.js b/lib/finalize-db.js index 99f5ea7f3..0207bda13 100644 --- a/lib/finalize-db.js +++ b/lib/finalize-db.js @@ -67,26 +67,50 @@ async function finalizeDatabaseCreation(codeqlCmd, databaseFolder) { core.endGroup(); } } +async function runResolveQueries(codeqlCmd, queries) { + let output = ''; + const options = { + listeners: { + stdout: (data) => { + output += data.toString(); + } + } + }; + await exec.exec(codeqlCmd, [ + 'resolve', + 'queries', + ...queries, + '--format=bylanguage' + ], options); + return JSON.parse(output); +} async function resolveQueryLanguages(codeqlCmd, config) { let res = new Map(); - if (config.additionalQueries.length !== 0) { - let resolveQueriesOutput = ''; - const options = { - listeners: { - stdout: (data) => { - resolveQueriesOutput += data.toString(); - } + if (!config.disableDefaultQueries || config.additionalSuites.length !== 0) { + const suites = []; + for (const language of await util.getLanguages()) { + if (!config.disableDefaultQueries) { + suites.push(language + '-code-scanning.qls'); } - }; - await exec.exec(codeqlCmd, [ - 'resolve', - 'queries', - ...config.additionalQueries, - '--format=bylanguage' - ], options); - const resolveQueriesOutputObject = JSON.parse(resolveQueriesOutput); + for (const additionalSuite of config.additionalSuites) { + suites.push(language + '-' + additionalSuite + '.qls'); + } + } + const resolveQueriesOutputObject = await runResolveQueries(codeqlCmd, suites); for (const [language, queries] of Object.entries(resolveQueriesOutputObject.byLanguage)) { - res[language] = Object.keys(queries); + if (res[language] === undefined) { + res[language] = []; + } + res[language].push(...Object.keys(queries)); + } + } + if (config.additionalQueries.length !== 0) { + const resolveQueriesOutputObject = await runResolveQueries(codeqlCmd, config.additionalQueries); + for (const [language, queries] of Object.entries(resolveQueriesOutputObject.byLanguage)) { + if (res[language] === undefined) { + res[language] = []; + } + res[language].push(...Object.keys(queries)); } const noDeclaredLanguage = resolveQueriesOutputObject.noDeclaredLanguage; const noDeclaredLanguageQueries = Object.keys(noDeclaredLanguage); @@ -106,11 +130,16 @@ async function runQueries(codeqlCmd, databaseFolder, sarifFolder, config) { const queriesPerLanguage = await resolveQueryLanguages(codeqlCmd, config); for (let database of fs.readdirSync(databaseFolder)) { core.startGroup('Analyzing ' + database); - const queries = []; - if (!config.disableDefaultQueries) { - queries.push(database + '-code-scanning.qls'); + const queries = queriesPerLanguage[database] || []; + if (queries.length === 0) { + throw new Error('Unable to analyse ' + database + ' as no queries were selected for this language'); } - queries.push(...(queriesPerLanguage[database] || [])); + // Pass the queries to codeql using a file instead of using the command + // line to avoid command line length restrictions, particularly on windows. + const querySuite = path.join(databaseFolder, database + '-queries.qls'); + const querySuiteContents = queries.map(q => '- query: ' + q).join('\n'); + fs.writeFileSync(querySuite, querySuiteContents); + core.debug('Query suite file for ' + database + '...\n' + querySuiteContents); const sarifFile = path.join(sarifFolder, database + '.sarif'); await exec.exec(codeqlCmd, [ 'database', @@ -120,7 +149,7 @@ async function runQueries(codeqlCmd, databaseFolder, sarifFolder, config) { '--format=sarif-latest', '--output=' + sarifFile, '--no-sarif-add-snippets', - ...queries + querySuite ]); core.debug('SARIF results for database ' + database + ' created at "' + sarifFile + '"'); core.endGroup(); diff --git a/lib/finalize-db.js.map b/lib/finalize-db.js.map index 50b3c0923..5da86defe 100644 --- a/lib/finalize-db.js.map +++ b/lib/finalize-db.js.map @@ -1 +1 @@ -{"version":3,"file":"finalize-db.js","sourceRoot":"","sources":["../src/finalize-db.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"finalize-db.js","sourceRoot":"","sources":["../src/finalize-db.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/upload-lib.js b/lib/upload-lib.js index f8cba1c4e..86ae16f2c 100644 --- a/lib/upload-lib.js +++ b/lib/upload-lib.js @@ -166,7 +166,7 @@ async function uploadFiles(sarifFiles) { return false; } } - const commitOid = util.getRequiredEnvParam('GITHUB_SHA'); + const commitOid = await util.getCommitOid(); const workflowRunIDStr = util.getRequiredEnvParam('GITHUB_RUN_ID'); const ref = util.getRef(); const analysisKey = await util.getAnalysisKey(); diff --git a/lib/upload-lib.js.map b/lib/upload-lib.js.map index 5934dd4c3..77731102a 100644 --- a/lib/upload-lib.js.map +++ b/lib/upload-lib.js.map @@ -1 +1 @@ -{"version":3,"file":"upload-lib.js","sourceRoot":"","sources":["../src/upload-lib.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"upload-lib.js","sourceRoot":"","sources":["../src/upload-lib.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/util.js b/lib/util.js index 16cd362f9..adf4aa365 100644 --- a/lib/util.js +++ b/lib/util.js @@ -11,6 +11,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); const core = __importStar(require("@actions/core")); +const exec = __importStar(require("@actions/exec")); const http = __importStar(require("@actions/http-client")); const auth = __importStar(require("@actions/http-client/auth")); const octokit = __importStar(require("@octokit/rest")); @@ -33,12 +34,6 @@ function should_abort(actionName, requireInitActionHasRun) { core.setFailed('GITHUB_REF must be set.'); return true; } - // Should abort if called on a merge commit for a pull request. - if (ref.startsWith('refs/pull/')) { - core.warning('The CodeQL ' + actionName + ' action is intended for workflows triggered on `push` events, ' - + 'but the current workflow is running on a pull request. Aborting.'); - return true; - } // If the init action is required, then check the it completed successfully. if (requireInitActionHasRun && process.env[sharedEnv.CODEQL_ACTION_INIT_COMPLETED] === undefined) { core.setFailed('The CodeQL ' + actionName + ' action cannot be used unless the CodeQL init action is run first. Aborting.'); @@ -151,6 +146,21 @@ async function getLanguages() { return languages; } exports.getLanguages = getLanguages; +/** + * Gets the SHA of the commit that is currently checked out. + */ +async function getCommitOid() { + let commitOid = ''; + await exec.exec('git', ['rev-parse', 'HEAD'], { + silent: true, + listeners: { + stdout: (data) => { commitOid += data.toString(); }, + stderr: (data) => { process.stderr.write(data); } + } + }); + return commitOid.trim(); +} +exports.getCommitOid = getCommitOid; /** * Get the path of the currently executing workflow. */ @@ -196,8 +206,20 @@ exports.getAnalysisKey = getAnalysisKey; * Get the ref currently being analyzed. */ function getRef() { - // it's in the form "refs/heads/master" - return getRequiredEnvParam('GITHUB_REF'); + // Will be in the form "refs/heads/master" on a push event + // or in the form "refs/pull/N/merge" on a pull_request event + const ref = getRequiredEnvParam('GITHUB_REF'); + // For pull request refs we want to convert from the 'merge' ref + // to the 'head' ref, as that is what we want to analyse. + // There should have been some code earlier in the workflow to do + // the checkout, but we have no way of verifying that here. + const pull_ref_regex = /refs\/pull\/(\d+)\/merge/; + if (pull_ref_regex.test(ref)) { + return ref.replace(pull_ref_regex, 'refs/pull/$1/head'); + } + else { + return ref; + } } exports.getRef = getRef; /** diff --git a/lib/util.js.map b/lib/util.js.map index 6e83d9e68..0711f51fc 100644 --- a/lib/util.js.map +++ b/lib/util.js.map @@ -1 +1 @@ -{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/config-utils.test.ts b/src/config-utils.test.ts index 779851118..874a91b84 100644 --- a/src/config-utils.test.ts +++ b/src/config-utils.test.ts @@ -91,6 +91,7 @@ test("load non-empty input", async t => { name: my config disable-default-queries: true queries: + - uses: ./ - uses: ./foo - uses: foo/bar@dev paths-ignore: @@ -103,7 +104,8 @@ test("load non-empty input", async t => { const expectedConfig = new configUtils.Config(); expectedConfig.name = 'my config'; expectedConfig.disableDefaultQueries = true; - expectedConfig.additionalQueries.push('foo'); + expectedConfig.additionalQueries.push(tmpDir); + expectedConfig.additionalQueries.push(path.join(tmpDir, 'foo')); expectedConfig.externalQueries = [new configUtils.ExternalQuery('foo/bar', 'dev')]; expectedConfig.pathsIgnore = ['a', 'b']; expectedConfig.paths = ['c/d']; @@ -111,6 +113,8 @@ test("load non-empty input", async t => { fs.writeFileSync(path.join(tmpDir, 'input'), inputFileContents, 'utf8'); setInput('config-file', 'input'); + fs.mkdirSync(path.join(tmpDir, 'foo')); + const actualConfig = await configUtils.loadConfig(); // Should exactly equal the object we constructed earlier @@ -222,7 +226,9 @@ const testInputs = { "foo/bar": configUtils.getQueryUsesIncorrect("foo/bar"), "foo/bar@v1@v2": configUtils.getQueryUsesIncorrect("foo/bar@v1@v2"), "foo@master": configUtils.getQueryUsesIncorrect("foo@master"), - "https://github.com/foo/bar@master": configUtils.getQueryUsesIncorrect("https://github.com/foo/bar@master") + "https://github.com/foo/bar@master": configUtils.getQueryUsesIncorrect("https://github.com/foo/bar@master"), + "./foo": configUtils.getLocalPathDoesNotExist("foo"), + "./..": configUtils.getLocalPathOutsideOfRepository(".."), }; for (const [input, result] of Object.entries(testInputs)) { diff --git a/src/config-utils.ts b/src/config-utils.ts index ab2a67bb4..c38c59df3 100644 --- a/src/config-utils.ts +++ b/src/config-utils.ts @@ -17,11 +17,17 @@ export class ExternalQuery { } } +// The set of acceptable values for built-in suites from the codeql bundle +const builtinSuites = ['security-extended', 'security-and-quality'] as const; +// Derive the union type from the array values +type BuiltInSuite = typeof builtinSuites[number]; + export class Config { public name = ""; public disableDefaultQueries = false; public additionalQueries: string[] = []; public externalQueries: ExternalQuery[] = []; + public additionalSuites: BuiltInSuite[] = []; public pathsIgnore: string[] = []; public paths: string[] = []; @@ -35,10 +41,37 @@ export class Config { // Check for the local path case before we start trying to parse the repository name if (queryUses.startsWith("./")) { - this.additionalQueries.push(queryUses.slice(2)); + const localQueryPath = queryUses.slice(2); + // Resolve the local path against the workspace so that when this is + // passed to codeql it resolves to exactly the path we expect it to resolve to. + const workspacePath = util.getRequiredEnvParam('GITHUB_WORKSPACE'); + const absoluteQueryPath = path.join(workspacePath, localQueryPath); + + // Check the file exists + if (!fs.existsSync(absoluteQueryPath)) { + throw new Error(getLocalPathDoesNotExist(localQueryPath)); + } + + // Check the local path doesn't jump outside the repo using '..' or symlinks + if (!(fs.realpathSync(absoluteQueryPath) + path.sep).startsWith(workspacePath + path.sep)) { + throw new Error(getLocalPathOutsideOfRepository(localQueryPath)); + } + + this.additionalQueries.push(absoluteQueryPath); return; } + // Check for one of the builtin suites + if (queryUses.indexOf('/') === -1 && queryUses.indexOf('@') === -1) { + const suite = builtinSuites.find((suite) => suite === queryUses); + if (suite) { + this.additionalSuites.push(suite); + return; + } else { + throw new Error(getQueryUsesIncorrect(queryUses)); + } + } + let tok = queryUses.split('@'); if (tok.length !== 2) { throw new Error(getQueryUsesIncorrect(queryUses)); @@ -74,7 +107,19 @@ export function getQueryUsesBlank(): string { } export function getQueryUsesIncorrect(queryUses: string): string { - return '"uses" value for queries must be a path, or owner/repo@ref \n Found: ' + queryUses; + return '"uses" value for queries must be a built-in suite (' + builtinSuites.join(' or ') + + '), a relative path, or of the form owner/repo@ref\n' + + 'Found: ' + queryUses; +} + +export function getLocalPathOutsideOfRepository(localPath: string): string { + return 'Unable to use queries from local path "' + localPath + + '" as it is outside of the repository'; +} + +export function getLocalPathDoesNotExist(localPath: string): string { + return 'Unable to use queries from local path "' + localPath + + '" as the path does not exist in the repository'; } export function getConfigFileOutsideWorkspaceErrorMessage(configFile: string): string { diff --git a/src/finalize-db.ts b/src/finalize-db.ts index a49bb7852..8dfa29226 100644 --- a/src/finalize-db.ts +++ b/src/finalize-db.ts @@ -69,32 +69,74 @@ async function finalizeDatabaseCreation(codeqlCmd: string, databaseFolder: strin } } +interface ResolveQueriesOutput { + byLanguage: { + [language: string]: { + [queryPath: string]: {} + } + }; + noDeclaredLanguage: { + [queryPath: string]: {} + }; + multipleDeclaredLanguages: { + [queryPath: string]: {} + }; +} + +async function runResolveQueries(codeqlCmd: string, queries: string[]): Promise { + let output = ''; + const options = { + listeners: { + stdout: (data: Buffer) => { + output += data.toString(); + } + } + }; + + await exec.exec( + codeqlCmd, [ + 'resolve', + 'queries', + ...queries, + '--format=bylanguage' + ], + options); + + return JSON.parse(output); +} + async function resolveQueryLanguages(codeqlCmd: string, config: configUtils.Config): Promise> { let res = new Map(); - if (config.additionalQueries.length !== 0) { - let resolveQueriesOutput = ''; - const options = { - listeners: { - stdout: (data: Buffer) => { - resolveQueriesOutput += data.toString(); - } + if (!config.disableDefaultQueries || config.additionalSuites.length !== 0) { + const suites: string[] = []; + for (const language of await util.getLanguages()) { + if (!config.disableDefaultQueries) { + suites.push(language + '-code-scanning.qls'); + } + for (const additionalSuite of config.additionalSuites) { + suites.push(language + '-' + additionalSuite + '.qls'); } - }; + } - await exec.exec( - codeqlCmd, [ - 'resolve', - 'queries', - ...config.additionalQueries, - '--format=bylanguage' - ], - options); + const resolveQueriesOutputObject = await runResolveQueries(codeqlCmd, suites); - const resolveQueriesOutputObject = JSON.parse(resolveQueriesOutput); + for (const [language, queries] of Object.entries(resolveQueriesOutputObject.byLanguage)) { + if (res[language] === undefined) { + res[language] = []; + } + res[language].push(...Object.keys(queries)); + } + } + + if (config.additionalQueries.length !== 0) { + const resolveQueriesOutputObject = await runResolveQueries(codeqlCmd, config.additionalQueries); for (const [language, queries] of Object.entries(resolveQueriesOutputObject.byLanguage)) { - res[language] = Object.keys(queries); + if (res[language] === undefined) { + res[language] = []; + } + res[language].push(...Object.keys(queries)); } const noDeclaredLanguage = resolveQueriesOutputObject.noDeclaredLanguage; @@ -120,11 +162,17 @@ async function runQueries(codeqlCmd: string, databaseFolder: string, sarifFolder for (let database of fs.readdirSync(databaseFolder)) { core.startGroup('Analyzing ' + database); - const queries: string[] = []; - if (!config.disableDefaultQueries) { - queries.push(database + '-code-scanning.qls'); + const queries = queriesPerLanguage[database] || []; + if (queries.length === 0) { + throw new Error('Unable to analyse ' + database + ' as no queries were selected for this language'); } - queries.push(...(queriesPerLanguage[database] || [])); + + // Pass the queries to codeql using a file instead of using the command + // line to avoid command line length restrictions, particularly on windows. + const querySuite = path.join(databaseFolder, database + '-queries.qls'); + const querySuiteContents = queries.map(q => '- query: ' + q).join('\n'); + fs.writeFileSync(querySuite, querySuiteContents); + core.debug('Query suite file for ' + database + '...\n' + querySuiteContents); const sarifFile = path.join(sarifFolder, database + '.sarif'); @@ -136,7 +184,7 @@ async function runQueries(codeqlCmd: string, databaseFolder: string, sarifFolder '--format=sarif-latest', '--output=' + sarifFile, '--no-sarif-add-snippets', - ...queries + querySuite ]); core.debug('SARIF results for database ' + database + ' created at "' + sarifFile + '"'); diff --git a/src/upload-lib.ts b/src/upload-lib.ts index d8e9ba3f5..a9dacd90f 100644 --- a/src/upload-lib.ts +++ b/src/upload-lib.ts @@ -173,7 +173,7 @@ async function uploadFiles(sarifFiles: string[]): Promise { } } - const commitOid = util.getRequiredEnvParam('GITHUB_SHA'); + const commitOid = await util.getCommitOid(); const workflowRunIDStr = util.getRequiredEnvParam('GITHUB_RUN_ID'); const ref = util.getRef(); const analysisKey = await util.getAnalysisKey(); diff --git a/src/util.ts b/src/util.ts index a236216b8..bb133295d 100644 --- a/src/util.ts +++ b/src/util.ts @@ -1,4 +1,5 @@ import * as core from '@actions/core'; +import * as exec from '@actions/exec'; import * as http from '@actions/http-client'; import * as auth from '@actions/http-client/auth'; import * as octokit from '@octokit/rest'; @@ -25,13 +26,6 @@ export function should_abort(actionName: string, requireInitActionHasRun: boolea return true; } - // Should abort if called on a merge commit for a pull request. - if (ref.startsWith('refs/pull/')) { - core.warning('The CodeQL ' + actionName + ' action is intended for workflows triggered on `push` events, ' - + 'but the current workflow is running on a pull request. Aborting.'); - return true; - } - // If the init action is required, then check the it completed successfully. if (requireInitActionHasRun && process.env[sharedEnv.CODEQL_ACTION_INIT_COMPLETED] === undefined) { core.setFailed('The CodeQL ' + actionName + ' action cannot be used unless the CodeQL init action is run first. Aborting.'); @@ -152,6 +146,21 @@ export async function getLanguages(): Promise { return languages; } +/** + * Gets the SHA of the commit that is currently checked out. + */ +export async function getCommitOid(): Promise { + let commitOid = ''; + await exec.exec('git', ['rev-parse', 'HEAD'], { + silent: true, + listeners: { + stdout: (data) => { commitOid += data.toString(); }, + stderr: (data) => { process.stderr.write(data); } + } + }); + return commitOid.trim(); +} + /** * Get the path of the currently executing workflow. */ @@ -204,8 +213,20 @@ export async function getAnalysisKey(): Promise { * Get the ref currently being analyzed. */ export function getRef(): string { - // it's in the form "refs/heads/master" - return getRequiredEnvParam('GITHUB_REF'); + // Will be in the form "refs/heads/master" on a push event + // or in the form "refs/pull/N/merge" on a pull_request event + const ref = getRequiredEnvParam('GITHUB_REF'); + + // For pull request refs we want to convert from the 'merge' ref + // to the 'head' ref, as that is what we want to analyse. + // There should have been some code earlier in the workflow to do + // the checkout, but we have no way of verifying that here. + const pull_ref_regex = /refs\/pull\/(\d+)\/merge/; + if (pull_ref_regex.test(ref)) { + return ref.replace(pull_ref_regex, 'refs/pull/$1/head'); + } else { + return ref; + } } interface StatusReport {