Skip to content
Snippets Groups Projects

Code formatting

Closed Grégoire Kubler requested to merge feat/formatter into main
Compare and
17 files
+ 289
331
Compare changes
  • Side-by-side
  • Inline
Files
17
+ 88
0
 
include:
 
- local: '/.gitlab/ci/default.gitlab-ci.yml'
 
 
code_quality:static_analysis:cpp:
 
stage: code_quality
 
extends:
 
- .rules:code_quality:cpp
 
tags:
 
- static_analysis
 
before_script :
 
- !reference [.retrieve_deps:apt, script]
 
- apt-get install -y cppcheck python-is-python3
 
- python -m pip install Pygments
 
- python -m pip install -U cppcheck_codequality
 
 
script:
 
- 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=src
 
- cppcheck-codequality --input-file=cppcheck-result.xml --output-file=cppcheck.json
 
- mkdir -p public/cpp
 
- mv $CI_COMMIT_REF_NAME public/cpp/
 
artifacts:
 
paths:
 
- public
 
reports:
 
codequality: cppcheck.json
 
 
code_quality:coverage:ubuntu_cpp:
 
stage: code_quality
 
needs: ["build:ubuntu_cpp"]
 
extends:
 
- .build:variable:aidge_install
 
- .rules:code_quality:cpp
 
tags:
 
- docker
 
before_script:
 
- !reference [.retrieve_deps:apt, script]
 
- apt-get install -qq -y gcovr
 
script:
 
- cd $BUILD_DIR
 
- ctest --output-on-failure
 
# HTML report for visualization
 
- gcovr --html-details --exclude-unreachable-branches -o coverage.html --root ${CI_PROJECT_DIR} --filter '\.\./include/' --filter '\.\./src/'
 
# Coberta XML report for Gitlab integration
 
- gcovr --xml-pretty --exclude-unreachable-branches --print-summary -o coverage.xml --root ${CI_PROJECT_DIR} --filter '\.\./include/' --filter '\.\./src/'
 
coverage: /^\s*lines:\s*\d+.\d+\%/
 
artifacts:
 
name: ${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}
 
expire_in: 2 days
 
reports:
 
coverage_report:
 
coverage_format: cobertura
 
path: $BUILD_DIR/coverage.xml
 
 
 
code_quality:code_format:cpp:
 
stage: code_quality
 
extends: .rules:format_check:cpp
 
tags:
 
- docker
 
before_script:
 
- !reference [.retrieve_deps:apt, script]
 
- apt install -y -qq wget git
 
- wget https://apt.llvm.org/llvm.sh
 
- chmod u+x llvm.sh
 
- ./llvm.sh 18
 
- apt-get install -y -qq clang-format-18 software-properties-common lsb-release
 
script:
 
- echo "Ensuring that all cpp files modified in previous commit are correctly formatted. If not, this job will fail."
 
- modified_files=$(git diff --name-only HEAD origin/dev) # change "dev" to $CI_DEFAULT_BRANCH when whole codebase is formatted
 
- modified_CXX_files=$(echo $modified_files | grep ".h$\|.c$\|.hpp$\|.cpp$\|.cu$" || true )
 
- >
 
if [[ -n $modified_CXX_files ]]; then
 
CXX_files_to_format=$(clang-format-18 --style=file:.clang-format --dry-run $modified_CXX_files)
 
CXX_files_to_format=$(( $CXX_files_to_format != "" ? $CXX_files_to_format : ""))
 
echo "CXX FILES TO FORMAT :"
 
echo "$CXX_files_to_format"
 
fi
 
- >
 
if [[ "$CXX_files_to_format" != "" ]]; then
 
echo "You pushed unformatted files, setup a code formatter before pushing your code."
 
echo "For more informations about code formatting head to the dedicated wiki page :"
 
echo "https://gitlab.eclipse.org/groups/eclipse/aidge/-/wikis/code-quality-:-formatting-&-linting"
 
exit 1
 
else
 
echo "No files to format, congratulations!"
 
fi
Loading