File indexing completed on 2024-11-10 04:41:11

0001 #!/bin/sh
0002 # SPDX-FileCopyrightText: 2020 Daniel Vrátil <dvratil@kde.org>
0003 #
0004 # SPDX-License-Identifier: LGPL-2.0-or-later
0005 
0006 if [ $# -lt 2 ]; then
0007     >&2 echo "Usage: $0 SOURCE_DIR BUILD_DIR"
0008     exit 1
0009 fi
0010 
0011 set -xe
0012 
0013 source_dir=$1; shift
0014 build_dir=$1; shift 1
0015 
0016 function sanitize_compile_commands
0017 {
0018     local cc_file=${build_dir}/compile_commands.json
0019     local filter_file="${source_dir}/.clang-tidy-ignore"
0020 
0021     if [ ! -f "${cc_file}" ]; then
0022         >&2 echo "Couldn't find compile_commands.json"
0023         exit 1
0024     fi
0025 
0026     if [ ! -f "${filter_file}" ]; then
0027         return 0
0028     fi
0029 
0030     filter_files=$(cat ${filter_file} | grep -vE "^#\.*|^$" | tr '\n' '|' | head -c -1)
0031 
0032     local cc_bak_file=${cc_file}.bak
0033     mv ${cc_file} ${cc_bak_file}
0034 
0035     cat ${cc_bak_file} \
0036         | jq -r "map(select(.file|test(\"${filter_files}\")|not))" \
0037         > ${cc_file}
0038 
0039     task_count=$(cat ${cc_file} | jq "length")
0040 }
0041 
0042 sanitize_compile_commands
0043 
0044 run-clang-tidy -p ${build_dir} -j$(nproc) -q $@ | tee ${build_dir}/clang-tidy.log
0045 cat ${build_dir}/clang-tidy.log | ${source_dir}/tools/clang-tidy-to-junit.py ${source_dir} > ${build_dir}/clang-tidy-report.xml
0046