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