blob: 4f47692bfaffa06bd56c88a2232dab5ea59abb1a [file] [log] [blame]
Leonardo Sandoval9dfdd1b2020-08-06 17:08:11 -05001#!/usr/bin/env bash
Fathi Boudra422bf772019-12-02 11:10:16 +02002#
Leonardo Sandoval579c7372020-10-23 15:23:32 -05003# Copyright (c) 2019-2020 Arm Limited. All rights reserved.
Fathi Boudra422bf772019-12-02 11:10:16 +02004#
5# SPDX-License-Identifier: BSD-3-Clause
6#
7
8TEST_CASE="cppcheck to the entire source tree"
9
10echo "# cppcheck to the entire source tree"
11
12TF_BASE="$(pwd)"
13
Leonardo Sandoval44ed12f2020-07-08 16:09:16 -050014export LOG_TEST_FILENAME=$(pwd)/static-checks-cppcheck.log
15
Fathi Boudra422bf772019-12-02 11:10:16 +020016# cppcheck configuration
17COMMON_ARGS=(-j 16 -q -f --std=c99 --error-exitcode=1 --relative-paths="$TF_BASE")
18CHECKS_ARGS=(--enable=warning,style,portability)
19SUPPRESSIONS=(--suppress=variableScope)
20
21# Excluded directories
22EXCLUDES=(
23plat/hisilicon
24plat/mediatek
25plat/nvidia
26plat/qemu
27plat/rockchip
28plat/socionext
29plat/xilinx
30)
31
32do_lint()
33{
34 local EXCLUDED_DIRS=()
35 local HDR_INCS=()
36
37 LOG_FILE=$(mktemp -t cppcheck_log.XXXX)
38
39 # Build a list of excluded directories
40 for exc in "${EXCLUDES[@]}"; do
41 EXCLUDED_DIRS+=(-i "$exc")
42 done
43
44 while read -r dir; do
45 HDR_INCS+=(-I "$dir")
46 done < <(find "$TF_BASE" -name "*.h" -exec dirname {} \; | sort -u)
47
48 cppcheck \
49 "${COMMON_ARGS[@]}" \
50 "${CHECKS_ARGS[@]}" \
51 "${HDR_INCS[@]}" \
52 "${SUPPRESSIONS[@]}" \
53 "${EXCLUDED_DIRS[@]}" "$TF_BASE" &> "$LOG_FILE"
54 EXIT_VALUE="$?"
55
56 echo >> "$LOG_TEST_FILENAME"
57 echo "****** $TEST_CASE ******" >> "$LOG_TEST_FILENAME"
58 echo >> "$LOG_TEST_FILENAME"
59 if [[ "$EXIT_VALUE" == 0 ]]; then
60 echo "Result : SUCCESS" >> "$LOG_TEST_FILENAME"
61 else
62 echo "Result : FAILURE" >> "$LOG_TEST_FILENAME"
63 echo >> "$LOG_TEST_FILENAME"
64 cat "$LOG_FILE" >> "$LOG_TEST_FILENAME"
65 fi
66 echo >> "$LOG_TEST_FILENAME"
67
68 rm -f "$LOG_FILE"
69
70 exit "$EXIT_VALUE"
71}
72
73do_lint