aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2018-04-27 09:25:02 +0200
committerGitHub <noreply@github.com>2018-04-27 09:25:02 +0200
commit53f11dcfc7139fe6c8a6b114db4bfec5d91005a9 (patch)
treee9bfbaf10fc6681bbbcba0a0eabdce8a6f6840b5 /scripts
parent009ccfe170ada2c78ca7feabda567a7e901fb30b (diff)
parent4ce8521ee4a72e050bd187c2986708c5f98c7442 (diff)
downloadrneovim-53f11dcfc7139fe6c8a6b114db4bfec5d91005a9.tar.gz
rneovim-53f11dcfc7139fe6c8a6b114db4bfec5d91005a9.tar.bz2
rneovim-53f11dcfc7139fe6c8a6b114db4bfec5d91005a9.zip
Merge #8218 'Fix errors reported by PVS'
closes #4983
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/pvscheck.sh42
1 files changed, 34 insertions, 8 deletions
diff --git a/scripts/pvscheck.sh b/scripts/pvscheck.sh
index 314966f6aa..11b672c515 100755
--- a/scripts/pvscheck.sh
+++ b/scripts/pvscheck.sh
@@ -21,13 +21,14 @@ help() {
echo 'Usage:'
echo ' pvscheck.sh [--pvs URL] [--deps] [--environment-cc]'
echo ' [target-directory [branch]]'
- echo ' pvscheck.sh [--pvs URL] [--recheck] [--environment-cc]'
+ echo ' pvscheck.sh [--pvs URL] [--recheck] [--environment-cc] [--update]'
echo ' [target-directory]'
echo ' pvscheck.sh [--pvs URL] --only-analyse [target-directory]'
echo ' pvscheck.sh [--pvs URL] --pvs-install {target-directory}'
echo ' pvscheck.sh --patch [--only-build]'
echo
echo ' --pvs: Fetch pvs-studio from URL.'
+ echo
echo ' --pvs detect: Auto-detect latest version (by scraping viva64.com).'
echo
echo ' --deps: (for regular run) Use top-level Makefile and build deps.'
@@ -47,6 +48,8 @@ help() {
echo
echo ' --recheck: run analysis on a prepared target directory.'
echo
+ echo ' --update: when rechecking first do a pull.'
+ echo
echo ' --only-analyse: run analysis on a prepared target directory '
echo ' without building Neovim.'
echo
@@ -302,8 +305,16 @@ create_compile_commands() {(
# realpath is not available in Ubuntu trusty yet.
realdir() {(
local dir="$1"
- cd "$dir"
- printf '%s\n' "$PWD"
+ local add=""
+ while ! cd "$dir" 2>/dev/null ; do
+ add="${dir##*/}/$add"
+ local new_dir="${dir%/*}"
+ if test "$new_dir" = "$dir" ; then
+ return 1
+ fi
+ dir="$new_dir"
+ done
+ printf '%s\n' "$PWD/$add"
)}
patch_sources() {(
@@ -353,9 +364,12 @@ run_analysis() {(
--file build/compile_commands.json \
--sourcetree-root . || true
- plog-converter -t xml -o PVS-studio.xml PVS-studio.log
- plog-converter -t errorfile -o PVS-studio.err PVS-studio.log
- plog-converter -t tasklist -o PVS-studio.tsk PVS-studio.log
+ rm -rf PVS-studio.{xml,err,tsk,html.d}
+ local plog_args="PVS-studio.log --srcRoot . --excludedCodes V011"
+ plog-converter $plog_args --renderTypes xml --output PVS-studio.xml
+ plog-converter $plog_args --renderTypes errorfile --output PVS-studio.err
+ plog-converter $plog_args --renderTypes tasklist --output PVS-studio.tsk
+ plog-converter $plog_args --renderTypes fullhtml --output PVS-studio.html.d
)}
detect_url() {
@@ -389,13 +403,24 @@ do_check() {
install_pvs "$tgt" "$pvs_url"
- do_recheck "$tgt" "$deps" "$environment_cc"
+ do_recheck "$tgt" "$deps" "$environment_cc" ""
}
do_recheck() {
local tgt="$1" ; shift
local deps="$1" ; shift
local environment_cc="$1" ; shift
+ local update="$1" ; shift
+
+ if test -n "$update" ; then
+ (
+ cd "$tgt"
+ local branch="$(git rev-parse --abbrev-ref HEAD)"
+ git checkout --detach
+ git fetch -f origin "${branch}:${branch}"
+ git checkout -f "$branch"
+ )
+ fi
create_compile_commands "$tgt" "$deps" "$environment_cc"
@@ -427,6 +452,7 @@ main() {
pvs-install store_const \
deps store_const \
environment-cc store_const \
+ update store_const \
-- \
'modify realdir tgt "$PWD/../neovim-pvs"' \
'store branch master' \
@@ -445,7 +471,7 @@ main() {
elif test -n "$pvs_install" ; then
install_pvs "$tgt" "$pvs_url"
elif test -n "$recheck" ; then
- do_recheck "$tgt" "$deps" "$environment_cc"
+ do_recheck "$tgt" "$deps" "$environment_cc" "$update"
elif test -n "$only_analyse" ; then
do_analysis "$tgt"
else