Skip to content
Snippets Groups Projects

Code formatting

Closed Grégoire Kubler requested to merge feat/formatter into main
Compare and
17 files
+ 286
307
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