Skip to content

Commit

Permalink
Add clang-tidy CI test (#56)
Browse files Browse the repository at this point in the history
* initial work to add clang-tidy workflow

* add permission to run script

* add missing dependencies

* update clang-tidy config

* start fixing issues with braces

* continue fixing issues with braces

* continue fixing issues with braces

* fail if clang-tidy finds something wrong

* add more braces

* add more braces

* fix an performance-type-promotion-in-math-fn issue

* address modernize-concat-nested-namespaces issues

* move to C++17

* add [[nodiscard]] in picsar_array.hpp

* fix some bugprone-narrowing-conversions issues

* add [[nodiscard]] in picsar_span.hpp

* fix modernize-use-equals-default issues

* fix readability-qualified-auto issue

* fix readability-braces-around-statements issues

* fix readability-braces-around-statements issues

* fix readability-braces-around-statements issues

* fix readability-braces-around-statements issues

* add [[nodiscard]] in picsar_tables.hpp

* fix bug

* fix modernize-use-auto issues

* fix narrowing conversion issue

* fix modernize-concat-nested-namespaces issue

* fix readability-avoid-const-params-in-decls issues

* fix performance-type-promotion-in-math-fn issues

* fix const correctness

* fix modernize-use-using issues

* add [[nodiscard]] in engine tables

* fix bug

* fix readability-braces-around-statements issues

* fix performance-unnecessary-value-param

* fix cppcoreguidelines-prefer-member-initializer issue

* add [[nodiscard]]

* fix const correctness

* fix bugprone-integer-division issue

* fix bug

* fix performance-type-promotion-in-math-fn issue

* fix bugprone-branch-clone issue

* fix cppcoreguidelines-prefer-member-initializer issues

* fix cppcoreguidelines-prefer-member-initializer issue

* fix modernize auto issue

* fix const correctness

* fix misc-const-correctness issue

* address readability-braces-around-statements issues

* fix some const correctness issues

* fix bug

* fix bugprone-reserved-identifier issue

* fix modernize-use-nodiscard issues

* fix const correctness issues

* replace PXRMP_CONSTEXPR_IF with if constexpr (we are moving to C++17)

* address bugprone-exception-escape issue

* address readability-avoid-const-params-in-decls issues

* fix bugprone-reserved-identifier issue

* address readability-qualified-auto issues

* address readability-string-compare issues

* address readability-misleading-indentation issue

* address modernize-use-using issues

* fix some cppcoreguidelines-prefer-member-initializer issues

* fix some modernize-pass-by-value issues

* fix const correctness and bugprone-exception-escape issues

* fix more const correctness issues

* address some cppcoreguidelines-prefer-member-initializer issues

* address readability-suspicious-call-argument issues

* fix cppcoreguidelines-prefer-member-initializer issues

* address unused variable issue

* try to address issue of function that may throw exception

* fix miscellaneous issues

* fix readability-duplicate-include issue

* fix performance-type-promotion-in-math-fn issue

* address bugprone-integer-division issues

* fix misc-unused-alias-decls issue

* attempt to fix a performance-unnecessary-copy-initialization issue

* fix miscellaneous issues

* fix miscellaneous issues

* fix bugprone-narrowing-conversions issues

* fix performance-unnecessary-value-param and bugprone-narrowing-conversion issues

* fix miscellaneous issues

* fix bugprone-exception-escape issues

* fix bugs

* fix issue in doc

* add space at the end of the file

* add NOLINT

* Update .github/workflows/clang_tidy.yml

Co-authored-by: Edoardo Zoni <[email protected]>

* Update .github/workflows/dependencies/clang15.sh

---------

Co-authored-by: Edoardo Zoni <[email protected]>
  • Loading branch information
lucafedeli88 and EZoni authored Jan 17, 2025
1 parent 6b46dbe commit 47b3939
Show file tree
Hide file tree
Showing 63 changed files with 1,182 additions and 826 deletions.
60 changes: 60 additions & 0 deletions .clang-tidy
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
Checks: '
-*,
bugprone-*,
-bugprone-easily-swappable-parameters,
-bugprone-implicit-widening-of-multiplication-result,
-bugprone-misplaced-widening-cast,
-bugprone-unchecked-optional-access,
cert-*,
-cert-err58-cpp,
clang-analyzer-*,
-clang-analyzer-optin.performance.Padding,
-clang-analyzer-optin.mpi.MPI-Checker,
-clang-analyzer-osx.*,
-clang-analyzer-optin.osx.*,
clang-diagnostic-*,
cppcoreguidelines-*,
-cppcoreguidelines-avoid-c-arrays,
-cppcoreguidelines-avoid-magic-numbers,
-cppcoreguidelines-avoid-non-const-global-variables,
-cppcoreguidelines-init-variables,
-cppcoreguidelines-macro-usage,
-cppcoreguidelines-narrowing-conversions,
-cppcoreguidelines-non-private-member-variables-in-classes,
-cppcoreguidelines-owning-memory,
-cppcoreguidelines-pro-*,
google-build-explicit-make-pair,
google-build-namespaces,
google-global-names-in-headers,
misc-*,
-misc-no-recursion,
-misc-non-private-member-variables-in-classes,
modernize-*,
-modernize-avoid-c-arrays,
-modernize-return-braced-init-list,
-modernize-use-trailing-return-type,
mpi-*,
performance-*,
portability-*,
readability-*,
-readability-convert-member-functions-to-static,
-readability-else-after-return,
-readability-function-cognitive-complexity,
-readability-identifier-length,
-readability-implicit-bool-conversion,
-readability-isolate-declaration,
-readability-magic-numbers,
-readability-named-parameter,
-readability-uppercase-literal-suffix
'

CheckOptions:
- key: bugprone-narrowing-conversions.WarnOnIntegerToFloatingPointNarrowingConversion
value: "false"
- key: misc-definitions-in-headers.HeaderFileExtensions
value: "H,"
- key: modernize-pass-by-value.ValuesOnly
value: "true"


HeaderFilterRegex: 'multi_physics[a-z_A-Z0-9\/]+\.hp?p?$'
46 changes: 46 additions & 0 deletions .github/workflows/clang_tidy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: 🧹 clang-tidy

on: [push, pull_request]

jobs:
run_clang_tidy:
name: clang-tidy
runs-on: ubuntu-22.04
env: {CXXFLAGS: "-Werror -Wshadow -Woverloaded-virtual -Wunreachable-code -fsanitize=address -fsanitize=undefined"}
steps:
- uses: actions/checkout@v4
- name: install dependencies
run: .github/workflows/dependencies/clang15.sh
- name: Build & run clang-tidy
run: |
export CXX=$(which clang++-15)
export CC=$(which clang-15)
# The following wrapper ensures that only source files
# in multi_physics/QED* are actually processed by clang-tidy
#_______________________________
cat > clang_tidy_wrapper << EOF
#!/bin/bash
REGEX="[a-z_A-Z0-9\/]*multi_physics\/[a-z_A-Z0-9\/]+.cpp"
if [[ \$4 =~ \$REGEX ]];then
clang-tidy-15 \$@
fi
EOF
chmod +x clang_tidy_wrapper
#_____________________________________
rm -rf build_clang_tidy
cmake -S multi_physics/QED \
-DCMAKE_CXX_CLANG_TIDY="$PWD/clang_tidy_wrapper;--system-headers=0;--config-file=$PWD/.clang-tidy" \
-B build_clang_tidy \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DPXRMP_QED_TEST=ON \
-DPXRMP_KOKKOS_EXAMPLE=ON \
-DKokkos_ENABLE_OPENMP=ON
cmake --build build_clang_tidy -j 4 2> build_clang_tidy/clang-tidy.log
cat build_clang_tidy/clang-tidy.log
if [[ $(wc -m <build_clang_tidy/clang-tidy.log) -gt 1 ]]; then exit 1; fi
30 changes: 30 additions & 0 deletions .github/workflows/dependencies/clang15.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/usr/bin/env bash
#
# Copyright 2023 The BLAST Community
#
# License: BSD-3-Clause-LBNL
# Authors: Luca Fedeli

set -eu -o pipefail

# `man apt.conf`:
# Number of retries to perform. If this is non-zero APT will retry
# failed files the given number of times.
echo 'Acquire::Retries "3";' | sudo tee /etc/apt/apt.conf.d/80-retries

sudo apt-get -qqq update
sudo apt-get install -y \
build-essential \
cmake \
clang-15 \
clang-tidy-15 \
libblas-dev \
libc++-15-dev \
libboost-dev \
libboost-math-dev \
libboost-test-dev \
libomp-15-dev \
python3-dev

python3 -m pip install -U pip
python3 -m pip install "pybind11[global]"
4 changes: 2 additions & 2 deletions multi_physics/QED/QED_table_generator/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ set_target_properties(${name} PROPERTIES
configure_file(table_inspector.ipynb
${CMAKE_BINARY_DIR}/tools/table_inspector.ipynb COPYONLY)

# Require C++14 or newer
target_compile_features(${name} PUBLIC cxx_std_14)
# Require C++17 or newer
target_compile_features(${name} PUBLIC cxx_std_17)
set_target_properties(${name} PROPERTIES CXX_EXTENSIONS OFF)

# Enable warnings
Expand Down
Loading

0 comments on commit 47b3939

Please sign in to comment.