blob: 5b85ce68b40671a3143f75cf8827c1375a347e52 [file] [log] [blame]
#!/usr/bin/env bash
#
# Copyright (c) 2022 Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
# static-checks-detect-newly-added-files.sh
# This script aims at identifying the newly added source files
# between the commits.
# It runs on every TF-A patch and detects the new files and updates
# the patch contibutor to include them for Coverity Scan analysis.
this_dir="$(readlink -f "$(dirname "$0")")"
. $this_dir/common.sh
LOG_FILE=$(mktemp -t files-detection-check.XXXX)
TFA_PATCH_NEWFILES_LIST=$(mktemp -t tfa-patch-newfiles-list.XXXX)
EXIT_VALUE=0
DOC_URL="https://trustedfirmware-a.readthedocs.io/en/latest/process/contributing.html\
#add-build-configurations"
# Function : file_updation_report
# Description : To update the inclusion of files listed in the temp file
# (tfa-patch-newfiles-list.XXXX) for Coverity Scan Analysis.
# Return : newly added source files,are captured onto the error log
# and the Error status is printed.
function file_updation_report( )
{
echo "==============================================================================="
echo >> "$LOG_FILE"
echo "New source files have been identified in your patch.." | tee -a "$LOG_FILE"
# Iterating through the patch filenames and logging them onto error report.
while read filename
do
echo "$filename" | tee -a "$LOG_FILE"
done < "$TFA_PATCH_NEWFILES_LIST"
echo | tee -a "$LOG_FILE"
echo -e "1. Kindly ensure these newly added source files are covered by : \n\
a. Coverity scan analysis by adding them to \"tf-cov-make\" build script with \
the appropriate build configurations. \n\
b. Built as part of one of the platform configurations present in \"tf-l1-build-plat\" \
test group." | tee -a "$LOG_FILE"
echo | tee -a "$LOG_FILE"
echo -e " Please refer to the tf-a documentation for more detailed explanation. \n\
\"$DOC_URL\"" | tee -a "$LOG_FILE"
echo | tee -a "$LOG_FILE"
echo -e "2. Please ignore if your files are already updated. Further the Code Maintainer will \n\
resolve the issue by taking appropriate action." | tee -a "$LOG_FILE"
echo "==============================================================================="
EXIT_VALUE=1
}
# Detecting source files not analysed by tf-coverity-job in the latest patch.
echo "# Check to detect whether newly added files are analysed by Coverity in the patch"
TEST_CASE="Newly added files detection check for Coverity Scan analysis on patch(es)"
# Extracting newly added source files added between commits.
git diff $(get_merge_base)..HEAD --name-only --diff-filter=A "*.c" &> "$TFA_PATCH_NEWFILES_LIST"
if [ -s "$TFA_PATCH_NEWFILES_LIST" ]
then
file_updation_report
fi
echo >> "$LOG_TEST_FILENAME"
echo "****** $TEST_CASE ******" >> "$LOG_TEST_FILENAME"
echo >> "$LOG_TEST_FILENAME"
if [[ "$EXIT_VALUE" == 0 ]]; then
echo "Result : SUCCESS" >> "$LOG_TEST_FILENAME"
else
echo "Result : FAILURE" >> "$LOG_TEST_FILENAME"
fi
# Printing the script output to show the warnings.
echo >> "$LOG_TEST_FILENAME"
cat "$LOG_FILE" >> "$LOG_TEST_FILENAME"
echo >> "$LOG_TEST_FILENAME"
#Deleting temporary files
rm -f "$LOG_FILE"
rm -f "$TFA_PATCH_NEWFILES_LIST"
exit "$EXIT_VALUE"