summaryrefslogtreecommitdiff
path: root/tools/ci/jobs/cpplint.sh
blob: b8331ff29839e79937cee607f58ca14719664b2e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/env bash

set -e # Fail if any command fails
set -u # Fail if any variable is unset when used

export LOGFILE=cpplint.log
source ./tools/ci/scripts/init.sh

# Re-download if not executable or older than a day
if [[ ! -x cpplint.py \
   || $(find cpplint.py -mtime 1 -print) ]]; then
    #tools/ci/scripts/retry.sh wget "https://raw.githubusercontent.com/google/styleguide/gh-pages/cpplint/cpplint.py"
    # Google no longer offers their cpplint and suggests using the following one, instead:
    tools/ci/scripts/retry.sh wget "https://raw.githubusercontent.com/cpplint/cpplint/refs/tags/2.0.0/cpplint.py"
    chmod +x cpplint.py

    # env python -> env python3
    sed -i -s -e '1s/python$/python3/' cpplint.py
fi

declare -a args

args+=("--filter=\
-build/include,\
-whitespace/braces,-whitespace/operators,-runtime/references,\
-runtime/threadsafe_fn,-readability/streams,\
-runtime/rtti,\
-whitespace/newline,-whitespace/labels,\
-runtime/indentation_namespace,\
-whitespace/indent,\
-whitespace/parens,\
-runtime/int,\
-readability/todo,\
-runtime/arrays,\
-runtime/printf,\
-whitespace/empty_loop_body,\
-build/c++11,\
-readability/fn_size,\
-build/header_guard,\
-readability/braces,\
-legal/copyright,\
-whitespace/semicolon,\
-readability/namespace,\
-readability/casting,\
-readability/inheritance,\
-runtime/string,\
-build/c++tr1"\
)

# Cannot find a good way to handle execution errors
# (such cpplint.py demanding a version of Python that does not exist)
# So use || true here and assume any other problems will be exposed
# by the grep below. Addendum: no more grep. YMMV.
find src \
     -type f \
     \( -name "*.cc" \
     -o \( -name "*.cpp" -a \! -path src/debug/nvwa/debug_new.cpp \) \
     -o \( -name "*.h"   -a \! -path src/unittests/doctest.h \) \
     -o \( -name "*.hpp" -a \! -path src/unittests/catch.hpp \) \
     \) -exec ./cpplint.py --verbose=5 "${args[@]}" {} \+ 2>"$ERRFILE"
  #|| true



run_check_warnings

echo ok