2022-09-08 15:41:00 +02:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
###########################################################################
|
|
|
|
# clang-tidy.sh
|
|
|
|
# ---------------------
|
|
|
|
# Date : September 2022
|
|
|
|
# Copyright : (C) 2022 by Julien Cabieces
|
|
|
|
# Email : julien dot cabieces at oslandia dot com
|
|
|
|
###########################################################################
|
|
|
|
# #
|
|
|
|
# This program is free software; you can redistribute it and/or modify #
|
|
|
|
# it under the terms of the GNU General Public License as published by #
|
|
|
|
# the Free Software Foundation; either version 2 of the License, or #
|
|
|
|
# (at your option) any later version. #
|
|
|
|
# #
|
|
|
|
###########################################################################
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
usage() {
|
|
|
|
echo 'Usage: '$(basename $0)' [-p <build_dir>] [-a] [-m <module_name>] [source_files]
|
|
|
|
|
|
|
|
-a : run clang-tidy on all source files
|
|
|
|
-m <module> : run clang-tidy on all module source files (core, gui, analysis...)
|
|
|
|
|
|
|
|
Use either -a or -m, or source files' 1>&2; exit 1; }
|
|
|
|
|
|
|
|
SCRIPT_DIR=$(dirname $0)/..
|
|
|
|
SOURCE_DIR=$(realpath $SCRIPT_DIR)
|
|
|
|
|
|
|
|
BUILD_DIR=$(pwd)
|
|
|
|
while getopts "p:am:" o; do
|
|
|
|
case "${o}" in
|
|
|
|
p)
|
|
|
|
BUILD_DIR=${OPTARG}
|
|
|
|
;;
|
|
|
|
a)
|
2022-09-12 11:21:15 +02:00
|
|
|
if [[ -n "$FILE_OPT" ]]; then
|
2022-09-08 15:41:00 +02:00
|
|
|
usage
|
|
|
|
fi
|
|
|
|
FILE_OPT="ALL"
|
|
|
|
;;
|
|
|
|
m)
|
2022-09-12 11:21:15 +02:00
|
|
|
if [[ -n "$FILE_OPT" ]]; then
|
2022-09-08 15:41:00 +02:00
|
|
|
usage
|
|
|
|
fi
|
|
|
|
FILE_OPT=${OPTARG}
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
usage
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
shift $((OPTIND-1))
|
|
|
|
|
|
|
|
if [[ ! -f "$BUILD_DIR/compile_commands.json" ]]; then
|
|
|
|
echo "compile_commands.json file is missing, you need to add -DCMAKE_EXPORT_COMPILE_COMMANDS=ON when you run cmake to generate it."
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ -z "$FILE_OPT" ]]; then
|
|
|
|
if [[ $# -lt 1 ]]; then
|
|
|
|
echo "Missing files"
|
|
|
|
usage
|
|
|
|
else
|
|
|
|
FILES=$*
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
if [[ $# -gt 0 ]]; then
|
|
|
|
usage
|
|
|
|
elif [[ "$FILE_OPT" = "ALL" ]]; then
|
|
|
|
FILES=$(find $SOURCE_DIR/src -name "*.cpp" -o -name "*.h")
|
|
|
|
else
|
|
|
|
FILES=$(find $SOURCE_DIR/src/$FILE_OPT -name "*.cpp" -o -name "*.h")
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
set +e
|
|
|
|
|
|
|
|
for file in $FILES;
|
|
|
|
do
|
2023-12-13 08:59:03 +01:00
|
|
|
clang-tidy -p=$BUILD_DIR $file
|
2022-09-08 15:41:00 +02:00
|
|
|
done
|