[PATCH] ci: add job performing static analysis on GitLab CI
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Dec 28, 2023, 11:02 UTC
- Message-ID
- <1536a5ef07ad24dafb5d685b40099882f89e6cc5.1703761005.git.ps@pks.im>
Our GitHub Workflows definitions have a static analysis job that runs the following tasks:
- Coccinelle to check for suggested refactorings.
- `make hdr-check` to check for missing includes or forward
declarations in our header files.- `make check-pot` to check our translations for issues.
- `./ci/check-directional-formatting.bash` to check whether our
sources contain any Unicode directional formatting code points.Add an equivalent job to our GitLab CI definitions.
Signed-off-by: Patrick Steinhardt <ps@pks.im> ---
This addition is inspired by my reftable patch series where I forgot to add a "hash-ll.h" include. This would've been catched by our GitLab CI pipeline if we already had the static-analysis job added in this patch.
These changes are part of [1], which thus also contains an example pipeline run.
[1]: https://gitlab.com/gitlab-org/git/-/merge_requests/79
.gitlab-ci.yml | 10 ++++++++++ ci/install-docker-dependencies.sh | 7 ++++++- 2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cd98bcb18a..793243421c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -51,3 +51,13 @@ test: paths: - t/failed-test-artifacts when: on_failure + +static-analysis: + image: ubuntu:22.04 + variables: + jobname: StaticAnalysis + before_script: + - ./ci/install-docker-dependencies.sh + script: + - ./ci/run-static-analysis.sh + - ./ci/check-directional-formatting.bash diff --git a/ci/install-docker-dependencies.sh b/ci/install-docker-dependencies.sh index 48c43f0f90..eb2c9e1eca 100755 --- a/ci/install-docker-dependencies.sh +++ b/ci/install-docker-dependencies.sh @@ -21,7 +21,7 @@ linux-musl) apache2 apache2-http2 apache2-proxy apache2-ssl apache2-webdav apr-util-dbd_sqlite3 \ bash cvs gnupg perl-cgi perl-dbd-sqlite >/dev/null ;; -linux-*) +linux-*|StaticAnalysis) # Required so that apt doesn't wait for user input on certain packages. export DEBIAN_FRONTEND=noninteractive @@ -31,6 +31,11 @@ linux-*) perl-modules liberror-perl libauthen-sasl-perl libemail-valid-perl \ libdbd-sqlite3-perl libio-socket-ssl-perl libnet-smtp-ssl-perl ${CC_PACKAGE:-${CC:-gcc}} \ apache2 cvs cvsps gnupg libcgi-pm-perl subversion + + if test "$jobname" = StaticAnalysis + then + apt install -q -y coccinelle + fi ;; pedantic) dnf -yq update >/dev/null &&
-- 2.43.GIT