]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add Cppcheck job to the CI
authorOndřej Surý <ondrej@sury.org>
Thu, 26 Sep 2019 12:47:04 +0000 (14:47 +0200)
committerOndřej Surý <ondrej@sury.org>
Thu, 3 Oct 2019 07:04:26 +0000 (09:04 +0200)
This MR changes the default Debian sid build to wrap make with bear
that creates compilation database and use the compilation database
to run Cppcheck on the source files systematically.

The job is currently set to be allowed to fail as it will take some
time to fix all the Cppcheck detected issues.

.gitignore
.gitlab-ci.yml

index 1f4d9e378f9af50a2eb02e856623424a2ac441ba..55bc4ffdd4a472349c802e353886a999101b1540 100644 (file)
@@ -56,3 +56,6 @@ kyua.log
 named.memstats
 named.run
 timestamp
+/compile_commands.json
+/cppcheck_html/
+/cppcheck.results
index 041f10cd36644e213ea7f0621f57272ff885517c..c985152e39463f9f1b5bb69ab699a246882eafb1 100644 (file)
@@ -15,6 +15,8 @@ variables:
   BUILD_PARALLEL_JOBS: 6
   TEST_PARALLEL_JOBS: 6
 
+  MAKE: make
+
 stages:
   - precheck
   - build
@@ -22,6 +24,7 @@ stages:
   - system
   - docs
   - push
+  - postcheck
 
 ### Runner Tag Templates
 
@@ -162,7 +165,7 @@ stages:
     - test -w "${CCACHE_DIR}" && export PATH="/usr/lib/ccache:${PATH}"
   script:
     - *configure
-    - make -j${BUILD_PARALLEL_JOBS:-1} -k all V=1
+    - ${MAKE} -j${BUILD_PARALLEL_JOBS:-1} -k all V=1
     - test -z "${RUN_MAKE_INSTALL}" || make install
   dependencies:
     - autoreconf:sid:amd64
@@ -221,6 +224,39 @@ stages:
     expire_in: "1 week"
     when: on_failure
 
+.cppcheck_args: &run_cppcheck |
+  cppcheck --enable=warning,performance,portability,information,missingInclude \
+           --include=config.h \
+           --quiet \
+           --std=c11 \
+           --language=c \
+           --project=compile_commands.json \
+           --error-exitcode=2 \
+           -j ${TEST_PARALLEL_JOBS:-1} \
+           --xml \
+           --output-file=cppcheck.results \
+           --inline-suppr
+
+.cppcheck_report: &cppcheck_report_html |
+  cppcheck-htmlreport --title="BIND 9 ($CI_COMMIT_SHORT_SHA) Cppcheck Report" \
+                      --file=cppcheck.results \
+                      --report-dir=cppcheck_html/
+
+.cppcheck: &cppcheck_job
+  <<: *default_triggering_rules
+  stage: postcheck
+  script:
+    - *run_cppcheck
+  after_script:
+    - *cppcheck_report_html
+  artifacts:
+    paths:
+      - compile_commands.json
+      - cppcheck.results
+      - cppcheck_html/
+    expire_in: "1 week"
+    when: on_failure
+
 ### Job Definitions
 
 # Jobs in the precheck stage
@@ -437,6 +473,7 @@ gcc:sid:amd64:
     CFLAGS: "-Wall -Wextra -O3 -g"
     EXTRA_CONFIGURE: "--enable-dnstap --with-libidn2"
     RUN_MAKE_INSTALL: 1
+    MAKE: bear make
   <<: *debian_sid_amd64_image
   <<: *build_job
 
@@ -454,6 +491,13 @@ unit:gcc:sid:amd64:
     - gcc:sid:amd64
   needs: ["gcc:sid:amd64"]
 
+cppcheck:gcc:sid:amd64:
+  <<: *debian_sid_amd64_image
+  <<: *cppcheck_job
+  dependencies:
+    - gcc:sid:amd64
+  needs: ["gcc:sid:amd64"]
+
 # Jobs for regular GCC builds on Debian Sid (i386)
 
 gcc:sid:i386: