diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index 761d70aa5..e18797b72 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 e2db985ca..3f9df5248 100644
--- a/.github/workflows/integration-testing.yml
+++ b/.github/workflows/integration-testing.yml
@@ -1,6 +1,6 @@
 name: "Integration Testing"
 
-on: [push]
+on: [push, pull_request]
 
 jobs:
   multi-language-repo_test-autodetect-languages:
@@ -16,9 +16,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
@@ -40,9 +39,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 +70,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 +93,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:
@@ -117,4 +113,4 @@ jobs:
       with:
         sarif_file: rubocop.sarif
       env:
-        TEST_MODE: true
\ No newline at end of file
+        TEST_MODE: true
diff --git a/README.md b/README.md
index 09e092f1c..94181b437 100644
--- a/README.md
+++ b/README.md
@@ -18,6 +18,7 @@ name: "Code Scanning - Action"
 
 on:
   push:
+  pull_request:
   schedule:
     - cron: '0 0 * * 0'
 
@@ -33,6 +34,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
diff --git a/lib/upload-lib.js b/lib/upload-lib.js
index 19b9e685a..af4e1a3fe 100644
--- a/lib/upload-lib.js
+++ b/lib/upload-lib.js
@@ -133,7 +133,7 @@ async function uploadFiles(sarifFiles) {
             return false;
         }
         core.exportVariable(sentinelEnvVar, sentinelEnvVar);
-        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 55db2311d..be05da3dd 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/upload-lib.ts b/src/upload-lib.ts
index 0db8ee40b..fa1b52a77 100644
--- a/src/upload-lib.ts
+++ b/src/upload-lib.ts
@@ -136,7 +136,7 @@ async function uploadFiles(sarifFiles: string[]): Promise<boolean> {
         }
         core.exportVariable(sentinelEnvVar, sentinelEnvVar);
 
-        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<string[]> {
     return languages;
 }
 
+/**
+ * Gets the SHA of the commit that is currently checked out.
+ */
+export async function getCommitOid(): Promise<string> {
+    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<string> {
  * 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 {