From: Johannes Schindelin <johannes.schindelin@xxxxxx> Occasionally we receive reviews after patches were integrated, where `sparse` identified problems such as file-local variables or functions being declared as global. By running `sparse` as part of our Continuous Integration, we can catch such things much earlier. Even better: developers who activated GitHub Actions on their forks can catch such issues before even sending their patches to the Git mailing list. This addresses https://github.com/gitgitgadget/git/issues/345 Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> --- ci: run make sparse as a GitHub workflow One of the earliest open source static analyzers is called "sparse", and occasionally Ramsay Jones sends out mails on the Git mailing list that some function or other should be declared static because sparse found out that it is only used within the same file. Let's add a GitHub workflow running "make sparse". Example run: https://github.com/gitgitgadget/git/actions/runs/1026303823 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-994%2Fdscho%2Fci-enable-sparse-v1 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-994/dscho/ci-enable-sparse-v1 Pull-Request: https://github.com/gitgitgadget/git/pull/994 .github/workflows/run-sparse.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .github/workflows/run-sparse.yml diff --git a/.github/workflows/run-sparse.yml b/.github/workflows/run-sparse.yml new file mode 100644 index 00000000000..25f6a6efb40 --- /dev/null +++ b/.github/workflows/run-sparse.yml @@ -0,0 +1,22 @@ +name: Run `sparse` + +on: [push, pull_request] + +jobs: + sparse: + runs-on: ubuntu-20.04 + steps: + - name: Download the `sparse` package + uses: git-for-windows/get-azure-pipelines-artifact@v0 + with: + repository: git/git + definitionId: 10 + artifact: sparse-20.04 + - name: Install the `sparse` package + run: sudo dpkg -i sparse-20.04/sparse_*.deb + - name: Install a couple of dependencies + run: | + sudo apt-get install -q -y libssl-dev libcurl4-openssl-dev libexpat-dev gettext zlib1g-dev + - uses: actions/checkout@v2 + - name: make sparse + run: make sparse \ No newline at end of file base-commit: ebf3c04b262aa27fbb97f8a0156c2347fecafafb -- gitgitgadget