From cd76436097b9ddda76864af33c85aec9bab074a3 Mon Sep 17 00:00:00 2001 From: Chris Luke Date: Mon, 29 May 2017 10:02:45 -0400 Subject: Relocate Coverity scripts - Move Coverity scripts from build-root/scripts to extras/scripts - Update coverity-build with new path and add some comments Change-Id: I1be8069fb574aaacbac9b7f2c9c80b9aad1790ec Signed-off-by: Chris Luke --- build-root/scripts/coverity-blame.sh | 36 ------------------- build-root/scripts/coverity-build.sh | 53 --------------------------- extras/scripts/coverity-blame | 36 +++++++++++++++++++ extras/scripts/coverity-build | 70 ++++++++++++++++++++++++++++++++++++ 4 files changed, 106 insertions(+), 89 deletions(-) delete mode 100755 build-root/scripts/coverity-blame.sh delete mode 100755 build-root/scripts/coverity-build.sh create mode 100755 extras/scripts/coverity-blame create mode 100755 extras/scripts/coverity-build diff --git a/build-root/scripts/coverity-blame.sh b/build-root/scripts/coverity-blame.sh deleted file mode 100755 index 8775ea48..00000000 --- a/build-root/scripts/coverity-blame.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh - -# Read coverity email on stdin -# whenever we find a filename & line number reference, go git-blame it - -file= -start= -end= - -while read line; do - if echo "$line" | grep -q '^/.*: '; then - echo "$line" - file=$(echo "$line" | cut -d: -f1) - elif echo "$line" | grep -q '^[*]'; then - echo "$line" - file= - start= - end= - elif echo "$line" | grep -q '^[0-9][0-9]*'; then - num=$(echo "$line" | awk '{print $1}') - [ -z "$start" ] && start=$num - #git blame -L "$num,+1" ".$file" | cat - elif [ -z "$line" ]; then - if [ "$start" -a "$num" -a "$file" ]; then - end=$num - git blame --date=short -L "$start,$end" ".$file" | cat - start= - end= - num= - else - echo "$line" - fi - else - echo "$line" - fi -done diff --git a/build-root/scripts/coverity-build.sh b/build-root/scripts/coverity-build.sh deleted file mode 100755 index 6e2c405a..00000000 --- a/build-root/scripts/coverity-build.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/bash - -set -ex - -token=${COVERITY_TOKEN} -email=dbarach@cisco.com -project="fd.io VPP" -project_encoded="fd.io+VPP" -url=https://scan.coverity.com - -export COV_HOST=$(hostname -f) -export COV_USER=vpp - -# Location of various directories - -# run script from .../build-root - -build_dir=`pwd` -covdir="${build_dir}/cov-int" -COVTOOLS="${COVTOOLS-/scratch/cov-analysis-latest}" - -# Before we run the build, check that we can submit one -check=$(curl -s --form project="${project}" \ - --form token="${token}" "${url}/api/upload_permitted") -if [ "${check}" = "Access denied" ]; then - echo "Bad token or project name." - exit 1 -fi -if [ "${check}" != '{"upload_permitted":true}' ]; then - echo "Upload not permitted; stop now..." - exit 1 -fi - -version=$(git describe) - -# Run the build -cd .. -"${COVTOOLS}/bin/cov-build" --dir "${covdir}" make bootstrap build-coverity -cd ${build_dir} - -# Tar the build artifacts that scan wants -tar -czf fd.io-vpp.tgz "$(basename ${covdir})" -# rm -rf "${covdir}" - -# Submit the build -echo curl --form token="${token}" \ - --form email="${email}" \ - --form file=@fd.io-vpp.tgz \ - --form version="${version}" \ - --form description="master:${version}" \ - "${url}/builds?project=${project_encoded}" - -# All done! diff --git a/extras/scripts/coverity-blame b/extras/scripts/coverity-blame new file mode 100755 index 00000000..8775ea48 --- /dev/null +++ b/extras/scripts/coverity-blame @@ -0,0 +1,36 @@ +#!/bin/sh + +# Read coverity email on stdin +# whenever we find a filename & line number reference, go git-blame it + +file= +start= +end= + +while read line; do + if echo "$line" | grep -q '^/.*: '; then + echo "$line" + file=$(echo "$line" | cut -d: -f1) + elif echo "$line" | grep -q '^[*]'; then + echo "$line" + file= + start= + end= + elif echo "$line" | grep -q '^[0-9][0-9]*'; then + num=$(echo "$line" | awk '{print $1}') + [ -z "$start" ] && start=$num + #git blame -L "$num,+1" ".$file" | cat + elif [ -z "$line" ]; then + if [ "$start" -a "$num" -a "$file" ]; then + end=$num + git blame --date=short -L "$start,$end" ".$file" | cat + start= + end= + num= + else + echo "$line" + fi + else + echo "$line" + fi +done diff --git a/extras/scripts/coverity-build b/extras/scripts/coverity-build new file mode 100755 index 00000000..81680f06 --- /dev/null +++ b/extras/scripts/coverity-build @@ -0,0 +1,70 @@ +#!/bin/bash + +# FD.io VPP Coverity build script +# +# Builds VPP with the Coverity wrapper and if successful submits +# it to the Coverity scan service for processing. +# +# Several environment variables are needed: +# +# COVERITY_TOKEN The Coverity Scan API token for this project +# COVERITY_TOOLS The location of the Coverity tools +# +# The coverity tools can be fetched with: +# wget https://scan.coverity.com/download/linux64 \ +# --post-data "token=${COVERITY_TOKEN}&project=fd.io+VPP" \ +# -O coverity_tool.tgz + +set -ex + +token=${COVERITY_TOKEN} +email=vpp-committers@lists.fd.io +project="fd.io VPP" +project_encoded="fd.io+VPP" +url=https://scan.coverity.com + +# Cosmetic labels for the Coverity build logs +export COV_HOST=$(hostname -f) +export COV_USER=vpp + +# Work out where the root and build-root are +script_dir=$(readlink -f $(dirname $0)) +root_dir=$(readlink -f "${script_dir}/../..") +build_dir=$(readlink -f "${script_dir}/../../build-root") + +# Location for Coverity things +covdir="${build_dir}/cov-int" +COVERITY_TOOLS="${COVERITY_TOOLS-/scratch/cov-analysis-latest}" + +# Before we run the build, check that we can submit one +check=$(curl -s --form project="${project}" \ + --form token="${token}" "${url}/api/upload_permitted") +if [ "${check}" = "Access denied" ]; then + echo "Bad token or project name." + exit 1 +fi +if [ "${check}" != '{"upload_permitted":true}' ]; then + echo "Upload not permitted; stop now..." + exit 1 +fi + +version=$(git describe) + +# Run the build +cd "${root_dir}" +"${COVERITY_TOOLS}/bin/cov-build" --dir "${covdir}" make bootstrap build-coverity +cd "${build_dir}" + +# Tar the build artifacts that scan wants +tar -czf fd.io-vpp.tgz "$(basename ${covdir})" +rm -rf "${covdir}" + +# Submit the build +echo curl --form token="${token}" \ + --form email="${email}" \ + --form file=@fd.io-vpp.tgz \ + --form version="${version}" \ + --form description="master:${version}" \ + "${url}/builds?project=${project_encoded}" + +# All done! -- cgit 1.2.3-korg