Skip to content
Snippets Groups Projects

Code formatting

Closed Grégoire Kubler requested to merge feat/formatter into main
Compare and
16 files
+ 243
157
Compare changes
  • Side-by-side
  • Inline
Files
16
+ 90
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 python3-pip
- 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:code_quality:cpp
needs: []
variables:
CLANG_VERSION: 20
tags:
- docker
before_script:
- !reference [.retrieve_deps:apt, script]
- apt install -y -qq wget git software-properties-common lsb-release
- wget https://apt.llvm.org/llvm.sh
- chmod u+x llvm.sh
- ./llvm.sh $CLANG_VERSION
- apt-get install -y -qq clang-format-$CLANG_VERSION
script:
- echo "Retrieving all cpp/hpp files that differ from dev branch."
- echo "Ensuring that all these files 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 -Ei '\.(h|c|hpp|cpp|cu)$' || true)
- echo "modified CXX files :\ $modified_CXX_files"
- >
if [[ -n "$modified_CXX_files" ]]; then
CLANG_OUTPUT=$(clang-format-$CLANG_VERSION --style=file:.clang-format --dry-run $modified_CXX_files || true )
fi
- >
if [[ "$CLANG_OUTPUT" != "" ]]; 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, Job successful!"
fi
Loading