FIP: coverity check separately for bl2x/bl31/32/33 [1/1]
PD#SWPL-64962
Problem:
COV: Only the entire bootloader can be compiled with --cov.
Solution:
COV: support compile separately
1) for bl2core: $0 -c bl2_core
2) for bl2 bl2e bl2x bl31 bl32: $0 -c ./check.sh
3) for bl33/v2015 bl33/v2019: $0 -c ./check_compile.sh
Verify:
local test pass
Change-Id: Iba8aa2aea095bd21f4ec7bc873f94172e2d46a64
Signed-off-by: dongqing.li <dongqing.li@amlogic.com>
diff --git a/check_coverity.sh b/check_coverity.sh
index ef9b29f..7160d00 100755
--- a/check_coverity.sh
+++ b/check_coverity.sh
@@ -15,6 +15,7 @@
HIGH_LEVEL="0"
PATTERN_PATH=""
PATTERN_ENABLE="0"
+IS_CMD_STRING=0
#############
# function
@@ -27,7 +28,7 @@
function check_cov_path() {
echo ""
- echo "check_cov_path ..."
+ echo "check_cov_path: ${MKPATH}"
echo ""
if [ -d "${COV_IM_DIR}" ]; then
rm -rf ${COV_IM_DIR}
@@ -40,10 +41,12 @@
function run_coverity() {
echo ""
- echo -e "\e[1;35m[1] run cov-build ... \e[0m"
- ${COVERITY_PATH}/cov-build --dir ${COV_IM_DIR} ./mk $@ || err_exit "cov-build error."
+ echo -e "\e[1;35m[1] run cov-build: $@ \e[0m"
+ ${COVERITY_PATH}/cov-build --dir ${COV_IM_DIR} $@ || err_exit "cov-build error."
echo -e "\e[1;35m[1] run cov-build OK. \e[0m"
+}
+function analysis_coverity() {
echo ""
echo -e "\e[1;35m[2] run cov-analyze ... \e[0m"
if [ ${HIGH_LEVEL} = "1" ]; then
@@ -125,80 +128,119 @@
check_cov_path
# run_coverity
- run_coverity ${NEW_ARGV}
+ run_coverity "./mk ${NEW_ARGV}"
+
+ # analysis coverity
+ analysis_coverity
# show coverity result info
show_coverity_result
}
+#############
+# for bl2/core
+#############
+function sync_code() {
+ #echo "begin sync branch: $1/$2"
+ if [ -z $2 ]; then
+ err_exit "branch($2) error !"
+ fi
+ git reset --hard
+ cnt=`git branch |grep test1 -c`
+ if [ $cnt -eq 0 ]; then
+ git checkout -b test1
+ else
+ git checkout test1
+ fi
+ cnt=`git branch |grep $2 -c`
+ if [ ! $cnt -eq 0 ]; then
+ git branch -D $2 > /dev/null
+ fi
+ git checkout -t $1/$2 || err_exit "git checkout -t $1/$2 faild !"
+ git fetch --all
+ git reset --hard $1/$2
+ git pull
+ git branch -D test1
+ echo
+}
+
+function run_cov_for_bl2_core() {
+ # get all support soc
+ cd ../ree/plat/
+ arry=`ls -d *`
+ cd - &> /dev/null
+
+ skiped=("common" "fvp" "juno" "golden" "c3")
+ for item in ${skiped[@]}
+ {
+ # remove skiped item
+ arry=${arry//${item}/''}
+ }
+
+ RESULT='\n'"Build BL2 core for SoC: "$arry'\n'
+ echo -e $RESULT
+
+ # loop all soc
+ for soc in ${arry[@]}
+ do
+ TEST_BRANCH=projects/$soc
+ echo "TEST_BRANCH=:$TEST_BRANCH"
+
+ # prepare code
+ sync_code firmware ${TEST_BRANCH}
+
+ # run test
+ run_coverity ./mk $soc
+ done
+}
function show_help() {
echo -e "\e[1;35m [usage] \e[0m"
- echo " $0 -c [config_name] -p [pattern_path] -u [update_blx] -t"
+ echo " /path/to/bootloader/fip/`basename $0` -c [cmd_string] -p [pattern_path] -t"
echo ""
echo -e "\e[1;35m [option] \e[0m"
- echo " -c : config name, eg: t5_ak301_v1, "
+ echo " -c : cmd string, eg: ./check.sh "
echo " -p : detect path, only output errors in this path."
- echo " -t : top level modeļ¼could detect more errors."
- echo " -d : dump support socs name, when you don't know the soc name, can run it first."
- echo " -u : build uboot with bl[x]/src source code, eg: bl2 bl2e bl2x bl30 bl31 bl32 "
+ echo " -t : top level mode, could detect more errors."
echo " -h : show help"
echo ""
echo -e "\e[1;35m [example] \e[0m"
- echo " 1) dump support socs name:"
- echo " $0 -d"
- echo " 2) run coverity for bootloader:"
- echo " $0 -c t5_ak301_v1"
- echo " 3) run coverity, and filter out errors in the specified directory"
- echo " $0 -c t5_ak301_v1 -p bl33/v2019/"
- echo " 4) build uboot with bl[x]/src source code, and use top level mode"
- echo " $0 -c t5_ak301_v1 -p bl31_1.3/src/ -u bl31 -t"
+ echo " 1) In path [bl2/core]:"
+ echo " /path/to/bootloader/fip/`basename $0` -c bl2_core"
+ echo " 2) In path [bl2/src] [bl2/ree] [bl2/tee] [bl31_1.3/src] [bl32_3.8/src]:"
+ echo " /path/to/bootloader/fip/`basename $0` -c ./check.sh"
+ echo " 3) In path [bl33/v2015] [bl33/v2019]:"
+ echo " /path/to/bootloader/fip/`basename $0` -c ./check_compile.sh"
echo ""
- exit 1
+ return
}
-function parser_update_blx() {
- if [ "${UPDATE}" = "bl2" ];then
- BLX_NAME="--update-bl2"
- elif [ "${UPDATE}" = "bl2" ];then
- BLX_NAME="--update-bl2e"
- elif [ "${UPDATE}" = "bl2x" ];then
- BLX_NAME="--update-bl2x"
- elif [ "${UPDATE}" = "bl30" ];then
- BLX_NAME="--update-bl30"
- elif [ "${UPDATE}" = "bl31" ];then
- BLX_NAME="--update-bl31"
- elif [ "${UPDATE}" = "bl32" ];then
- BLX_NAME="--update-bl32"
- else
- BLX_NAME=""
- fi
-}
-
+#############
+# main
+#############
function main() {
- if [ $# -lt 1 ]; then
- show_help
- exit 1
+ if [[ "$0" =~ "coverity" ]]; then
+ echo "cmd string: $0 $@"
+ if [ $# -lt 1 ]; then
+ show_help
+ fi
+ else
+ return
fi
- while getopts c:C:p:P:u:U:tTdDhH opt; do
+ while getopts c:C:p:P:t:T:hH opt; do
case ${opt} in
c|C)
- CONFIG_NAME=${OPTARG}
+ CMD_STRING=${OPTARG}
+ IS_CMD_STRING=1
;;
p|P)
PATTERN_PATH=${OPTARG}
;;
- u|U)
- UPDATE=${OPTARG}
- ;;
t|T)
HIGH_LEVEL="1"
;;
- d|D)
- DUMP_FLAG="1"
- ;;
h|H)
show_help
;;
@@ -208,31 +250,27 @@
esac
done
- if [[ ${DUMP_FLAG} = "1" ]]; then
- echo ""
- echo "-----------------------------------------------------------------------------------------"
- echo "Please select a [config name] below, and try : $0 -c [config name]"
- echo "-----------------------------------------------------------------------------------------"
- ./mk --config
- echo ""
- exit 1
+ if [ $IS_CMD_STRING -eq 1 ]; then
+ # check coverity path
+ check_cov_path
+
+ # run_coverity
+ if [ ${CMD_STRING} = "bl2_core" ]; then
+ run_cov_for_bl2_core
+ else
+ run_coverity ${CMD_STRING}
+ fi
+
+ # analysis coverity
+ analysis_coverity
+
+ # show coverity result path
+ show_coverity_result
fi
-
- # parser update blx
- parser_update_blx
-
- # check coverity path
- check_cov_path
-
- # run_coverity
- run_coverity ${CONFIG_NAME} ${BLX_NAME}
-
- # show coverity result path
- show_coverity_result
}
#
# start here.
#
-MKPATH=`pwd`
-# main $@
+MKPATH=`pwd -P`
+main $@