diff --git a/.gitlab/ci/static_analysis.gitlab-ci.yml b/.gitlab/ci/static_analysis.gitlab-ci.yml
index 940ca77bc48b3e75c4678633ccfaed453a09f7bb..92f08c1e8973ee9116524fd75379209aef0c002b 100644
--- a/.gitlab/ci/static_analysis.gitlab-ci.yml
+++ b/.gitlab/ci/static_analysis.gitlab-ci.yml
@@ -4,7 +4,16 @@ static_analysis:cpp:
     - static_analysis
   allow_failure: true
   script:
-    - cppcheck --enable=all --error-exitcode=-1 src/
+    - mkdir -p $CI_COMMIT_REF_NAME
+    - cppcheck -j 4 --enable=all --inconclusive --force --xml --xml-version=2 . 2> cppcheck-result.xml
+    - cppcheck-htmlreport --file=cppcheck-result.xml --report-dir=$CI_COMMIT_REF_NAME --source-dir=.
+    - python3 -m pip install -U cppcheck_codequality
+    - cppcheck-codequality --input-file=cppcheck-result.xml --output-file=cppcheck.json
+  artifacts:
+    paths: 
+      - $CI_COMMIT_REF_NAME
+    reports:
+      codequality: cppcheck.json
 
 static_analysis:python:
   stage: static_analysis