diff options
author | Ivan Komissarov <ABBAPOH@gmail.com> | 2019-06-01 16:39:53 +0200 |
---|---|---|
committer | Ivan Komissarov <ABBAPOH@gmail.com> | 2019-06-04 17:27:18 +0000 |
commit | 66672ff0a26530d3a005db82f6672513b05c2695 (patch) | |
tree | 864cf7227075fdba1962d37bd30802f2f2b73462 /scripts | |
parent | a2d64478363fbad0d58b519ce994f6c0384fcd85 (diff) |
Add run-analyzer.sh script
This script builds qbs, generates compile_commands.json and runs clang-
tidy on the whole QBS project.
Typical usage:
$ cd qbs
$ export LLVM_INSTALL_DIR=~/LLVM/
$ ./scripts/run-analyzer.sh
Change-Id: Iff8d9483849589952a427f3b675298e4fcf11979
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/run-analyzer.sh | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/scripts/run-analyzer.sh b/scripts/run-analyzer.sh new file mode 100755 index 000000000..e3743f631 --- /dev/null +++ b/scripts/run-analyzer.sh @@ -0,0 +1,80 @@ +#!/usr/bin/env bash +############################################################################# +## +## Copyright (C) 2019 Ivan Komissarov +## Contact: abbapoh@gmail.com +## +## This file is part of Qbs. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +set -e + +LLVM_INSTALL_DIR=${LLVM_INSTALL_DIR:-""} + +# on Debian, it might be necessary to setup which version of clang-tidy and run-clang-tidy.py +# is desired: +# update-alternatives --install /usr/bin/run-clang-tidy.py run-clang-tidy.py /usr/bin/run-clang-tidy-4.0.py 1 + +CLANG_TIDY=`which clang-tidy` +RUN_CLANG_TIDY=`which run-clang-tidy.py` + +if [ -z "$RUN_CLANG_TIDY" ] || [ -z "$CLANG_TIDY" ]; then + if [ ! -z "$LLVM_INSTALL_DIR" ]; then + CLANG_TIDY="$LLVM_INSTALL_DIR/bin/clang-tidy" + RUN_CLANG_TIDY="$LLVM_INSTALL_DIR/share/clang/run-clang-tidy.py" + else + echo "Can't find clang-tidy and/or run-clang-tidy.py in PATH, try setting LLVM_INSTALL_DIR" + exit 1 + fi +fi + +BUILD_OPTIONS="\ + ${QBS_BUILD_PROFILE:+profile:${QBS_BUILD_PROFILE}} \ + modules.qbsbuildconfig.enableProjectFileUpdates:true \ + modules.qbsbuildconfig.enableUnitTests:true \ + config:analyzer +" + +QBS_SRC_DIR=${QBS_SRC_DIR:-`pwd`} + +if [ ! -f "$QBS_SRC_DIR/qbs.qbs" ]; then + echo "Can't find qbs.qbs in $QBS_SRC_DIR, try setting QBS_SRC_DIR" + exit 1 +fi + +qbs resolve -f "$QBS_SRC_DIR/qbs.qbs" $BUILD_OPTIONS +qbs build -f "$QBS_SRC_DIR/qbs.qbs" $BUILD_OPTIONS +qbs generate -g clangdb -f "$QBS_SRC_DIR/qbs.qbs" $BUILD_OPTIONS + +"$RUN_CLANG_TIDY" -p analyzer -clang-tidy-binary "$CLANG_TIDY" -header-filter=".*qbs.*\.h" |