Merge #6550 from ZyX-I/pvs-check-comment

This commit is contained in:
Justin M. Keyes
2017-04-20 22:00:03 +02:00
committed by GitHub
114 changed files with 379 additions and 15 deletions

View File

@@ -12,20 +12,28 @@ help() {
echo 'Usage:'
echo ' pvscheck.sh [target-directory [branch]]'
echo ' pvscheck.sh [--recheck] [target-directory]'
echo ' pvscheck.sh --patch [--only-build]'
echo
echo ' --recheck: run analysis on a prepared target directory'
echo ' --patch: patch sources in the current directory.'
echo ' Does not patch already patched files.'
echo ' Does not run analysis.'
echo
echo ' target-directory: Directory where build should occur'
echo ' --only-build: Only patch files in ./build directory.'
echo
echo ' --recheck: run analysis on a prepared target directory.'
echo
echo ' target-directory: Directory where build should occur.'
echo ' Default: ../neovim-pvs'
echo
echo ' branch: Branch to check'
echo ' Default: master'
echo ' branch: Branch to check.'
echo ' Default: master.'
}
get_pvs_comment() {
cat > pvs-comment << EOF
// This is an open source non-commercial project. Dear PVS-Studio, please check it.
// PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
// This is an open source non-commercial project. Dear PVS-Studio, please check
// it. PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
EOF
}
@@ -62,19 +70,27 @@ patch_sources() {
get_pvs_comment
local sh_script='
cat pvs-comment "$1" > "$1.tmp"
mv "$1.tmp" "$1"
pvs_comment="$(cat pvs-comment ; echo -n EOS)"
filehead="$(head -c $(( ${#pvs_comment} - 3 )) "$1" ; echo -n EOS)"
if test "x$filehead" != "x$pvs_comment" ; then
cat pvs-comment "$1" > "$1.tmp"
mv "$1.tmp" "$1"
fi
'
find \
src/nvim test/functional/fixtures test/unit/fixtures \
-name '*.[ch]' \
-exec /bin/sh -c "$sh_script" - '{}' \;
if test "x$1" != "x--only-build" ; then
find \
src/nvim test/functional/fixtures test/unit/fixtures \
-name '*.c' \
-exec /bin/sh -c "$sh_script" - '{}' \;
fi
find \
build/src/nvim/auto build/config \
-name '*.[ch]' -not -name '*.test-include.c' \
-name '*.c' -not -name '*.test-include.c' \
-exec /bin/sh -c "$sh_script" - '{}' \;
rm pvs-comment
}
run_analysis() {
@@ -103,8 +119,6 @@ do_check() {
create_compile_commands
patch_sources
run_analysis
}
@@ -128,6 +142,17 @@ main() {
set -x
if test "x$1" = "x--patch" ; then
shift
if test "x$1" = "x--only-build" ; then
shift
patch_sources --only-build
else
patch_sources
fi
exit $?
fi
local recheck=
if test "x$1" = "x--recheck" ; then
recheck=1