| #!/usr/bin/env bash |
| # |
| # Copyright (c) 2021 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. |
| |
| LOG_FILE=$(mktemp -t files-detection-check.XXXX) |
| TFA_PATCH_NEWFILES_LIST=$(mktemp -t tfa-patch-newfiles-list.XXXX) |
| EXIT_VALUE=0 |
| |
| # 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 "New source files have been identified in your patch.." |
| echo >> "$LOG_FILE" |
| echo "New source files have been identified in your patch.." >> "$LOG_FILE" |
| # Iterating through the patch filenames and logging them onto error report. |
| while read filename |
| do |
| echo "$filename" |
| echo "$filename" >> "$LOG_FILE" |
| done < "$TFA_PATCH_NEWFILES_LIST" |
| |
| echo |
| echo -e "1. Kindly ensure they are updated in the \"tf_cov_make\" build script as \n \ |
| well to consider them for Coverity Scan analysis." |
| echo >> "$LOG_FILE" |
| echo -e "1. Kindly ensure they are updated in the \"tf_cov_make\" build script as \n \ |
| well to consider them for Coverity Scan analysis." >> "$LOG_FILE" |
| |
| echo |
| echo -e "2. Please ignore if files are already updated. Further the Code Maintainer \n \ |
| will resolve the issue by taking appropriate action." |
| echo >> "$LOG_FILE" |
| echo -e "2. Please ignore if files are already updated. Further the Code Maintainer \n \ |
| will resolve the issue by taking appropriate action." >> "$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 origin/master...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" |