From a385058a6452a4dcf674e984482abe005c7bec02 Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Tue, 20 Jul 2021 14:49:19 +0200
Subject: [PATCH] [ci] Dependencies with CMake and cpp-dependencies on
 Doxygen-job.

- Generated SVGs stores as build artifacts.
- New code ci metric num_cycles (currently 4).
---
 scripts/ci/jobs/build-docs.yml | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/scripts/ci/jobs/build-docs.yml b/scripts/ci/jobs/build-docs.yml
index cfc139f6360..e3fd6349c31 100644
--- a/scripts/ci/jobs/build-docs.yml
+++ b/scripts/ci/jobs/build-docs.yml
@@ -16,17 +16,21 @@ build docs:
     when: runner_system_failure
   variables:
     DOX_WARNINGS_THRESHOLD: 12
-  before_script:
+  script:
     # HACK to easier linking to the generated pages
     - echo '<meta http-equiv="REFRESH" content="0;URL=build/docs/index.html">' >> Doxygen.html
     - mkdir -p build
+    - NUM_CYCLES=`/opt/cppcheck/bin/cpp-dependencies --stats|grep cycles|cut -d " " -f 2`
+    - echo "num_cycles $NUM_CYCLES" > metrics.txt
+    - /opt/cppcheck/bin/cpp-dependencies --graph cpp-dependencies.dot && dot -Tsvg cpp-dependencies.dot -o build/cpp-dependencies.svg
     - cd build
-  script:
-    - cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release -DOGS_USE_CONAN=OFF -DOGS_USE_POETRY=OFF -DOGS_BUILD_PROCESSES=SteadyStateDiffusion
+    - cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release -DOGS_USE_CONAN=OFF -DOGS_USE_POETRY=OFF
+    - cmake . --graphviz=cmake-dependencies.dot && dot -Tsvg cmake-dependencies.dot
+    - cmake . -DOGS_BUILD_PROCESSES=SteadyStateDiffusion
     - cmake --build . --target doc > >(tee make-docs.output)
     - cat DoxygenWarnings.log|grep -v 'too many nodes'
     - NUM_DOX_WARNINGS=`cat DoxygenWarnings.log|grep warning:|grep -v 'too many nodes'|wc -l|xargs`
-    - echo "doxygen_warnings $NUM_DOX_WARNINGS" > metrics.txt
+    - echo "doxygen_warnings $NUM_DOX_WARNINGS" >> metrics.txt
     - |
       if [[ ( "$NUM_DOX_WARNINGS" > "$DOX_WARNINGS_THRESHOLD" ) ]]; then
         echo "Error: Number of Doxygen warnings exceeded threshold –> $NUM_DOX_WARNINGS > $DOX_WARNINGS_THRESHOLD"
@@ -49,6 +53,7 @@ build docs:
     paths:
       - Doxygen.html
       - build/docs
+      - build/*-dependencies.svg
     expire_in: 1 week
     reports:
       metrics: build/metrics.txt
-- 
GitLab