dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | # |
dongqing.li | 594791b | 2022-09-30 11:18:01 +0800 | [diff] [blame^] | 3 | # ============================================================================= |
| 4 | # @Module: BootLoader coverity check |
| 5 | # @Author: Li Dongqing (dongqing.li@amlogic.com) |
| 6 | # @License: Copyright (c) 2019 Amlogic, Inc. All rights reserved. |
| 7 | # @Changes: |
| 8 | # 1. 2021.11.22 v0.1 - Create bash check_coverity. |
| 9 | # 2. 2022.09.29 v0.2 - Support run long command |
| 10 | # ============================================================================= |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 11 | |
| 12 | ############# |
| 13 | # function |
| 14 | ############# |
| 15 | MK_ARGV="" |
| 16 | NEW_ARGV="" |
dongqing.li | 8857e06 | 2022-09-08 15:54:48 +0800 | [diff] [blame] | 17 | #COVERITY_PATH="/proj/coverity/cov-analysis-linux64-2020.12/bin" |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 18 | COV_IM_DIR="./cov-imdir" |
| 19 | COV_RESULT_HTML="./result-html" |
| 20 | HIGH_LEVEL="0" |
dongqing.li | 594791b | 2022-09-30 11:18:01 +0800 | [diff] [blame^] | 21 | DIR_FILTER="" |
dongqing.li | 5849ac7 | 2021-11-24 10:49:26 +0000 | [diff] [blame] | 22 | PATTERN_ENABLE="0" |
dongqing.li | 92587aa | 2022-09-05 21:16:36 +0800 | [diff] [blame] | 23 | IS_CMD_STRING=0 |
dongqing.li | 594791b | 2022-09-30 11:18:01 +0800 | [diff] [blame^] | 24 | RUN_BASH="" |
| 25 | MANUAL_RUN_FLAG=0 |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 26 | |
| 27 | ############# |
| 28 | # function |
| 29 | ############# |
| 30 | function err_exit() |
| 31 | { |
| 32 | echo "Error: $1" |
| 33 | exit 1 |
| 34 | } |
| 35 | |
| 36 | function check_cov_path() { |
dongqing.li | 594791b | 2022-09-30 11:18:01 +0800 | [diff] [blame^] | 37 | echo "[run cov path] : ${MKPATH}" |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 38 | if [ -d "${COV_IM_DIR}" ]; then |
| 39 | rm -rf ${COV_IM_DIR} |
| 40 | fi |
| 41 | mkdir -p ${COV_IM_DIR} |
dongqing.li | 5849ac7 | 2021-11-24 10:49:26 +0000 | [diff] [blame] | 42 | if [ -d "${COV_RESULT_HTML}" ]; then |
| 43 | rm -rf ${COV_RESULT_HTML} |
| 44 | fi |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 45 | } |
| 46 | |
dongqing.li | 594791b | 2022-09-30 11:18:01 +0800 | [diff] [blame^] | 47 | function check_cov_build_version() { |
| 48 | COV_CONFIG=`cov-build --help | grep 'Task Reference' -c` |
| 49 | if [ "${COV_CONFIG}" = "0" ]; then |
| 50 | echo |
| 51 | echo -e "\e[1;35m Run cov-build error! Please check: \e[0m" |
| 52 | echo " 1.is installed ? if not, call IT. (/proj/coverity/cov-analysis-linux64-2021.12.0/bin)" |
| 53 | echo " 2.in PATH env ? if not, export it.(export PATH=/proj/coverity/cov-analysis-linux64-2021.12.0/bin/:$PATH)" |
| 54 | echo |
| 55 | exit 0 |
| 56 | else |
| 57 | COV_VERSION=`cov-build --help | grep 'Task Reference' | awk '{print $2}'` |
| 58 | echo "check_cov_version: ${COV_VERSION}" |
| 59 | fi |
| 60 | } |
| 61 | |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 62 | function run_coverity() { |
| 63 | echo "" |
dongqing.li | 92587aa | 2022-09-05 21:16:36 +0800 | [diff] [blame] | 64 | echo -e "\e[1;35m[1] run cov-build: $@ \e[0m" |
dongqing.li | 594791b | 2022-09-30 11:18:01 +0800 | [diff] [blame^] | 65 | check_cov_build_version |
dongqing.li | 8857e06 | 2022-09-08 15:54:48 +0800 | [diff] [blame] | 66 | cov-build --dir ${COV_IM_DIR} $@ || err_exit "cov-build error." |
dongqing.li | 5849ac7 | 2021-11-24 10:49:26 +0000 | [diff] [blame] | 67 | echo -e "\e[1;35m[1] run cov-build OK. \e[0m" |
dongqing.li | 92587aa | 2022-09-05 21:16:36 +0800 | [diff] [blame] | 68 | } |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 69 | |
dongqing.li | 92587aa | 2022-09-05 21:16:36 +0800 | [diff] [blame] | 70 | function analysis_coverity() { |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 71 | echo "" |
| 72 | echo -e "\e[1;35m[2] run cov-analyze ... \e[0m" |
dongqing.li | 5849ac7 | 2021-11-24 10:49:26 +0000 | [diff] [blame] | 73 | if [ ${HIGH_LEVEL} = "1" ]; then |
dongqing.li | 594791b | 2022-09-30 11:18:01 +0800 | [diff] [blame^] | 74 | if [ "${PATTERN_ENABLE}" = "1" ];then |
| 75 | cov-analyze --dir ${COV_IM_DIR} --strip-path $MKPATH --all --aggressiveness-level high --fb-max-mem 3072 --tu-pattern "file('/${DIR_FILTER}')" || err_exit "cov-analyze high level error." |
| 76 | else |
dongqing.li | 8857e06 | 2022-09-08 15:54:48 +0800 | [diff] [blame] | 77 | cov-analyze --dir ${COV_IM_DIR} --strip-path $MKPATH --all --aggressiveness-level high --fb-max-mem 3072 || err_exit "cov-analyze high level error." |
dongqing.li | 5849ac7 | 2021-11-24 10:49:26 +0000 | [diff] [blame] | 78 | fi |
| 79 | else |
| 80 | if [ "${PATTERN_ENABLE}" = "1" ];then |
dongqing.li | 594791b | 2022-09-30 11:18:01 +0800 | [diff] [blame^] | 81 | cov-analyze --dir ${COV_IM_DIR} --strip-path $MKPATH --all --tu-pattern "file('/${DIR_FILTER}')" || err_exit "cov-analyze normal level error." |
dongqing.li | 5849ac7 | 2021-11-24 10:49:26 +0000 | [diff] [blame] | 82 | else |
dongqing.li | 8857e06 | 2022-09-08 15:54:48 +0800 | [diff] [blame] | 83 | cov-analyze --dir ${COV_IM_DIR} --strip-path $MKPATH --all || err_exit "cov-analyze normal level error." |
dongqing.li | 5849ac7 | 2021-11-24 10:49:26 +0000 | [diff] [blame] | 84 | fi |
| 85 | fi |
| 86 | echo -e "\e[1;35m[2] run cov-analyze OK. \e[0m" |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 87 | |
dongqing.li | 5849ac7 | 2021-11-24 10:49:26 +0000 | [diff] [blame] | 88 | echo "" |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 89 | echo -e "\e[1;35m[3] run cov-format-errors ... \e[0m" |
dongqing.li | 8857e06 | 2022-09-08 15:54:48 +0800 | [diff] [blame] | 90 | cov-format-errors --dir ${COV_IM_DIR} --html-output ${COV_RESULT_HTML} --filesort --strip-path $MKPATH -x || err_exit "cov-format-errors error." |
dongqing.li | 5849ac7 | 2021-11-24 10:49:26 +0000 | [diff] [blame] | 91 | echo -e "\e[1;35m[3] run cov-format-errors OK. \e[0m" |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 92 | echo "end." |
| 93 | |
dongqing.li | 594791b | 2022-09-30 11:18:01 +0800 | [diff] [blame^] | 94 | # show coverity result info |
| 95 | show_coverity_result |
| 96 | |
| 97 | if [ "${COVERITY_PUSH}" = "1" ]; then |
| 98 | echo "" |
| 99 | echo -e "\e[1;35m[4] run cov-commit-defects ... \e[0m" |
| 100 | if [ -z ${COVERITY_KEY} -o -z ${COVERITY_STREAM} ]; then |
| 101 | echo -e "\e[1;35m[4] --key or --stream is not set, push stream exit ! \e[0m" |
| 102 | else |
| 103 | cov-commit-defects --dir ${COV_IM_DIR} --auth-key-file ${COVERITY_KEY} --host 10.18.11.122 --stream ${COVERITY_STREAM} --noxrefs || err_exit "cov-format-errors error." |
| 104 | echo -e "\e[1;35m[4] run cov-commit-defects OK. \e[0m" |
| 105 | echo "" |
| 106 | echo -e "\e[1;35m[snapshot-result] \e[0m" |
| 107 | echo "you can view the result with the [New snapshot ID] above on coverity server!" |
| 108 | echo "path: http://10.18.11.122:8080/ -> choose projects -> choose SNAPSHOTS(ALL in Project) -> choose ID" |
| 109 | echo " " |
| 110 | fi |
| 111 | fi |
| 112 | |
dongqing.li | 5849ac7 | 2021-11-24 10:49:26 +0000 | [diff] [blame] | 113 | rm -rf ${COV_IM_DIR} |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 114 | } |
| 115 | |
| 116 | function show_coverity_result() { |
| 117 | echo "" |
| 118 | echo -e "\e[1;35m[html-result] \e[0m" |
dongqing.li | 5849ac7 | 2021-11-24 10:49:26 +0000 | [diff] [blame] | 119 | echo "you can open the index.html files through a browser, and view code defects." |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 120 | echo "path: ${MKPATH}/`basename ${COV_RESULT_HTML}`/index.html" |
| 121 | echo " " |
| 122 | } |
| 123 | |
| 124 | ######## |
| 125 | # mk_script.sh call function here ! |
| 126 | ######## |
| 127 | function check_coverity() { |
| 128 | |
dongqing.li | 5849ac7 | 2021-11-24 10:49:26 +0000 | [diff] [blame] | 129 | MK_ARGV=$@ |
dongqing.li | 594791b | 2022-09-30 11:18:01 +0800 | [diff] [blame^] | 130 | if [ -z "${DIR_FILTER}" ];then |
| 131 | echo "DIR_FILTER not set, ignore. " |
dongqing.li | 5849ac7 | 2021-11-24 10:49:26 +0000 | [diff] [blame] | 132 | PATTERN_ENABLE="0" |
| 133 | else |
dongqing.li | 594791b | 2022-09-30 11:18:01 +0800 | [diff] [blame^] | 134 | if [ -e "./${DIR_FILTER}" ];then |
| 135 | echo "DIR_FILTER set ok: ${DIR_FILTER}" |
dongqing.li | 5849ac7 | 2021-11-24 10:49:26 +0000 | [diff] [blame] | 136 | PATTERN_ENABLE="1" |
| 137 | else |
dongqing.li | 594791b | 2022-09-30 11:18:01 +0800 | [diff] [blame^] | 138 | echo "DIR_FILTER invalid, ingore." |
dongqing.li | 5849ac7 | 2021-11-24 10:49:26 +0000 | [diff] [blame] | 139 | PATTERN_ENABLE="2" |
| 140 | fi |
| 141 | fi |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 142 | |
dongqing.li | 5849ac7 | 2021-11-24 10:49:26 +0000 | [diff] [blame] | 143 | echo -e "\e[1;35m=========== run check_coverity() ===========\e[0m" |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 144 | |
dongqing.li | 5849ac7 | 2021-11-24 10:49:26 +0000 | [diff] [blame] | 145 | echo "------------------------------------------------------------------" |
| 146 | echo "coverity raw command : ./mk $@ " |
| 147 | |
| 148 | # check argv |
| 149 | result=$(echo ${MK_ARGV} | grep "\-\-cov-high") |
| 150 | if [[ "$result" != "" ]]; then |
| 151 | echo "coverity defect level : high" |
| 152 | HIGH_LEVEL="1" |
| 153 | NEW_ARGV=`echo "${MK_ARGV//--cov-high/ }"` |
| 154 | else |
| 155 | echo "coverity defect level : normal" |
| 156 | HIGH_LEVEL="0" |
| 157 | NEW_ARGV=`echo "${MK_ARGV//--cov/ }"` |
| 158 | fi |
| 159 | if [ "PATTERN_ENABLE" != "0" ];then |
dongqing.li | 594791b | 2022-09-30 11:18:01 +0800 | [diff] [blame^] | 160 | NEW_ARGV=`echo "${NEW_ARGV//${DIR_FILTER}/ }"` |
dongqing.li | 5849ac7 | 2021-11-24 10:49:26 +0000 | [diff] [blame] | 161 | fi |
| 162 | echo "coverity new command : ./mk ${NEW_ARGV}" |
| 163 | MKPATH=`pwd -P` |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 164 | echo "coverity run path : $MKPATH" |
dongqing.li | 5849ac7 | 2021-11-24 10:49:26 +0000 | [diff] [blame] | 165 | echo "------------------------------------------------------------------" |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 166 | |
dongqing.li | 5849ac7 | 2021-11-24 10:49:26 +0000 | [diff] [blame] | 167 | # check_cov_path |
| 168 | check_cov_path |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 169 | |
dongqing.li | 5849ac7 | 2021-11-24 10:49:26 +0000 | [diff] [blame] | 170 | # run_coverity |
dongqing.li | 92587aa | 2022-09-05 21:16:36 +0800 | [diff] [blame] | 171 | run_coverity "./mk ${NEW_ARGV}" |
| 172 | |
| 173 | # analysis coverity |
| 174 | analysis_coverity |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 175 | } |
| 176 | |
dongqing.li | 92587aa | 2022-09-05 21:16:36 +0800 | [diff] [blame] | 177 | ############# |
| 178 | # for bl2/core |
| 179 | ############# |
| 180 | function sync_code() { |
| 181 | #echo "begin sync branch: $1/$2" |
| 182 | if [ -z $2 ]; then |
| 183 | err_exit "branch($2) error !" |
| 184 | fi |
| 185 | git reset --hard |
| 186 | cnt=`git branch |grep test1 -c` |
| 187 | if [ $cnt -eq 0 ]; then |
| 188 | git checkout -b test1 |
| 189 | else |
| 190 | git checkout test1 |
| 191 | fi |
| 192 | cnt=`git branch |grep $2 -c` |
| 193 | if [ ! $cnt -eq 0 ]; then |
| 194 | git branch -D $2 > /dev/null |
| 195 | fi |
| 196 | git checkout -t $1/$2 || err_exit "git checkout -t $1/$2 faild !" |
| 197 | git fetch --all |
| 198 | git reset --hard $1/$2 |
| 199 | git pull |
| 200 | git branch -D test1 |
| 201 | echo |
| 202 | } |
| 203 | |
| 204 | function run_cov_for_bl2_core() { |
| 205 | # get all support soc |
| 206 | cd ../ree/plat/ |
dongqing.li | 8857e06 | 2022-09-08 15:54:48 +0800 | [diff] [blame] | 207 | array=`ls -d *` |
dongqing.li | 92587aa | 2022-09-05 21:16:36 +0800 | [diff] [blame] | 208 | cd - &> /dev/null |
| 209 | |
dongqing.li | 8857e06 | 2022-09-08 15:54:48 +0800 | [diff] [blame] | 210 | skiped=("common" "fvp" "juno" "golden") |
dongqing.li | 92587aa | 2022-09-05 21:16:36 +0800 | [diff] [blame] | 211 | for item in ${skiped[@]} |
| 212 | { |
| 213 | # remove skiped item |
dongqing.li | 8857e06 | 2022-09-08 15:54:48 +0800 | [diff] [blame] | 214 | array=${array//${item}/''} |
dongqing.li | 92587aa | 2022-09-05 21:16:36 +0800 | [diff] [blame] | 215 | } |
| 216 | |
dongqing.li | 8857e06 | 2022-09-08 15:54:48 +0800 | [diff] [blame] | 217 | RESULT='\n'"Build BL2 core for SoC: "${array[@]}'\n' |
dongqing.li | 92587aa | 2022-09-05 21:16:36 +0800 | [diff] [blame] | 218 | echo -e $RESULT |
| 219 | |
| 220 | # loop all soc |
dongqing.li | 8857e06 | 2022-09-08 15:54:48 +0800 | [diff] [blame] | 221 | for soc in ${array[@]} |
dongqing.li | 92587aa | 2022-09-05 21:16:36 +0800 | [diff] [blame] | 222 | do |
| 223 | TEST_BRANCH=projects/$soc |
| 224 | echo "TEST_BRANCH=:$TEST_BRANCH" |
| 225 | |
| 226 | # prepare code |
| 227 | sync_code firmware ${TEST_BRANCH} |
| 228 | |
| 229 | # run test |
dongqing.li | 8857e06 | 2022-09-08 15:54:48 +0800 | [diff] [blame] | 230 | run_coverity ./mk $soc --dusb |
| 231 | run_coverity ./mk $soc --dsto |
dongqing.li | 92587aa | 2022-09-05 21:16:36 +0800 | [diff] [blame] | 232 | done |
| 233 | } |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 234 | |
| 235 | function show_help() { |
dongqing.li | 594791b | 2022-09-30 11:18:01 +0800 | [diff] [blame^] | 236 | echo |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 237 | echo -e "\e[1;35m [usage] \e[0m" |
dongqing.li | 594791b | 2022-09-30 11:18:01 +0800 | [diff] [blame^] | 238 | echo " ./check_coverity.sh -c '[cmd_string]'" |
| 239 | echo |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 240 | echo -e "\e[1;35m [option] \e[0m" |
dongqing.li | 594791b | 2022-09-30 11:18:01 +0800 | [diff] [blame^] | 241 | echo " -c : set cmd string, eg: './check.sh' or './mk sc2_ah212 --avb'" |
| 242 | echo " -d : set dir filter, eg: 'plat/t3/'(relative path, no prefix './')" |
| 243 | echo " -t : set top level mode, could detect more errors." |
| 244 | echo " -k : set coverity key, must be used with '-p'" |
| 245 | echo " -s : set coverity stream, must be used with '-p'" |
| 246 | echo " -p : push coverity result to cov server." |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 247 | echo " -h : show help" |
dongqing.li | 594791b | 2022-09-30 11:18:01 +0800 | [diff] [blame^] | 248 | echo |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 249 | echo -e "\e[1;35m [example] \e[0m" |
dongqing.li | 594791b | 2022-09-30 11:18:01 +0800 | [diff] [blame^] | 250 | echo " 1) run coverity with compile cmd" |
| 251 | echo " cd bl2/core; ../../fip/check_coverity.sh -c './mk sc2 --dsto'" |
| 252 | echo " cd bl2/core; ../../fip/check_coverity.sh -c './mk sc2 --dsto' -d plat/sc2/" |
| 253 | echo " 2) quick for [bl2/core]:" |
| 254 | echo " bash /path/to/fip/check_coverity.sh -c bl2_core" |
| 255 | echo " 3) quick for [bl2/src] [bl2/ree] [bl2/tee] [bl31_1.3/src] [bl32_3.8/src]:" |
| 256 | echo " bash /path/to/fip/check_coverity.sh -c ./check.sh" |
| 257 | echo " 4) quick for [bl33/v2015] [bl33/v2019]:" |
| 258 | echo " bash /path/to/fip/check_coverity.sh -c ./check_compile.sh" |
| 259 | echo " 5) run coverity and push result to cov server" |
| 260 | echo " bash /path/to/fip/check_coverity.sh -c './mk sc2' -k /path/to/user.key -s bootloader-amlogic-dev-bl2-core -p" |
| 261 | echo |
dongqing.li | 92587aa | 2022-09-05 21:16:36 +0800 | [diff] [blame] | 262 | return |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 263 | } |
| 264 | |
dongqing.li | 92587aa | 2022-09-05 21:16:36 +0800 | [diff] [blame] | 265 | ############# |
| 266 | # main |
| 267 | ############# |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 268 | function main() { |
dongqing.li | 594791b | 2022-09-30 11:18:01 +0800 | [diff] [blame^] | 269 | echo |
| 270 | echo "[shell name] : $RUN_BASH" |
| 271 | echo "[compile cmd] : $CMD_STRING" |
| 272 | if [ ! -z "${DIR_FILTER}" ]; then |
| 273 | echo "[pattern path] : $DIR_FILTER" |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 274 | fi |
| 275 | |
dongqing.li | 594791b | 2022-09-30 11:18:01 +0800 | [diff] [blame^] | 276 | if [ "${COVERITY_PUSH}" = "1" ]; then |
| 277 | echo "[coverity keynum] : $COVERITY_KEY" |
| 278 | echo "[coverity stream] : $COVERITY_STREAM" |
| 279 | fi |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 280 | |
dongqing.li | 92587aa | 2022-09-05 21:16:36 +0800 | [diff] [blame] | 281 | if [ $IS_CMD_STRING -eq 1 ]; then |
| 282 | # check coverity path |
| 283 | check_cov_path |
| 284 | |
| 285 | # run_coverity |
dongqing.li | 594791b | 2022-09-30 11:18:01 +0800 | [diff] [blame^] | 286 | if [[ "${CMD_STRING}" = "bl2_core" ]]; then |
dongqing.li | 92587aa | 2022-09-05 21:16:36 +0800 | [diff] [blame] | 287 | run_cov_for_bl2_core |
| 288 | else |
| 289 | run_coverity ${CMD_STRING} |
| 290 | fi |
| 291 | |
| 292 | # analysis coverity |
| 293 | analysis_coverity |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 294 | fi |
dongqing.li | 594791b | 2022-09-30 11:18:01 +0800 | [diff] [blame^] | 295 | |
| 296 | return |
dongqing.li | 154e45e | 2021-11-22 07:47:38 +0000 | [diff] [blame] | 297 | } |
| 298 | |
| 299 | # |
| 300 | # start here. |
| 301 | # |
dongqing.li | 92587aa | 2022-09-05 21:16:36 +0800 | [diff] [blame] | 302 | MKPATH=`pwd -P` |
dongqing.li | 594791b | 2022-09-30 11:18:01 +0800 | [diff] [blame^] | 303 | |
| 304 | if [[ "$0" =~ "check_coverity" ]]; then |
| 305 | RUN_BASH="$0" |
| 306 | if [ $# -gt 0 ]; then |
| 307 | MANUAL_RUN_FLAG=1 |
| 308 | fi |
| 309 | fi |
| 310 | |
| 311 | if [ ${MANUAL_RUN_FLAG} -eq 1 ]; then |
| 312 | ARGS=$(getopt -o d:k:s:pth -a -l c:,d:,k:,s:pth -n "check_coverity.sh" -- "$@") |
| 313 | if [ $? != 0 ]; then |
| 314 | exit 0 |
| 315 | fi |
| 316 | |
| 317 | eval set -- "$ARGS" |
| 318 | while true |
| 319 | do |
| 320 | case "$1" in |
| 321 | -c | --c | --cmd) |
| 322 | CMD_STRING="$2" |
| 323 | IS_CMD_STRING=1 |
| 324 | shift 2 |
| 325 | ;; |
| 326 | -d | --dir) |
| 327 | DIR_FILTER="$2" |
| 328 | if [ -e "./${DIR_FILTER}" ];then |
| 329 | PATTERN_ENABLE="1" |
| 330 | else |
| 331 | PATTERN_ENABLE="2" |
| 332 | fi |
| 333 | shift 2 |
| 334 | ;; |
| 335 | -t | --top) |
| 336 | HIGH_LEVEL="1" |
| 337 | shift |
| 338 | ;; |
| 339 | -k | --key) |
| 340 | COVERITY_KEY="$2" |
| 341 | shift 2 |
| 342 | ;; |
| 343 | -s | --stream) |
| 344 | COVERITY_STREAM="$2" |
| 345 | shift 2 |
| 346 | ;; |
| 347 | -p | --push) |
| 348 | COVERITY_PUSH="1" |
| 349 | shift |
| 350 | ;; |
| 351 | -h | --help) |
| 352 | show_help |
| 353 | exit 0 |
| 354 | ;; |
| 355 | --) |
| 356 | shift |
| 357 | break |
| 358 | ;; |
| 359 | esac |
| 360 | done |
| 361 | |
| 362 | main |
| 363 | fi |