From 12092335850481f1a7f2b041f801737f4bf76ebf Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Tue, 20 Jul 2021 15:31:05 +0200
Subject: [PATCH] [ci] Added lizard code complexity analyser to Doxygen-job.

- Adds issue report on CI log
- Adds full html report as artifact
- Adds code metric lizard_issues (currently 87)
---
 Documentation/mainpage.dox.in          |  4 ++++
 config-cpp-dependencies.txt            |  1 -
 scripts/ci/jobs/build-docs.yml         | 15 +++++++++++++--
 scripts/cmake/DocumentationSetup.cmake |  2 +-
 4 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/Documentation/mainpage.dox.in b/Documentation/mainpage.dox.in
index 46b7acb812e..5839fae2f97 100644
--- a/Documentation/mainpage.dox.in
+++ b/Documentation/mainpage.dox.in
@@ -31,6 +31,10 @@
  * - Data Explorer (GUI) manual: https://gitlab.opengeosys.org/ogs/data_explorer_manual/-/jobs/artifacts/master/raw/ogsde-man.pdf?job=build
  * - Discussion forum: https://discourse.opengeosys.org
  *
+ * \section deps Dependencies
+ *
+ * @image html cmake-dependencies.svg "cmake-dependencies" width=300%
+ * @image html cpp-dependencies.svg "cpp-dependencies" width=300%
  *
  * \section internal_modules Internal Modules
  *
diff --git a/config-cpp-dependencies.txt b/config-cpp-dependencies.txt
index 0680f5f3794..b1bf326da09 100644
--- a/config-cpp-dependencies.txt
+++ b/config-cpp-dependencies.txt
@@ -94,4 +94,3 @@ blacklist: [
   Applications/Utils
   Tests
 ]
-
diff --git a/scripts/ci/jobs/build-docs.yml b/scripts/ci/jobs/build-docs.yml
index e3fd6349c31..696398b1ccf 100644
--- a/scripts/ci/jobs/build-docs.yml
+++ b/scripts/ci/jobs/build-docs.yml
@@ -20,12 +20,20 @@ build docs:
     # 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
+    # cpp-dependencies
     - 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
+    # lizard
+    - python /opt/lizard/lizard.py -l cpp -w -t 8 > lizard.txt || true
+    - cat lizard.txt
+    - NUM_LIZARD_ISSUES=`cat lizard.txt | wc -l`
+    - echo "lizard_issues $NUM_LIZARD_ISSUES" >> metrics.txt
+    - python /opt/lizard/lizard.py -l cpp -t 8 --html -o Lizard.html
+    # build
     - cd build
     - 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 . --graphviz=cmake-dependencies.dot && dot -Tsvg cmake-dependencies.dot -o cmake-dependencies.svg
     - cmake . -DOGS_BUILD_PROCESSES=SteadyStateDiffusion
     - cmake --build . --target doc > >(tee make-docs.output)
     - cat DoxygenWarnings.log|grep -v 'too many nodes'
@@ -53,7 +61,10 @@ build docs:
     paths:
       - Doxygen.html
       - build/docs
-      - build/*-dependencies.svg
+      - build/cpp-dependencies.svg
+      - build/cmake-dependencies.svg
+      - Lizard.html
+      - lizard.txt
     expire_in: 1 week
     reports:
       metrics: build/metrics.txt
diff --git a/scripts/cmake/DocumentationSetup.cmake b/scripts/cmake/DocumentationSetup.cmake
index a9ce78bab59..026aa6a22bc 100644
--- a/scripts/cmake/DocumentationSetup.cmake
+++ b/scripts/cmake/DocumentationSetup.cmake
@@ -38,7 +38,7 @@ set(DOXYGEN_CITE_BIB_FILES
 set(DOXYGEN_QUIET YES)
 set(DOXYGEN_WARN_LOGFILE ${PROJECT_BINARY_DIR}/DoxygenWarnings.log)
 set(DOXYGEN_EXCLUDE_PATTERNS moc_* ui_* CMake*)
-set(DOXYGEN_IMAGE_PATH ${PROJECT_SOURCE_DIR}/Documentation/images)
+set(DOXYGEN_IMAGE_PATH ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/Documentation/images)
 set(DOXYGEN_SOURCE_BROWSER YES)
 set(DOXYGEN_INLINE_SOURCES YES)
 set(DOXYGEN_REFERENCED_BY_RELATION YES)
-- 
GitLab