Mion-sgrùdadh air geallaidhean agus iarrtasan tarraing ann an Travis CI, Buddy agus AppVeyor a’ cleachdadh PVS-Studio

Mion-sgrùdadh air geallaidhean agus iarrtasan tarraing ann an Travis CI, Buddy agus AppVeyor a’ cleachdadh PVS-Studio
Anns an anailisiche PVS-Studio airson cànanan C agus C ++ air Linux agus macOS, a’ tòiseachadh bho dhreach 7.04, tha roghainn deuchainn air nochdadh gus sùil a thoirt air liosta nam faidhlichean ainmichte. A’ cleachdadh a’ mhodh ùr, faodaidh tu an anailisiche a rèiteachadh gus sùil a thoirt air geallaidhean agus iarrtasan a tharraing. Innsidh an artaigil seo dhut mar a stèidhicheas tu sgrùdadh air liosta nam faidhlichean atharraichte de phròiseact GitHub ann an siostaman CI (Amalachadh Leantainneach) cho mòr-chòrdte ri Travis CI, Buddy agus AppVeyor.

Modh sgrùdaidh liosta faidhle

PVS-Studio na inneal airson mearachdan agus so-leòntachd a chomharrachadh ann an còd stòr nam prògraman sgrìobhte ann an C, C ++, C # agus Java. Ag obair air siostaman 64-bit air Windows, Linux agus macOS.

Ann an dreach PVS-Studio 7.04 airson Linux agus macOS, tha modh airson sgrùdadh a dhèanamh air liosta nam faidhlichean stòr air nochdadh. Bidh seo ag obair airson pròiseactan aig a bheil siostam togail a’ toirt cothrom dhut faidhle a ghineadh compile_commands.json. Tha e riatanach don mhion-sgrùdaire fiosrachadh a tharraing mu cho-chruinneachadh nam faidhlichean ainmichte. Mura cuir an siostam togail agad taic ri bhith a’ gineadh am faidhle compile_commands.json, faodaidh tu feuchainn ri faidhle mar seo a ghineadh a’ cleachdadh a’ ghoireas Bear.

Cuideachd, faodar am modh sgrùdaidh liosta fhaidhlichean a chleachdadh còmhla ris an log trace trace de chuir air bhog compiler (pvs-studio-analyzer trace). Gus seo a dhèanamh, feumaidh tu an-toiseach togail iomlan den phròiseact a dhèanamh agus sùil a chumail air gus am bi an anailisiche a’ cruinneachadh fiosrachadh iomlan mu chrìochan cruinneachaidh a h-uile faidhle a thathar a’ sgrùdadh.

Ach, tha ana-cothrom mòr aig an roghainn seo - feumaidh tu an dàrna cuid làn lorg a dhèanamh den phròiseact gu lèir a h-uile uair a bhios tu ga ruith, a tha ann fhèin a’ dol an-aghaidh a’ bheachd a bhith a’ sgrùdadh gealltanas gu sgiobalta. No, ma tha thu a’ tasgadh an toradh lorg fhèin, is dòcha gum bi ruith an anailisiche às deidh sin neo-chrìochnach ma dh’ atharraicheas structar eisimeileachd nam faidhlichean stòr às deidh an lorg (mar eisimpleir, thèid #include ùr a chur ri aon de na faidhlichean stòr).

Mar sin, chan eil sinn a’ moladh a bhith a’ cleachdadh modh sgrùdaidh liosta nam faidhlichean leis an log lorg gus sùil a thoirt air geallaidhean no tarraing iarrtasan. Mas urrainn dhut togail mean air mhean a dhèanamh nuair a nì thu sgrùdadh air gealltanas, smaoinich air a’ mhodh a chleachdadh mion-sgrùdadh mean air mhean.

Tha an liosta de fhaidhlichean stòr airson mion-sgrùdadh air a shàbhaladh ann am faidhle teacsa agus air a chuir chun anailisiche a’ cleachdadh am paramadair -S:

pvs-studio-analyzer analyze ... -f build/compile_commands.json -S check-list.txt

Tha am faidhle seo a’ sònrachadh slighean càirdeach no iomlan gu faidhlichean, agus feumaidh gach faidhle ùr a bhith air loidhne ùr. Tha e iomchaidh chan e a-mhàin ainmean faidhle a shònrachadh airson mion-sgrùdadh, ach cuideachd diofar theacsaichean. Chì an anailisiche nach e faidhle a tha seo agus bheir e seachad an loidhne. Faodaidh seo a bhith feumail airson beachd a thoirt seachad ma tha faidhlichean air an sònrachadh le làimh. Ach, gu tric thèid liosta de fhaidhlichean a chruthachadh rè mion-sgrùdadh ann an CI, mar eisimpleir, dh’ fhaodadh iad sin a bhith nam faidhlichean bho iarrtas gealltanas no tarraing.

A-nis, a 'cleachdadh a' mhodh seo, faodaidh tu sgrùdadh a dhèanamh gu luath air còd ùr mus tèid e a-steach don phrìomh mheur leasachaidh. Gus dèanamh cinnteach gu bheil an siostam sganaidh a 'freagairt ri rabhaidhean analyzer, an utility plog-tionndaidh bratach air a chur ris - - cuir an cèill - rabhaidhean:

plog-converter ... --indicate-warnings ... -o /path/to/report.tasks ...

Leis a ’bhratach seo, tillidh an inneal-tionndaidh còd neo-neoni ma tha rabhaidhean ann an aithisg an anailisiche. A’ cleachdadh a’ chòd tilleadh, faodaidh tu dubhan ro-gheallta a bhacadh, gealltainn, no tarraing iarrtas, agus faodar an aithisg anailisiche a chaidh a chruthachadh a thaisbeanadh, a cho-roinn no a chuir air post-d.

Thoir an aire. Nuair a thòisicheas tu a 'dèanamh mion-sgrùdadh air liosta de fhaidhlichean an toiseach, thèid am pròiseact gu lèir a mhion-sgrùdadh, oir feumaidh an anailisiche faidhle eisimeileachd de fhaidhlichean stòr a’ phròiseict a ghineadh air na faidhlichean cinn. Tha seo na fheart ann a bhith a’ dèanamh anailis air faidhlichean C agus C ++. Anns an àm ri teachd, faodar am faidhle eisimeileachd a thasgadh agus thèid ùrachadh gu fèin-ghluasadach leis an anailisiche. Is e a ’bhuannachd a th’ ann a bhith a ’dèanamh sgrùdadh nuair a bhios tu a’ cleachdadh modh sgrùdaidh liosta faidhle thairis air a bhith a ’cleachdadh modh mion-sgrùdadh mean air mhean nach fheum thu ach am faidhle sin a thasgadh agus chan e na faidhlichean nì.

Prionnsabalan coitcheann mion-sgrùdadh iarrtas tarraing

Bheir mion-sgrùdadh air a’ phròiseact gu lèir tòrr ùine, agus mar sin tha e ciallach sùil a thoirt air dìreach pàirt shònraichte dheth. Is e an duilgheadas a th’ ann gum feum thu na faidhlichean ùra a sgaradh bhon chòrr de na faidhlichean pròiseict.

Bheir sinn sùil air eisimpleir de chraobh gealltanas le dà mheur:

Mion-sgrùdadh air geallaidhean agus iarrtasan tarraing ann an Travis CI, Buddy agus AppVeyor a’ cleachdadh PVS-Studio

Smaoinicheamaid air a’ ghealladh sin A1 tha àireamh meadhanach mòr de chòd ann a chaidh a dhearbhadh mu thràth. Beagan na bu tràithe rinn sinn meur bhon ghealladh A1 agus dh'atharraich cuid de na faidhlichean.

Mhothaich thu sin às deidh sin, gu dearbh A1 thachair dà ghealladh eile, ach bha iad sin cuideachd nan co-aonaidhean de mheuran eile, oir chan eil sinn a’ gealltainn mhaighstir. Agus a-nis tha an t-àm air tighinn nuair a hotfix ullamh. Sin as coireach gun do nochd iarrtas tarraing airson an aonachadh B3 и A3.

Gu dearbh, bhiodh e comasach sgrùdadh a dhèanamh air toradh iomlan an aonaidh aca, ach bhiodh seo ro fhada agus gun adhbhar, leis nach deach ach beagan fhaidhlichean atharrachadh. Mar sin, tha e nas èifeachdaiche mion-sgrùdadh a dhèanamh air an fheadhainn atharraichte a-mhàin.

Gus seo a dhèanamh, gheibh sinn an eadar-dhealachadh eadar na meuran, a bhith ann an CEANN a’ mheur às a bheil sinn airson a dhol còmhla ri maighstir:

git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list

$MERGE_BASE bheir sinn sùil mhionaideach air nas fhaide air adhart. Is e an fhìrinn nach eil a h-uile seirbheis CI a ’toirt seachad am fiosrachadh riatanach mun stòr-dàta airson aonachadh, agus mar sin feumaidh tu dòighean ùra a lorg gus an dàta seo fhaighinn gach uair. Thèid seo a mhìneachadh gu mionaideach gu h-ìosal anns gach aon de na seirbheisean lìn a tha air am mìneachadh.

Mar sin, fhuair sinn an diofar eadar na meuran, no an àite, liosta de dh'ainmean faidhle a chaidh atharrachadh. A-nis feumaidh sinn am faidhle a thoirt seachad .pvs-pr.list (threòraich sinn an toradh gu h-àrd thuige) chun an anailisiche:

pvs-studio-analyzer analyze -j8 
                            -o PVS-Studio.log 
                            -S .pvs-pr.list

Às deidh mion-sgrùdadh, feumaidh sinn am faidhle log (PVS-Studio.log) a thionndadh gu cruth a tha furasta a leughadh:

plog-converter -t errorfile PVS-Studio.log --cerr -w

Nì an àithne seo liosta de na mearachdan ann an stderr (toradh teachdaireachd mearachd àbhaisteach).

Is ann dìreach a-nis a dh’ fheumas sinn chan e a-mhàin mearachdan a thaisbeanadh, ach cuideachd innse don t-seirbheis againn airson co-chruinneachadh agus deuchainn mu làthaireachd dhuilgheadasan. Airson an adhbhair seo, chaidh bratach a chur ris an inneal-tionndaidh -W (- - cuir an cèill - rabhaidhean). Ma tha co-dhiù aon rabhadh analyzer, an utility còd tilleadh plog-tionndaidh atharrachadh gu 2, a bheir fios don t-seirbheis CI mu làthaireachd mhearachdan a dh’ fhaodadh a bhith ann anns na faidhlichean iarrtas tarraing.

Travis CI

Tha an rèiteachadh air a dhèanamh mar fhaidhle .travis.yml. Airson goireasachd, tha mi a’ toirt comhairle dhut a h-uile càil a chuir ann an sgriobt bash air leth le gnìomhan a thèid a ghairm bhon fhaidhle .travis.yml (bash script_name.sh function_name).

Cuiridh sinn an còd riatanach ris an sgriobt aig bash, san dòigh seo gheibh sinn barrachd comas-gnìomh. Ann an earrann stàlaich sgrìobhamaid na leanas:

install:
  - bash .travis.sh travis_install

Ma bha stiùireadh sam bith agad, faodaidh tu an gluasad a-steach don sgriobt, a’ toirt air falbh na ceanglaichean.

Nach fosgail sinn am faidhle .travis.sh agus cuir suidheachadh an anailisiche ris a’ ghnìomh 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 
}

A-nis leig dhuinn a chur ris an earrann sgriobt ruith mion-sgrùdadh:

script:
  - bash .travis.sh travis_script

Agus anns an sgriobt bash:

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
}

Feumaidh an còd seo a bhith air a ruith às deidh dhut am pròiseact a thogail, mar eisimpleir, nam biodh togail agad air CMake:

travis_script() {
  CMAKE_ARGS="-DCMAKE_EXPORT_COMPILE_COMMANDS=On ${CMAKE_ARGS}"
  cmake $CMAKE_ARGS CMakeLists.txt
  make -j8
}

Tionndaidhidh e a-mach mar seo:

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
}

Is dòcha gu bheil thu air mothachadh a dhèanamh air na caochladairean àrainneachd sin mu thràth $TRAVIS_PULL_REQUEST и $TRAVIS_BRANCH. Bidh Travis CI gan ainmeachadh gu neo-eisimeileach:

  • $TRAVIS_PULL_REQUEST a’ stòradh an àireamh iarrtas tarraing no ceàrr, ma tha seo na mheur cunbhalach;
  • $TRAVIS_REPO_SLUG a’ stòradh ainm stòr a’ phròiseict.

An algairim airson an gnìomh seo:

Mion-sgrùdadh air geallaidhean agus iarrtasan tarraing ann an Travis CI, Buddy agus AppVeyor a’ cleachdadh PVS-Studio
Bidh Travis CI a’ freagairt còdan tilleadh, agus mar sin bidh làthaireachd rabhaidhean ag innse don t-seirbheis an gealladh a chomharrachadh mar mhearachdan.

A-nis leig dhuinn sùil nas mionaidiche a thoirt air an loidhne chòd seo:

git diff --name-only origin/HEAD > .pvs-pr.list

Is e an fhìrinn gu bheil Travis CI gu fèin-ghluasadach a’ ceangal mheuran fhad ‘s a tha iad a’ dèanamh anailis air iarrtas tarraing:

Mion-sgrùdadh air geallaidhean agus iarrtasan tarraing ann an Travis CI, Buddy agus AppVeyor a’ cleachdadh PVS-Studio
Mar sin bidh sinn a’ dèanamh anailis A4ach chan eil B3->A3. Air sgàth feart seo, feumaidh sinn obrachadh a-mach an diofar le A3, a tha dìreach aig mullach a 'mheur bho tùs.

Tha aon mhion-fhiosrachadh cudromach air fhàgail - a’ tasgadh eisimeileachd nam faidhlichean cinn air aonadan eadar-theangachaidh cruinnichte (*.c, *.cc, *.cpp, msaa). Bidh an anailisiche a 'cunntadh nan eisimeileachd sin nuair a thèid a chuir air bhog an toiseach ann am modh sgrùdadh liosta de fhaidhlichean agus an uairsin gan sàbhaladh anns an eòlaire .PVS-Studio. Leigidh Travis CI leat pasganan a thasgadh, agus mar sin sàbhailidh sinn dàta an eòlaire .PVS-Studio/:

cache:
  directories:
    - .PVS-Studio/

Feumaidh an còd seo a chur ris an fhaidhle .travis.yml. Bidh an eòlaire seo a’ stòradh diofar dàta a chaidh a chruinneachadh às deidh mion-sgrùdadh, a luathaicheas gu mòr na ruith às deidh sin de sgrùdadh liosta faidhle no mion-sgrùdadh mean air mhean. Mura dèanar seo, nì an anailisiche mion-sgrùdadh air a h-uile faidhle a h-uile turas.

Buddy

Coltach ri Travis CI, Buddy a’ toirt comas air pròiseactan a tha air an stòradh air GitHub a thogail agus a dhearbhadh gu fèin-ghluasadach. Eu-coltach ri Travis CI, tha e air a rèiteachadh san eadar-aghaidh lìn (tha taic bash ri fhaighinn), agus mar sin chan eil feum air faidhlichean rèiteachaidh a stòradh sa phròiseact.

An toiseach, feumaidh sinn gnìomh ùr a chur ris an loidhne cruinneachaidh:

Mion-sgrùdadh air geallaidhean agus iarrtasan tarraing ann an Travis CI, Buddy agus AppVeyor a’ cleachdadh PVS-Studio
Innsidh sinn an neach-cruinneachaidh a chaidh a chleachdadh gus am pròiseact a thogail. Mothaich an soitheach docker a tha air a chuir a-steach sa ghnìomh seo. Mar eisimpleir, tha inneal sònraichte ann airson GCC:

Mion-sgrùdadh air geallaidhean agus iarrtasan tarraing ann an Travis CI, Buddy agus AppVeyor a’ cleachdadh PVS-Studio
A-nis leig leinn PVS-Studio a stàladh agus na goireasan riatanach:

Mion-sgrùdadh air geallaidhean agus iarrtasan tarraing ann an Travis CI, Buddy agus AppVeyor a’ cleachdadh PVS-Studio
Nach cuir sinn na loidhnichean a leanas ris an deasaiche:

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

A-nis rachamaid chun tab Run (a ’chiad ìomhaigh) agus cuir an còd a leanas ris an raon deasachaidh co-fhreagarrach:

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

Ma leugh thu an earrann air Travs-CI, tha an còd seo eòlach ort mu thràth, ge-tà, a-nis tha ìre ùr ann:

Mion-sgrùdadh air geallaidhean agus iarrtasan tarraing ann an Travis CI, Buddy agus AppVeyor a’ cleachdadh PVS-Studio
Is e an fhìrinn nach eil sinn a-nis a’ dèanamh sgrùdadh air toradh a’ cho-aonaidh, ach Ceannard a’ mheur às a bheil an t-iarrtas tarraing air a dhèanamh:

Mion-sgrùdadh air geallaidhean agus iarrtasan tarraing ann an Travis CI, Buddy agus AppVeyor a’ cleachdadh PVS-Studio
Mar sin tha sinn ann an gealladh cumhach B3 agus feumaidh sinn an diofar fhaighinn bhuaithe 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

Gus dearbhadh A3 Cleachdamaid an API GitHub:

https://api.github.com/repos/${USERNAME}/${REPO}/pulls/${PULL_REQUEST_ID}

Chleachd sinn na caochladairean a leanas a tha Buddy a’ toirt seachad:

  • $BUDDY_EXECUTION_PULL_REQEUST_NO - tarraing àireamh iarrtas;
  • $BUDDY_REPO_SLUG - measgachadh de ainm-cleachdaidh agus stòr (mar eisimpleir max/test).

A-nis sàbhail sinn na h-atharrachaidhean leis a’ phutan gu h-ìosal agus leig leinn mion-sgrùdadh a dhèanamh air an iarrtas tarraing:

Mion-sgrùdadh air geallaidhean agus iarrtasan tarraing ann an Travis CI, Buddy agus AppVeyor a’ cleachdadh PVS-Studio
Eu-coltach ri Travis CI, chan fheum sinn sònrachadh .pvs-stiùidio airson tasgadan, leis gu bheil Buddy gu fèin-ghluasadach a’ tasgadh a h-uile faidhle airson a chuir air bhog às deidh sin. Mar sin, is e an rud mu dheireadh a tha air fhàgail an logadh a-steach agus am facal-faire airson PVS-Studio ann am Buddy a shàbhaladh. Às deidh na h-atharrachaidhean a shàbhaladh, thèid ar toirt air ais gu Pipeline. Feumaidh sinn gluasad air adhart gu bhith a’ stèidheachadh caochladairean agus a’ cur logadh a-steach agus iuchair airson PVS-Studio:

Mion-sgrùdadh air geallaidhean agus iarrtasan tarraing ann an Travis CI, Buddy agus AppVeyor a’ cleachdadh PVS-Studio
Às deidh seo, brosnaichidh coltas iarrtas tarraing no gealltanas ùr an lèirmheas. Ma tha mearachdan ann an gealltanas, seallaidh Buddy seo air duilleag iarrtas tarraing.

AppVeyor

Tha stèidheachadh AppVeyor coltach ri Buddy, leis gu bheil a h-uile càil a’ tachairt san eadar-aghaidh lìn agus chan fheumar faidhle *.yml a chuir ri stòr a’ phròiseict.

Rachamaid gu taba nan Settings ann an sealladh farsaing a’ phròiseict:

Mion-sgrùdadh air geallaidhean agus iarrtasan tarraing ann an Travis CI, Buddy agus AppVeyor a’ cleachdadh PVS-Studio
Sgrolaich sinn sìos an duilleag seo agus leig leinn sàbhaladh tasgadan airson a bhith a’ cruinneachadh iarrtasan tarraing:

Mion-sgrùdadh air geallaidhean agus iarrtasan tarraing ann an Travis CI, Buddy agus AppVeyor a’ cleachdadh PVS-Studio
A-nis rachamaid gu tab na h-Àrainneachd, far am bi sinn a’ sònrachadh an ìomhaigh airson co-chruinneachadh agus na caochladairean àrainneachd riatanach:

Mion-sgrùdadh air geallaidhean agus iarrtasan tarraing ann an Travis CI, Buddy agus AppVeyor a’ cleachdadh PVS-Studio
Ma leugh thu na h-earrannan roimhe seo, tha thu gu math eòlach air an dà chaochladair seo - PVS_KEY и PVS_USERNAME. Mura h-eil, leig dhomh do chuimhneachadh gu bheil iad riatanach gus cead an anailisiche PVS-Studio a dhearbhadh. Chì sinn a-rithist iad ann an sgriobtaichean Bash san àm ri teachd.

Air an aon duilleag gu h-ìosal tha sinn a’ comharrachadh am pasgan airson caching:

Mion-sgrùdadh air geallaidhean agus iarrtasan tarraing ann an Travis CI, Buddy agus AppVeyor a’ cleachdadh PVS-Studio
Mura dèan sinn seo, nì sinn mion-sgrùdadh air a’ phròiseact gu lèir an àite faidhle no dhà, ach gheibh sinn an toradh bho na faidhlichean ainmichte. Mar sin, tha e cudromach an t-ainm eòlaire ceart a chuir a-steach.

A-nis tha an t-àm ann airson an sgriobt deuchainn a dhèanamh. Fosgail an taba Deuchainnean agus tagh Sgriobt:

Mion-sgrùdadh air geallaidhean agus iarrtasan tarraing ann an Travis CI, Buddy agus AppVeyor a’ cleachdadh PVS-Studio
Feumaidh tu an còd a leanas a chuir a-steach don fhoirm seo:

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

Bheir sinn aire don phàirt a leanas den chòd:

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

Tha coltas caran sònraichte air luach na h-àithne pwd gu caochladair a bu chòir an luach bunaiteach seo a stòradh neònach aig a’ chiad sealladh, ge-tà, mìnichidh mi a h-uile dad a-nis.

Fhad ‘s a bha mi a’ stèidheachadh an anailisiche ann an AppVeyor, thachair mi ri giùlan neònach an anailisiche. Air an aon làimh, dh'obraich a h-uile dad ceart, ach cha do thòisich an anailis. Chuir mi seachad tòrr ùine a’ mothachadh gu bheil sinn anns an / dachaigh / appveyor / projects / testcalc / directory, agus tha an anailisiche cinnteach gu bheil sinn ann an / opt / appveyor / build-agent/. An uairsin thuig mi gu robh an caochladair $ PWD na laighe beagan. Air an adhbhar seo, dh’ ùraich mi a luach le làimh mus tòisich mi air an anailis.

Agus an uairsin tha a h-uile dad mar a bha e roimhe:

Mion-sgrùdadh air geallaidhean agus iarrtasan tarraing ann an Travis CI, Buddy agus AppVeyor a’ cleachdadh PVS-Studio
A-nis beachdaich air a’ chriomag a leanas:

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"`

Ann an sin gheibh sinn an eadar-dhealachadh eadar na meuran air a bheil an t-iarrtas tarraing air ainmeachadh. Gus seo a dhèanamh feumaidh sinn na caochladairean àrainneachd a leanas:

  • $APPVEYOR_PULL_REQUEST_NUMBER — tarraing àireamh an iarrtais;
  • $APPVEYOR_REPO_NAME - ainm neach-cleachdaidh agus stòr-dàta a' phròiseict.

co-dhùnadh

Gu dearbh, cha do bheachdaich sinn air a h-uile seirbheis amalachaidh leantainneach a dh’ fhaodadh a bhith ann, ge-tà, tha mion-fhiosrachadh obrachaidh aca uile gu math coltach ri chèile. Ach a-mhàin caching, bidh gach seirbheis a’ dèanamh a “baidhsagal” fhèin, agus mar sin tha a h-uile dad an-còmhnaidh eadar-dhealaichte.

An àiteigin, mar ann an Travis-CI, bidh sreath no dhà de chòd agus tasgadh ag obair gun sgur; an àiteigin, mar ann an AppVeyor, cha leig thu leas ach am pasgan a shònrachadh anns na roghainnean; ach an àiteigin feumaidh tu iuchraichean sònraichte a chruthachadh agus feuchainn ri toirt a chreidsinn air an t-siostam cothrom a thoirt dhut ath-sgrìobhadh a dhèanamh air a’ chriomag taisgte. Mar sin, ma tha thu airson mion-sgrùdadh air iarrtasan tarraing a stèidheachadh air seirbheis amalachaidh leantainneach nach deach a dheasbad gu h-àrd, dèan cinnteach an-toiseach nach bi duilgheadasan agad le tasgadh.

Tapadh leibh airson an aire agad. Mura obraich rudeigin a-mach, na bi leisg sgrìobhadh thugainn aig taic. Bheir sinn comhairle agus cuideachadh.

Mion-sgrùdadh air geallaidhean agus iarrtasan tarraing ann an Travis CI, Buddy agus AppVeyor a’ cleachdadh PVS-Studio

Ma tha thu airson an artaigil seo a cho-roinn le luchd-èisteachd Beurla, cleachd an ceangal eadar-theangachaidh: Maxim Zvyagintsev. Mion-sgrùdadh air geallaidhean agus iarrtasan tarraing ann an Travis CI, Buddy agus AppVeyor a’ cleachdadh PVS-Studio.

Source: www.habr.com

Cuir beachd ann