QGIS/scripts/clang-tidy.sh

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

83 lines
2.3 KiB
Bash
Raw Normal View History

#!/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
usage
fi
FILE_OPT="ALL"
;;
m)
2022-09-12 11:21:15 +02:00
if [[ -n "$FILE_OPT" ]]; then
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
clang-tidy -p=$BUILD_DIR $file
done