xref: /aosp_15_r20/external/ComputeLibrary/scripts/check_bad_style.sh (revision c217d954acce2dbc11938adb493fc0abd69584f3)
1#!/bin/bash
2
3set -e
4
5ALL_DIRECTORIES="./arm_compute ./src ./examples ./tests ./utils ./support"
6
7#If no arguments were passed: default to check all the folders:
8if [ ! -n "$1" ]
9then
10    FILES=$ALL_DIRECTORIES
11else
12    #else only check the files that were passed on the command line:
13    FILES=$@
14fi
15
16grep -HrnP --exclude-dir=assembly --exclude-dir=convolution --exclude-dir=arm_gemm --exclude-dir=arm_conv "/\*\*$" $FILES | tee bad_style.log
17if (( `cat bad_style.log | wc -l` > 0 ))
18then
19    echo ""
20    echo "ERROR: Doxygen comments should start on the first line: \"/** My comment\""
21    exit -1
22fi
23
24grep -Hnr --exclude-dir=assembly --exclude-dir=convolution --exclude-dir=arm_gemm --exclude-dir=arm_conv --exclude=Doxyfile "@brief" $FILES | tee bad_style.log
25if (( `cat bad_style.log | wc -l` > 0 ))
26then
27    echo ""
28    echo "ERROR: Doxygen comments shouldn't use '@brief'"
29    exit -1
30fi
31
32grep -HnRE --exclude-dir=assembly --exclude-dir=convolution --exclude-dir=arm_gemm --exclude-dir=dynamic_fusion --exclude-dir=arm_conv "\buint " --exclude-dir=cl_kernels --exclude-dir=cs_shaders $FILES | tee bad_style.log
33if [[ $(cat bad_style.log | wc -l) > 0 ]]
34then
35    echo ""
36    echo "ERROR: C/C++ don't define 'uint'. Use 'unsigned int' instead."
37    exit -1
38fi
39
40grep -HnR --exclude-dir=assembly --exclude-dir=convolution --exclude-dir=arm_gemm --exclude-dir=arm_conv "/^float32_t/" $FILES | tee bad_style.log
41if [[ $(cat bad_style.log | wc -l) > 0 ]]
42then
43    echo ""
44    echo "ERROR: C/C++ don't define 'float32_t'. Use 'float' instead."
45    exit -1
46fi
47
48grep -Hnir --exclude-dir=assembly --exclude-dir=convolution --exclude-dir=arm_gemm --exclude-dir=arm_conv "arm[_ ]\?cv" $FILES | tee bad_style.log
49if [[ $(cat bad_style.log | wc -l) > 0 ]]
50then
51    echo ""
52    echo "ERROR: Reference to arm_cv detected in the files above (Replace with arm_compute)"
53    exit -1
54fi
55
56grep -Hnir --exclude-dir=assembly --exclude-dir=convolution --exclude-dir=arm_gemm --exclude-dir=arm_conv "#.*if.*defined[^(]" $FILES | tee bad_style.log
57if [[ $(cat bad_style.log | wc -l) > 0 ]]
58then
59    echo ""
60    echo "ERROR: use parenthesis after #if defined(MY_PREPROCESSOR)"
61    exit -1
62fi
63
64grep -Hnir --exclude-dir=assembly --exclude-dir=convolution --exclude-dir=arm_gemm --exclude-dir=arm_conv "#else$\|#endif$" $FILES | tee bad_style.log
65if [[ $(cat bad_style.log | wc -l) > 0 ]]
66then
67    echo ""
68    echo "ERROR: #else and #endif should be followed by a comment of the guard they refer to (e.g /* ARM_COMPUTE_AARCH64_V8_2 */ )"
69    exit -1
70fi
71
72grep -Hnir --exclude-dir=assembly --exclude-dir=convolution --exclude-dir=arm_gemm --exclude-dir=arm_conv "ARM_COMPUTE_AARCH64_V8_2" ./tests/validation/CL | tee bad_style.log
73if [[ $(cat bad_style.log | wc -l) > 0 ]]
74then
75    echo ""
76    echo "ERROR: Found ARM_COMPUTE_AARCH64_V8_2 in CL tests though armv8.2 features (FP16) are always supported for OpenCL"
77    exit -1
78fi
79
80spdx_missing=0
81for f in $(find $FILES -type f)
82do
83    if [[ $(grep SPDX $f | wc -l) == 0 ]]
84    then
85        # List of exceptions:
86        case `basename $f` in
87            "arm_compute_version.embed");;
88            ".clang-format");;
89            ".clang-tidy");;
90            "README.md");;
91            #It's an error for other files to not contain the MIT header:
92            *)
93                spdx_missing=1
94                echo $f;
95                ;;
96        esac
97    fi;
98done
99
100if [[ $spdx_missing > 0 ]]
101then
102    echo ""
103    echo "ERROR: MIT Copyright header missing from the file(s) above."
104    exit -1
105fi
106