mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-03 06:17:02 +00:00

Coverity currently lists a lot of errors with regard to GITERR_CHECK_ALLOC causing resource leaks. We know this macro is only invoked when we want to abort because we are out of memory. Coverity allows for overriding the default model where we know that certain functions guarantee a desired behavior. The user_nodefs.h is used to override the behavior of macros. Re-define GITERR_CHECK_ALLOC inside of it to specify its abort nature.
60 lines
1.5 KiB
Bash
Executable File
60 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
# Environment check
|
|
[ -z "$COVERITY_TOKEN" ] && echo "Need to set a coverity token" && exit 1
|
|
|
|
# Only run this on our branches
|
|
echo "Pull request: $TRAVIS_PULL_REQUEST | Slug: $TRAVIS_REPO_SLUG"
|
|
if [ "$TRAVIS_PULL_REQUEST" != "false" -o "$TRAVIS_REPO_SLUG" != "libgit2/libgit2" ];
|
|
then
|
|
echo "Only analyzing 'development' on the main repo."
|
|
exit 0
|
|
fi
|
|
|
|
COV_VERSION=6.6.1
|
|
case $(uname -m) in
|
|
i?86) BITS=32 ;;
|
|
amd64|x86_64) BITS=64 ;;
|
|
esac
|
|
SCAN_TOOL=https://scan.coverity.com/download/linux-${BITS}
|
|
TOOL_BASE=$(pwd)/_coverity-scan
|
|
|
|
# Install coverity tools
|
|
if [ ! -d "$TOOL_BASE" ]; then
|
|
echo "Downloading coverity..."
|
|
mkdir -p "$TOOL_BASE"
|
|
pushd "$TOOL_BASE"
|
|
wget -O coverity_tool.tgz $SCAN_TOOL \
|
|
--post-data "project=libgit2&token=$COVERITY_TOKEN"
|
|
tar xzf coverity_tool.tgz
|
|
popd
|
|
TOOL_DIR=$(find "$TOOL_BASE" -type d -name 'cov-analysis*')
|
|
ln -s "$TOOL_DIR" "$TOOL_BASE"/cov-analysis
|
|
fi
|
|
|
|
cp script/user_nodefs.h "$TOOL_BASE"/cov-analysis/config/user_nodefs.h
|
|
|
|
COV_BUILD="$TOOL_BASE/cov-analysis/bin/cov-build"
|
|
|
|
# Configure and build
|
|
rm -rf _build
|
|
mkdir _build
|
|
cd _build
|
|
cmake .. -DTHREADSAFE=ON
|
|
COVERITY_UNSUPPORTED=1 \
|
|
$COV_BUILD --dir cov-int \
|
|
cmake --build .
|
|
|
|
# Upload results
|
|
tar czf libgit2.tgz cov-int
|
|
SHA=$(git rev-parse --short HEAD)
|
|
curl \
|
|
--form project=libgit2 \
|
|
--form token="$COVERITY_TOKEN" \
|
|
--form email=bs@github.com \
|
|
--form file=@libgit2.tgz \
|
|
--form version="$SHA" \
|
|
--form description="Travis build" \
|
|
http://scan5.coverity.com/cgi-bin/upload.py
|