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 $@