á PVS-Studio analyzer ááľáĽ á C áĽá C++ ááááá˝ á ááááľ áĽá áááŚá¤áľ á¨áľáŞáľ 7.04 ááᎠá¨á°áá°á áááá˝á áááá ááá¨áľ á¨áá¨áŤ á ááŤá áłááˇáᢠá á˛áąá áááł á áá áá á°ááłáá˝á áááá°á˝ áĽá áĽáŤááá˝á áááłáĽ áááá áá˝ááᢠáá
á˝áá áĽáá° Travis CIᣠBuddy áĽá AppVeyor áŁá áłáá CI (ááŁá áá
á°áľ) áľáááśá˝ ááľáĽ á¨GitHub ááŽáááľ á¨á°áá¨áŠ áááá˝á áááá ááá°á˝ áĽáá´áľ áĽáá°ááŤáá
አááááááłáá˘
á¨ááá áááá á á¨ááἠáááł
á PVS-Studio 7.04 áááááľ áĽá áááŚá¤áľáŁ á¨ááá áááá˝á áááá á¨ááá°á˝ áááł áłááˇáᢠáá
á¨áááŁáł áľáááą áááá áááá á áááá
áľáááľ ááŽáááśá˝ áá°áŤá
áĽáá˛ááᣠá¨ááá áááá ááá°áť áááłá á¨áľáŤá áá áŚá áŽáááá ááľáááŞáŤáá˝ (pvs-studio-analyzer trace) áá á áĽáŽ áá áá ááťááᢠáá áá áááľá¨á á ááááŞáŤ á¨ááŽáááąá áá áááŁáł áá¨ááá áĽá á°ááłá áľá ááá áááá˝ áľáĽáľáĽ áááŞáŤáá˝ á¨á°áá áá¨á áĽáá˛á°á áľáĽ áá¨áłá°á áŤáľáááááłá.
ááá ᣠáá á ááŤá ááá á¨áá ááľááľ á áá - áĽááľá á áá°áŠá áľ áá á¨á á áááá ááŽáááľ áá á¨áááŁáł áąáŤ áá¨ááá áŤáľáááááłá ᣠáá á áŤáą ááá áááľá á ááĽááľ á¨ááá°á˝ ááłáĽá ááá¨ááᢠáááᣠá¨áá¨áłá°áŤ áá¤áąá áĽáŤáą áŤá¸ááľáŁ á¨ááá áááá˝ áĽááááľ ááá á á¨ááľáľá á áá á¨á°áá¨á¨ á¨áááĽááľ á¨á°ááłá áŠáŤáá˝ áŤáá°áá ááá áá˝áá (áááłáᣠá á˛áľ #include áá° á ááą á¨ááá ááááš á˛á¨áá)á˘
áľááá
á¨ááá áááá áźá áááłá á¨áá¨áłá°áŤ áááἠááľáłááť áá á°á á
áá ááá¸áá ááá áĽáŤááá˝á ááłáĽ á áááááᢠááá áááľá á áááľášá áľ áá á°á¨á᪠áááŁáł ááľáŤáľ á¨áťáᣠáááłáá ááá áá áŤáľáĄá áľ
ááá°áá°á á¨ááá áááá˝ áááá á á˝áá ááá ááľáĽ á°ááá§á áĽá áááŞáŤáá á áá áá áá° á°ááłá áá°áááá -S:
pvs-studio-analyzer analyze ... -f build/compile_commands.json -S check-list.txt
áá ááá áá° áááá˝ á ááťáŤá ááá ááá áąáŤáá˝á ááááťáᣠáĽá áĽáŤááłááą á á˛áľ ááá á á á˛áľ ááľáá áá ááá á áá áľá˘ ááá°áá°á á¨ááá áľáá˝á áĽáť áłááá á¨á°ááŤáŠ á˝ááá˝á ááĽááľ á°ááŁáááľ á áá. á°ááłá áá ááá á ááááá áŤáŤá áĽá ááľááŠá á˝á áááᢠáááá˝ á áĽá á¨á°áááš áá á áľá°áŤá¨áľ áááľá áľ á áá ááá áá˝ááᢠááá ááᣠáĽá áá á¨áááá˝ áááá á CI ááľáĽ á áá°áá°áá áľ áá ááá áŤáᣠáááłáᣠáĽááá á¨áá ááá á¨ááłáĽ áĽáŤá áááá˝ ááá áá˝ááá˘
á áá, áá á áááł á áá áá, áá° ááá á¨áĽáľááľ á áááŤá á¨áááŁáą á ááľ á á˛áľ áŽáľ á ááĽááľ áá¨ááἠáá˝áá. á¨áá°áť áľáááą áá°ááłáá˝ ááľá ááááŤáá˝ ááá˝ ááľá áąá ááá¨ááἠáááááŤá ááá-ááá¨áŞáŤ áŁáá˛áŤ áłáááᢠ--áááá¨áľ-ááľá ááááŤáá˝:
plog-converter ... --indicate-warnings ... -o /path/to/report.tasks ...
á áá áŁáá˛áŤáŁ á á°ááłá ááᣠááľáĽ ááľá ááááŤáá˝ áŤá ááá¨áŞáŤá áᎠáŤááá áŽáľ ááááłáᢠá¨ááááť áŽáąá á áá áá á¨á áľá፠áá ááá áá áááľáŁ ááá¸á ááá ááá°áľ áá˝ááᣠáĽá á¨ááá¨á á°ááłá ááᣠá á˘ááá ááłáᣠáá፠ááá ááá áá˝ááá˘
ááľáłááť. á ááááŞáŤ á¨áááá˝á áááá áá°áá°á á˛áááŠ, ááŽáááą á áá ááá¨ááŤá, ááááŤáąá á°ááłá á áááľ ááááš áá á¨ááŽáááľ ááá áááá˝á á¨áĽáá ááá ááá á á áá áľá˘ áá C áĽá C++ áááá˝á á¨áá°áá°á áŁá ᪠ááᢠááá°ááľáŁ á¨áĽáá ááá áá¸á፠áá°á¨á áá˝áá áĽá á á°ááłá á áŤáľ-á°á áááááᢠá¨ááŁáŤáľ áĽá á á¨ááá áááá ááá°áť áááłá á˛á áá á°á¨á᪠áľááłá áááłá á˛á áá áááá áá¸á፠áĽáť áĽáá á¨ááá áááá˝á á áááá ááá˘
á¨ááłáĽ áĽáŤá áľáá°á á á ááá ááááá˝
áááá ááŽáááľ áá°áá°á áĽá áá áááľáłá, áľááá á¨á°áá°ááá ááá áĽáť ááá°á˝ ááááŤáłá áá. á˝áአá á˛áśášá áááá˝ á¨á°ááŠáľ á¨ááŽáááľ áááá˝ ááá¨áľ áŤáľáááááłá.
áááľ á áááŤáá˝ áŤááľ á¨ááἠáá ááłá áĽáááá¨áľá˘
áŤáá ááá áááľ áĽááľáĽ A1 áá°á á˛á á¨á°áá¨á¨ áľáááá áá á áŤáá áŽáľ áááᢠáľáá˝ áá°á áĽá á¨áŽáá˝á á áááŤá á áŤá A1 áĽá á ááłááľ áááá˝á ááá¨áá.
áĽááľá ᣠá áĽááἠᣠáŤáá á áľá°áááá A1 áááľ á°á¨á᪠áľáááśá˝ á°á¨áľá°áá, ááá áá áĽááá á°áá á¨ááá˝ á áááŤáá˝ áá á°áľ áá áŠ, ááááŤáąá áĽá áá áľááááᣠáŁáá¤áľ. áĽá á áá ááá á°ááˇá áááľáá ááá. áááŤá áá á¨áá á°áľ áĽáŤá áłá¨ B3 и A3.
áĽááἠááᣠá¨áá á°áłá¸áá á á ááá áá¤áľ ááá°á˝ ááťá áá áᣠááá áá áá á áŁá áĽá áá á¨áááľáľ áĽá áľáááá áŤááá ááᣠááááŤáąá áĽááľ áááá˝ áĽáť áľáá°áá¨áŠá˘ áľááá , á¨á°áá¨áŠáľá áĽáť ááá°áá°á á¨á áá áá¤áłá áá.
áá áá áááľá¨á áá° áá ááááá á ááááá áľ á¨á áááŤá áŤáľ ááľáĽ á ááá á á áááŤááš ááŤá¨á áŤááá ááŠááľ áĽááááá á˘
git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list
$MERGE_BASE á áá á áááá áĽáááá¨áłáá. áĽáááłá áá áĽáŤááłáṠᨠCI á áááááľ áľá á¨ááἠááł áááááľ á áľááááá áá¨á á áá°áĽá, áľááá á áĽáŤááłááą áá áá áá ááἠáááááľ á áłá˛áľ ááááśá˝á ááá á á ááĽááľ. áá á áĽáŤááłááą á á°ááášáľ á¨áľá á áááááśá˝ ááľáĽ á¨áá á áłá˝ á áááá ááááťáá˘
áľááá , á á áááŤááš ááŤá¨á áŤááá ááŠááľ á ááá°áá, ááá áááááľ, á¨á°áá¨áŠáľ á¨ááá áľáá˝ áááá. á áá áááá ááľá áľ á ááĽá .pvs-pr.áááá (á¨áá áŤááá áá¤áľ áá° áĽáą á áá¨ááá) áá° á°ááłááĄ-
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
-S .pvs-pr.list
á¨áá°áá°á á ááᣠá¨áááἠááľáłááť áááá (PVS-Studio.log) áá° áááá ἠááá á áá¸áľ áááἠá ááĽáá˘
plog-converter -t errorfile PVS-Studio.log --cerr -w
áá
áľááá áľá
á°áśášá ááá¨ááŤá
á áá áĽáť áľá á°áśá˝á ááłá¨áľ áĽáť áłááá á¨á˝ááŽá˝ áááŤá¸áá ááááŁá á áĽá áááá°á˝ á áááááłá˝áá ááłáá á ááĽá. ááá ááá, á ááá¨áŞáŤá áá áŁáá˛áŤ á°á¨ááŻá -W (--áááá¨áľ-ááľá ááááŤáá˝). á˘áŤááľ á ááľ á°ááłá ááľá ááá፠áŤá á¨áááł ááááť áŽáľ ááá-ááá¨áŞáŤ áá° 2 ááá¨áŤá, áá á á á°áŤá ᨠCI á áááááľá á ááá°áľ áĽáŤá áááá˝ ááľáĽ ááአá¨áá˝á áľá á°áśá˝ áááŠá áŤáłááá.
Travis CI
á áááአáĽáá° ááá áá á¨á°á°áŤáᢠ.travis.yml. ááááťá¸áľ ᣠáááá ááá á¨ááá á¨áá አá°ááŁáŤáľ áá áá° á¨á°áᨠá¨áŁá˝ áľááŞááľ áĽáá˛áŤáľááᥠáĽáááááłááᢠ.travis.yml (bash script_name.sh á°ááŁá_áľá).
á áľááŞááą áá á áľááááá áŽáľ áĽáá¨ááŤáá bash, á áá ááááľ á°á¨á᪠á°ááŁáŤáľá áĽááááá. á ááá áŤá á¨áá¨á°ááá áĽááťááĄ-
install:
- bash .travis.sh travis_install
áááá¸áá áááŞáŤáá˝ áŤáááľ áá° áľááŞááą ááľá°ááá áá˝áá ᣠá°á¨áá˝á áŤáľáááąá˘
áááá áĽáááá°á .travis.sh áĽá á¨áá°áá°á á áá áąá áá° á°ááŁá áŤáááľá˘ travis_install():
travis_install() {
wget -q -O - https://files.viva64.com/etc/pubkey.txt
| sudo apt-key add -
sudo wget -O /etc/apt/sources.list.d/viva64.list
https://files.viva64.com/etc/viva64.list
sudo apt-get update -qq
sudo apt-get install -qq pvs-studio
}
á áá áá° ááá áĽáá¨áá áľááŞááľ áľááłáá á ááľ;
script:
- bash .travis.sh travis_script
áĽá á áŁá˝ áľááŞááľ ááľáĽáĄ-
travis_script() {
pvs-studio-analyzer credentials $PVS_USERNAME $PVS_KEY
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
git diff --name-only origin/HEAD > .pvs-pr.list
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
-S .pvs-pr.list
--disableLicenseExpirationCheck
else
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
--disableLicenseExpirationCheck
fi
plog-converter -t errorfile PVS-Studio.log --cerr -w
}
áá áŽáľ ááŽáááąá á¨ááᣠá áá áá°áá á á áá áľáŁ áááłáᣠá CMake áá áááŁáł á¨áá á¨ááľáĄ-
travis_script() {
CMAKE_ARGS="-DCMAKE_EXPORT_COMPILE_COMMANDS=On ${CMAKE_ARGS}"
cmake $CMAKE_ARGS CMakeLists.txt
make -j8
}
áĽáá°áá¨á°áá áááááĄ-
travis_script() {
CMAKE_ARGS="-DCMAKE_EXPORT_COMPILE_COMMANDS=On ${CMAKE_ARGS}"
cmake $CMAKE_ARGS CMakeLists.txt
make -j8
pvs-studio-analyzer credentials $PVS_USERNAME $PVS_KEY
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
git diff --name-only origin/HEAD > .pvs-pr.list
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
-S .pvs-pr.list
--disableLicenseExpirationCheck
else
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
--disableLicenseExpirationCheck
fi
plog-converter -t errorfile PVS-Studio.log --cerr -w
}
áĽááá á á¨á áŤáŁá˘ á°ááááŽá˝ á áľááľáá á áľá°ááá ááááᢠ$TRAVIS_PULL_REQUEST и $TRAVIS_BRANCH. Travis CI áŤáłá¸áá á˝áá áŤááá¸áááĄ-
- $TRAVIS_PULL_REQUEST á¨áááľáľ áĽáŤá ááĽá áŤá¨ááťá ááá á¨áá°áľ, áá áá°á á á áááŤá á¨áá;
- $TRAVIS_REPO_SLUG á¨ááŽáááąá áá¨ááť áľá áŤá¨ááťá.
á¨áá á°ááŁá áľáá° ááááĄ-
áľáŤáŞáľ á˛á á á¨ááááť áŽáśá˝ ááá˝ áá°áŁááŁáľááá
á¨ááľá ááááŤáá˝ ááá á áááááą áľá
á°áśášá áĽáá°áŤá ááááľ áĽáá˛áŤá°áá áááá¨ááá˘
á áá áá áá á¨áŽáľ ááľáá á áááá áĽáááá¨áľáĄ-
git diff --name-only origin/HEAD > .pvs-pr.list
áĽáááłá áá Travis CI á¨ááá°áľ áĽáŤáá á ááá¨ááá áľ áá á áááŤáá˝á á áŤáľ-á°á áŤáá áłááĄ-
áľááá
áĽááá¨ááŤáá A4á áá°áá B3-> A3. á áá
áŁá
᪠ááááŤáľ, ááŠááąá ᨠáá ááľááľ áŤáľááááá Đ3, áĽáąá á áľááá á¨á
áááŤá á¨áááá ááá ᨠááá.
á ááľ á áľááá áááá áááŤá - á¨áŤáľá áááá˝á á á°ááá á¨áľááá áááá˝ (*.cᣠ*.ccᣠ*.cppᣠááá°.) áá áŤááá áĽááááľ áá¸ááĽá˘ á°ááłá áĽááá á áĽááá˝ á ááááŞáŤ á¨áááá˝á áááá á ááá°á˝ áááł á˛ááá áŤá°áá áĽá á¨ááŤá á .PVS-Studio áá፠ááľáĽ áŤáľáááŁá¸ááᢠTravis CI á áááá˝á áĽáá˛á¸áᥠááá áľáááłá, áľááá á¨áááŤáá ááἠáĽááľáááŁáá .PVS-áľáąá˛áŽ/:
cache:
directories:
- .PVS-Studio/
áá áŽáľ áá° ááá ááłá¨á á áá áľá˘ .travis.yml. áá áá፠á¨á°á°áá°á á áá á¨á°á°á á°áĄ á¨á°ááŤáŠ áá¨ááá˝á áŤá¨ááťáᣠáá á á ááŁá á¨ááá áááá áľáá°á ááá á°á¨á᪠áľáá°á áá°áśá˝á á áĽá á áŤááĽááᢠáá áŤáá°á°á¨á, á°ááłá á áĽáááą áááá áááá˝ á áĽáŤááłááą áá ááá¨ááŤá.
Buddy
áĽáá° Travis CI áŁ
á ááááŞáŤ á°á¨á, á áľáĽá°áŁá ááľáá áá á á˛áľ áĽááá áá¨á á ááĽá:
ááŽáááąá áááááŁáľ áĽá
á áá á¨áááá á á áá᪠áĽáá áá. á áá
áľáááľ ááľáĽ á¨á°áŤááá á¨áśá áŽáá´ááá áŤáľá°áá. áááłáᣠááá˛á˛ áአááŤáŁ á ááĄ-
á áá PVS-Studioá áĽá á áľááááášá áááááŤáá˝á áĽááŤááĄ-
á¨áá¨á°ááľá ááľááŽá˝ áá° á ááłáá áĽáá¨ááá˘
apt-get update && apt-get -y install wget gnupg jq
wget -q -O - https://files.viva64.com/etc/pubkey.txt | apt-key add -
wget -O /etc/apt/sources.list.d/viva64.list
https://files.viva64.com/etc/viva64.list
apt-get update && apt-get -y install pvs-studio
á áá áá° Run áľá (á¨ááááŞáŤá á áś) áĽáááľ áĽá á¨áá¨á°ááá áŽáľ áá° á°ááłá á¨á ááłá ááľá áĽáá¨ááá˘
pvs-studio-analyzer credentials $PVS_USERNAME $PVS_KEY
if [ "$BUDDY_EXECUTION_PULL_REQUEST_NO" != '' ]; then
PULL_REQUEST_ID="pulls/$BUDDY_EXECUTION_PULL_REQUEST_NO"
MERGE_BASE=`wget -qO -
https://api.github.com/repos/${BUDDY_REPO_SLUG}/${PULL_REQUEST_ID}
| jq -r ".base.ref"`
git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
--disableLicenseExpirationCheck
-S .pvs-pr.list
else
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
--disableLicenseExpirationCheck
fi
plog-converter -t errorfile PVS-Studio.log --cerr -w
á Travs-CI áá áŤááá ááá áŤáá ᥠáá áŽáľ ááľááá ááĽááľá á¨áłáá áá ᣠáá á áá á á˛áľ á°á¨á á á
áĽáááłá áá á áá á¨ááá°ááľáá á¨áá
á°áąá áá¤áľ áłááá á¨ááá°áľ áĽáŤá á¨áá¨á á áľá á¨á
áááŤáá ááá áááĄ-
áľááá
áĽá á áááłá ááá áááľ áá áá B3 áĽá ááŠááąá ááááľ á ááĽá A3:
PULL_REQUEST_ID="pulls/$BUDDY_EXECUTION_PULL_REQUEST_NO"
MERGE_BASE=`wget -qO -
https://api.github.com/repos/${BUDDY_REPO_SLUG}/${PULL_REQUEST_ID}
| jq -r ".base.ref"`
git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list
áááá°á A3 GitHub á¤áá áá áĽáá áááĄ-
https://api.github.com/repos/${USERNAME}/${REPO}/pulls/${PULL_REQUEST_ID}
áĄá˛ á¨ááŤáááŁá¸áá á¨áá¨á°ááľá á°ááááŽá˝ á°á áááá˘
- $BUDDY_EXECUTION_PULL_REQEUST_NO - á¨áĽáŤá ááĽá áááľáą;
- $BUDDY_REPO_SLUG - á¨á°á áá áľá áĽá áá¨ááť (áááłá á¨áá°á/áá¨áŤ) áĽáá¨áľá˘
á áá á¨áłá˝ áŤááá á ááŤá á°á á áá áááŚášá áĽááľááἠáĽá á¨ááá°áľ áĽáŤáá áľáá°á á ááá˘
áĽáá° Travis CI á á°áá¨áŁ áááá˝ á áŤáľáááááᢠ.pvs-áľáąá˛áŽ Buddy áááŁá á
áá áááá áááá˝ á áŤáľ-á°á áľááá¸áἠááá¸ááĽá˘ áľááá
, á¨áá¨á á¨áá¨á¨áťá ááá á Buddy ááľáĽ á PVS-Studio ááá˘áŤ áĽá á¨ááá áá ááľááἠáá. áááŚášá áŤáľáááĽá á áá áá° á§áá§á áĽááááłáá. á°ááááŽá˝á áá°áááááľ áĽá á PVS-áľáąá˛áŽ ááá˘áŤ áĽá ááá áá¨á á ááĽááĄ-
á¨áá
á ááᣠá á˛áľ á¨ááłáĽ áĽáŤá ááá ááá áááľ ááłá¨áľ áááááá áŤáľááłáᢠá ááľ ááá¸á áľá
á°áśá˝á á¨áŤáᣠBuddy áá
áá á ááá°áľ áĽáŤá ááš áá áá áááá˘
á ááŹáŽá
á ááŹáŽáá áááá ᨠBuddy áá á°ááłáłá ááᣠááááŤáąá ááá ááá á áľá á áááá˝ ááľáĽ áľááá¨á°áľ áĽá * .yml ááá áá° ááŽáááą áá¨ááť áá¨á á áŤáľááááá˘
á ááŽáááą á á ááá áĽááł ááľáĽ áá° á¨á ááĽáŽá˝ áľá áĽáááľáĄ-
áá
á áá˝ áá° áłá˝ áĽáá¸áĽáá áĽá á¨áá¸á፠áĽáŤááá˝á ááá°áĽá°áĽ áá¸á፠áá áŁá á áááĄ-
á áá ááľáá ááá°áĽá°áĽ áĽá á áľááá á¨á áŤáŁá˘ á°ááááŽá˝á áá°ááááá˝á áľ á¨á áŤáŁá˘ áľáŠ áĽáááľáĄ
á¨áá°ááľá áááá˝ áŤáá áĽáᣠá¨áĽááá
áááľ á°ááááŽá˝ áá á á°áἠáłáááá
- PVS_KEY и PVS_USERNAME. áŤáááᣠᨠPVS-Studio analyzerá áááľ ááá¨ááἠá áľááá áááá¸áá ááľáłááľá
ᢠáá°ááľ áĽáá°áá á áŁá˝ áľááŞááśá˝ ááľáĽ áĽááŤá¸áááá˘
á¨áłá˝ áŁáá á°ááłáłá áá˝ áá ááá¸á፠á áá áĽáá áááá-
áá
áá áŤáá°á¨áá, á¨áááľ áááá˝ ááá
áááá ááŽáááľ áĽááá¨ááŤáá, ááá áá á¨á°ááášáľ áááá˝ ááľáĽ áá¤áąá áĽááááá. áľááá
, áľáááááá á¨áá፠áľá ááľááŁáľ á áľááá áá.
á áá áľááŞááą á¨ááá¨áá áľ áá ááᢠá¨áá¨áŤ áľáŠá ááááą áĽá áľááŞááľá ááá¨áĄáĄ
á¨áá¨á°ááá áŽáľ áá°áá
á
á˝ ááá á áŤáľáááááłáá˘
sudo apt-get update && sudo apt-get -y install jq
wget -q -O - https://files.viva64.com/etc/pubkey.txt
| sudo apt-key add -
sudo wget -O /etc/apt/sources.list.d/viva64.list
https://files.viva64.com/etc/viva64.list
sudo apt-get update && sudo apt-get -y install pvs-studio
pvs-studio-analyzer credentials $PVS_USERNAME $PVS_KEY
PWD=$(pwd -L)
if [ "$APPVEYOR_PULL_REQUEST_NUMBER" != '' ]; then
PULL_REQUEST_ID="pulls/$APPVEYOR_PULL_REQUEST_NUMBER"
MERGE_BASE=`wget -qO -
https://api.github.com/repos/${APPVEYOR_REPO_NAME}/${PULL_REQUEST_ID}
| jq -r ".base.ref"`
git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
--disableLicenseExpirationCheck
--dump-files --dump-log pvs-dump.log
-S .pvs-pr.list
else
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
--disableLicenseExpirationCheck
fi
plog-converter -t errorfile PVS-Studio.log --cerr -w
ááá¨á°áá á¨áŽáą ááá áľáŠá¨áľ áĽááľáĽáĄ-
PWD=$(pwd -L)
if [ "$APPVEYOR_PULL_REQUEST_NUMBER" != '' ]; then
PULL_REQUEST_ID="pulls/$APPVEYOR_PULL_REQUEST_NUMBER"
MERGE_BASE=`wget -qO -
https://api.github.com/repos/${APPVEYOR_REPO_NAME}/${PULL_REQUEST_ID}
| jq -r ".base.ref"`
git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
--disableLicenseExpirationCheck
--dump-files --dump-log pvs-dump.log
-S .pvs-pr.list
else
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
--disableLicenseExpirationCheck
fi
áá áá ááŁáŞ áĽá´áľ áá¨áá¸áľ áŤáá áľ áá°áááá ᨠpwd áľááá áá á¨á°áᨠáá°áŁ á ááááŞáŤ áĽááł áĽáááł áááľáá ᣠááá áááá ááá á áá áĽáááťááá˘
á AppVeyor ááľáĽ á°ááłáá á áááááľ áá áłááŁá¨á°ááłá á áŁá áĽáááł áŁá ᪠á ááĽáááᢠá á ááľ á áŠá, ááá ááá á áľááá á ááˇá, ááá áá áľááłáá á áááá¨á. á /home/appveyor/ááŽáááśá˝/testcalc/ áá፠ááľáĽ áááá˝áá á áááá¨áľ áĽá áá á áłáááŠáŁ áĽá á°ááłá á /opt/appveyor/build-agent/ ááľáĽ áááá˝áá áĽááá á ááᢠá¨ááŤá á¨$PWD á°áááá áľáá˝ áá¸áľ áĽáá°áá á°ááááĽáŠá˘ á áá ááááŤáľ áľááłááá á¨áááᏠá ááľ áĽá´áąá á áĽá á ááááááá˘
áĽá á¨á፠ááá ááá áĽáá° ááľáá áá-
á áá á¨áá¨á°ááá ááŤá á áľáĄá áľ:
PULL_REQUEST_ID="pulls/$APPVEYOR_PULL_REQUEST_NUMBER"
MERGE_BASE=`wget -qO -
https://api.github.com/repos/${APPVEYOR_REPO_NAME}/${PULL_REQUEST_ID}
| jq -r ".base.ref"`
á ááľáĄá á¨ááłáĽ áĽáŤáá á áááá˝áŁá¸á á áááŤáá˝ ááŤá¨á áŤááá ááŠááľ áĽááááá. áá áá áááľá¨á á¨áá¨á°ááľá á¨á áŤáŁá˘ á°ááááŽá˝ áĽááááááá˘
- $APPVEYOR_PULL_REQUEST_NUMBER â á¨ááłáĽ áĽáŤá ááĽá;
- $APPVEYOR_REPO_NAME - á¨á°á áá áľá áĽá á¨ááŽáááľ áá¨ááťá˘
áá°áá°ááŤ
áĽááἠááᣠáááá ááá á¨áá˝á á°á¨áłáłá á¨áá á°áľ á áááááśá˝á áááľ ááľáĽ á ááľááŁááᣠááá ááᣠááá á ááłá¸á á¨ááá áá á áŁá á°ááłáłá á¨áá á¨á á áŤá ááááŽá˝ á áá¸áᢠá¨áá¸áἠá áľá°áá áĽáŤááłááą á áááááľ á¨áŤáąá "áĽáľáááľ" áá áŤá, áľááá ááá ááá áááá á¨á°áᨠáá.
á¨áá áŚáłáŁ áá áĽáá° Travis-CIᣠáááľ á¨áŽáľ ááľááŽá˝ áĽá áá¸á፠áŤáááá áĽáá¨á áá°áŤáᢠá¨áá áŚáł ᣠáá áĽáá° AppVeyor ᣠá á ááĽáŽá˝ ááľáĽ á áááá áááá˝ áĽáť áŤáľáááááłá ᢠááá áá á¨áá áŚáł áአáááá˝á ááá á áĽá á¨á°á¸áá áá ááááá áááá áĽáľá áĽáá˛á°áĽá áľáááąá áááłáá ááááŠ. áľááá ᣠá¨áá áŤáá°áĽáŤáŤá ááŁáááľ áŁáá á¨áá á°áľ á áááááľ áá á¨áá áĽáŤááá˝á áľáá°á áááááľ á¨ááá á ááááŞáŤ á áá¸áἠáá á˝áá áĽáá°ááááááľ áŤá¨áááĄá˘
áá°á á
á á áľáŠáŽáľ áĽááá°áááá. á¨áá ááá áŤáá°áŤáŁ á áĽá áá áááťá ááááľ áá°áá
áá
á á˝áá ááĽááááá á°áá᪠áłáłááá˝ áááŤáľ á¨ááá áĽáŁááá á¨áľááá ááááá áá ááᥠMaxim Zvyagintsevá˘
ááá: hab.com