lint-cpp.sh 1.58 KB
Newer Older
1
2
3
#!/bin/bash

set -e -E -u -o pipefail
4
5
6
7
8

echo "running cpplint"
cpplint \
    --filter=-build/c++11,-build/include_subdir,-build/header_guard,-whitespace/line_length \
    --recursive ./src ./include ./R-package ./swig ./tests \
9
|| exit 1
10
11
12
echo "done running cpplint"

echo "running cmakelint"
13
14
15
16
17
18
find \
    . \
    -type f \
    \( -name CMakeLists.txt -o -path "./cmake/*.cmake" \) \
    -not -path './external_libs/*' \
    -exec cmakelint \
19
20
    --linelength=120 \
    --filter=-convention/filename,-package/stdargs,-readability/wonkycase \
21
    {} \+ \
22
|| exit 1
23
echo "done running cmakelint"
24
25
26
27
28
29
30
31
32
33
34
35

echo "checking that all OpenMP pragmas specify num_threads()"
get_omp_pragmas_without_num_threads() {
    grep \
        -n \
        -R \
        --include='*.c' \
        --include='*.cc' \
        --include='*.cpp' \
        --include='*.h' \
        --include='*.hpp' \
        'pragma omp parallel' \
36
    | grep -v ' num_threads'
37
}
38
39
40
41
42
43
44

# 'grep' returns a non-0 exit code if 0 lines were found.
# Turning off '-e -o pipefail' options here so that bash doesn't
# consider this a failure and stop execution of the script.
#
# ref: https://www.gnu.org/software/grep/manual/html_node/Exit-Status.html
set +e +o pipefail
45
46
47
PROBLEMATIC_LINES=$(
    get_omp_pragmas_without_num_threads
)
48
set -e -o pipefail
49
50
51
52
if test "${PROBLEMATIC_LINES}" != ""; then
    get_omp_pragmas_without_num_threads
    echo "Found '#pragma omp parallel' not using explicit num_threads() configuration. Fix those."
    echo "For details, see https://www.openmp.org/spec-html/5.0/openmpse14.html#x54-800002.6"
53
    exit 1
54
55
fi
echo "done checking OpenMP pragmas"