Anailís ar ghealltanais agus iarratais tarraingthe in Travis CI, Buddy agus AppVeyor ag baint úsáide as PVS-Studio

Anailís ar ghealltanais agus iarratais tarraingthe in Travis CI, Buddy agus AppVeyor ag baint úsáide as PVS-Studio
Sa anailíseoir PVS-Studio do theangacha C agus C ++ ar Linux agus macOS, ag tosú ó leagan 7.04, tá an chuma ar rogha tástála chun liosta na gcomhad sonraithe a sheiceáil. Ag baint úsáide as an modh nua, is féidir leat an anailíseoir a chumrú chun gealltanais a sheiceáil agus iarratais a tharraingt. Inseoidh an t-alt seo duit conas liosta na gcomhad athraithe de thionscadal GitHub a sheiceáil i gcórais CI (Comhtháthú Leanúnach) a bhfuil tóir orthu mar Travis CI, Buddy agus AppVeyor.

Modh seiceála liosta comhad

Stiúideo PVS Is uirlis é chun earráidí agus leochaileachtaí féideartha a aithint i gcód foinse na gclár atá scríofa in C, C++, C# agus Java. Oibríonn sé ar chórais 64-giotán ar Windows, Linux agus macOS.

Sa leagan PVS-Studio 7.04 le haghaidh Linux agus macOS, tháinig modh chun liosta na gcomhad foinse a sheiceáil. Oibríonn sé seo do thionscadail a ligeann a gcóras tógála duit comhad a ghiniúint tiomsaigh_orduithe.json. Ní mór don anailísí faisnéis a bhaint as tiomsú na gcomhad sonraithe. Mura dtacaíonn do chóras tógála leis an gcomhad compile_commands.json a ghiniúint, is féidir leat triail a bhaint as comhad dá leithéid leis an bhfóntas Bear.

Chomh maith leis sin, is féidir an modh seiceála liosta comhad a úsáid in éineacht leis an loga rian strace de sheoltaí tiomsaitheora (rian pvs-studio-analyzer). Chun seo a dhéanamh, beidh ort tógáil iomlán an tionscadail a dhéanamh ar dtús agus é a rianú ionas go mbaileoidh an anailísí faisnéis iomlán faoi pharaiméadair tiomsaithe na gcomhad go léir atá á sheiceáil.

Mar sin féin, tá míbhuntáiste suntasach ag baint leis an rogha seo - beidh ort rian iomlán tógála den tionscadal iomlán a dhéanamh gach uair a ritheann tú é, rud a thagann salach ar a chéile leis an smaoineamh gealltanas a sheiceáil go tapa. Nó, má dhéanann tú an rian-toradh féin a thaisceadh, d’fhéadfadh go mbeadh rith an anailíseora ina dhiaidh sin neamhiomlán má athraíonn struchtúr spleáchais na gcomhad foinse tar éis an rian (mar shampla, cuirtear #include nua le ceann de na comhaid foinse).

Mar sin, ní mholaimid úsáid a bhaint as an modh seiceála liosta comhad leis an loga rian chun gealltanais a sheiceáil nó iarratais a tharraingt. I gcás gur féidir leat tógáil incriminteach a dhéanamh agus tú ag seiceáil gealltanas, smaoinigh ar an modh a úsáid anailís incriminteach.

Déantar liosta na gcomhad foinse le haghaidh anailíse a shábháil i gcomhad téacs agus a chur ar aghaidh chuig an anailísí ag baint úsáide as an bparaiméadar -S:

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

Sonraíonn an comhad seo cosáin choibhneasta nó absalóideacha chuig comhaid, agus caithfidh gach comhad nua a bheith ar líne nua. Tá sé inghlactha ní hamháin ainmneacha comhaid a shonrú le haghaidh anailíse, ach freisin téacsanna éagsúla. Feicfidh an anailíseoir nach comhad é seo agus déanfaidh sé neamhaird den líne. D’fhéadfadh sé seo a bheith úsáideach le trácht a dhéanamh má shonraítear comhaid de láimh. Mar sin féin, is minic a ghinfear liosta comhad le linn anailíse in CI, mar shampla, d’fhéadfadh gur comhaid ó iarratas gealltóireachta nó tarraingthe a bheadh ​​i gceist.

Anois, ag baint úsáide as an modh seo, is féidir leat cód nua a sheiceáil go tapa sula dtéann sé isteach sa phríomhbhrainse forbartha. Chun a chinntiú go bhfreagraíonn an córas scanadh rabhaidh anailísí, an fóntais ploc-tiontaire bratach curtha leis --léirigh-rabhaidh:

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

Leis an mbratach seo, tabharfaidh an tiontaire cód neamh-nialais ar ais má tá rabhaidh i dtuarascáil an anailísí. Ag baint úsáide as an gcód tuairisceáin, is féidir leat bac a chur ar Hook réamhgheallta, gealltanas nó tarraingt a iarraidh, agus is féidir an tuarascáil anailíseora ginte a thaispeáint, a roinnt nó a sheoladh trí ríomhphost.

Nóta. Nuair a thosaíonn tú ag déanamh anailís ar liosta comhad ar dtús, déanfar anailís ar an tionscadal ar fad, mar gheall ar ní mór don anailíseoir comhad spleáchais de chomhaid foinse an tionscadail a ghiniúint ar na comhaid ceanntásc. Is gné é seo chun comhaid C agus C++ a anailísiú. Sa todhchaí, is féidir an comhad spleáchais a thaisceadh agus déanfaidh an anailísí é a nuashonrú go huathoibríoch. Is é an buntáiste a bhaineann le seiceáil a dhéanamh agus tú ag úsáid modh seiceála liosta comhad thar mhodh anailíse incrimintigh a úsáid ná nach gá duit ach an comhad sin a thaisceadh agus ní na comhaid oibiachta.

Prionsabail ghinearálta anailíse iarratais tarraingthe

Tógann sé go leor ama chun an tionscadal iomlán a anailísiú, mar sin ní dhéanann sé ciall ach cuid áirithe de a sheiceáil. Is í an fhadhb atá ann ná go gcaithfidh tú na comhaid nua a scaradh ón gcuid eile de chomhaid an tionscadail.

Breathnaímid ar shampla de chrann tiomsaithe le dhá bhrainse:

Anailís ar ghealltanais agus iarratais tarraingthe in Travis CI, Buddy agus AppVeyor ag baint úsáide as PVS-Studio

Samhlóimis an tiomantas sin A1 ina bhfuil méid measartha mór de chód a tástáladh cheana féin. Beagán níos luaithe rinneamar brainse ón tiomantas A1 agus d'athraigh sé roinnt comhad.

Thug tú faoi deara, ar ndóigh, gur tar éis A1 tharla dhá ghealltanas eile, ach ba chumaisc iad seo freisin le craobhacha eile, toisc nach bhfuilimid tiomanta dóibh máistir. Agus anois tá an t-am tagtha nuair a hotfix réidh. Sin an fáth gur tháinig iarratas tarraingthe ar an gcumasc B3 и A3.

Ar ndóigh, bheifí in ann toradh iomlán a gcumasc a sheiceáil, ach bheadh ​​sé seo ró-thógálach agus gan údar maith, mar níor athraíodh ach cúpla comhad. Mar sin, tá sé níos éifeachtaí anailís a dhéanamh ar na cinn athraithe amháin.

Chun seo a dhéanamh, a fháil againn ar an difríocht idir na brainsí, a bheith i CEANN an brainse as a ba mhaith linn a chumasadh i máistir:

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

$MERGE_BASE déanfaimid breathnú air go mion níos déanaí. Is é fírinne an scéil nach soláthraíonn gach seirbhís CI an fhaisnéis riachtanach faoin mbunachar sonraí le haghaidh cumasc, mar sin caithfidh tú teacht ar bhealaí nua chun na sonraí seo a fháil gach uair. Déanfar cur síos mionsonraithe air seo thíos i ngach ceann de na seirbhísí gréasáin a gcuirtear síos orthu.

Mar sin, fuair muid an difríocht idir na brainsí, nó in áit, liosta d'ainmneacha comhaid a athraíodh. Anois ní mór dúinn an comhad a thabhairt .pvs-pr.list (athsheolamar an t-aschur thuas chuige) chuig an anailísí:

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

Tar éis anailís a dhéanamh, ní mór dúinn an logchomhad (PVS-Studio.log) a thiontú go formáid atá éasca le léamh:

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

Liostóidh an t-ordú seo na hearráidí i stderr (aschur caighdeánach teachtaireachta earráide).

Ní mór dúinn anois ní hamháin earráidí a thaispeáint, ach freisin ár seirbhís a chur ar an eolas le haghaidh tionóil agus tástála faoi láithreacht fadhbanna. Chun na críche sin, cuireadh bratach leis an tiontaire -W (--léirigh-rabhaidh). Má tá rabhadh anailíseora amháin ar a laghad, an cód ar ais fóntais ploc-tiontaire athrófar go 2, rud a chuirfidh an tseirbhís CI ar an eolas faoi láithreacht earráidí féideartha sna comhaid iarratais ar tharraingt.

Travis C.I.

Déantar an chumraíocht mar chomhad .travis.yml. Ar mhaithe le caoithiúlacht, molaim duit gach rud a chur isteach i script bash ar leith le feidhmeanna a ghlaofar ón gcomhad .travis.yml (bash script_name.sh function_name).

Cuirfimid an cód riachtanach leis an script ag Eabhrac, ar an mbealach seo gheobhaidh muid feidhmiúlacht níos mó. In alt shuiteáil scríobhaimis an méid seo a leanas:

install:
  - bash .travis.sh travis_install

Má bhí aon treoracha agat, is féidir leat iad a aistriú isteach sa script, ag baint na gcnámhíní.

A ligean ar oscailt an comhad .travis.sh agus cuir socrú an anailíseora leis an bhfeidhm 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 
}

Anois cuirimis leis an alt script anailís a reáchtáil:

script:
  - bash .travis.sh travis_script

Agus sa script 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
}

Ní mór an cód seo a rith tar éis an tionscadal a thógáil, mar shampla, má bhí tógáil agat ar CMake:

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

Casfaidh sé amach 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 gur thug tú na hathróga timpeallachta seo faoi deara cheana féin $TRAVIS_PULL_REQUEST и $TRAVIS_BRANCH. Dearbhaíonn Travis CI go neamhspleách iad:

  • $TRAVIS_PULL_REQUEST stórálann an uimhir iarratais tarraingt nó bréagach, más brainse rialta é seo;
  • $TRAVIS_REPO_SLUG stóráiltear ainm stór an tionscadail.

An algartam don fheidhm seo:

Anailís ar ghealltanais agus iarratais tarraingthe in Travis CI, Buddy agus AppVeyor ag baint úsáide as PVS-Studio
Freagraíonn Travis CI do chóid aischuir, mar sin de bharr láithreacht rabhaidh inseoidh an tseirbhís don tseirbhís an gealltanas a mharcáil mar a bhfuil earráidí ann.

Anois breathnaímis ar an líne chóid seo:

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

Is é fírinne an scéil go ndéanann Travis CI brainsí a chumasc go huathoibríoch agus anailís á déanamh ar iarratas tarraingt:

Anailís ar ghealltanais agus iarratais tarraingthe in Travis CI, Buddy agus AppVeyor ag baint úsáide as PVS-Studio
Dá bhrí sin déanaimid anailís A4Agus ní B3->A3. Mar gheall ar an ngné seo, ní mór dúinn an difríocht a ríomh le A3, atá go beacht barr an brainse ó tionscnaimh.

Tá sonraí tábhachtacha amháin fágtha - spleáchas na gcomhad ceanntásca ar aonaid aistriúcháin tiomsaithe a thaisceadh (*.c, *.cc, *.cpp, etc.). Ríomhann an anailísí na spleáchais seo nuair a sheoltar é ar dtús sa mhodh chun liosta comhaid a sheiceáil agus ansin iad a shábháil san eolaire .PVS-Studio. Ceadaíonn Travis CI duit fillteáin a thaisceadh, mar sin sábhálfaimid na sonraí eolaire .PVS- Stiúideo/:

cache:
  directories:
    - .PVS-Studio/

Ní mór an cód seo a chur leis an gcomhad .travis.yml. Stórálann an t-eolaire sonraí éagsúla a bhailítear tar éis anailíse, rud a chuirfidh go mór le rith na hanailíse ar liostaí comhad nó anailís incriminteach ina dhiaidh sin. Mura ndéantar é seo, déanfaidh an anailíseoir anailís iarbhír ar na comhaid go léir gach uair.

Buddy

Cosúil le Travis CI, Buddy soláthraíonn sé an cumas tionscadail a stóráiltear ar GitHub a thógáil agus a thástáil go huathoibríoch. Murab ionann agus Travis CI, tá sé cumraithe sa chomhéadan gréasáin (tá tacaíocht bash ar fáil), agus mar sin ní gá comhaid cumraíochta a stóráil sa tionscadal.

Ar an gcéad dul síos, ní mór dúinn gníomh nua a chur leis an líne tionóil:

Anailís ar ghealltanais agus iarratais tarraingthe in Travis CI, Buddy agus AppVeyor ag baint úsáide as PVS-Studio
Cuirimis in iúl an tiomsaitheoir a úsáideadh chun an tionscadal a thógáil. Tabhair faoi deara an coimeádán docker atá suiteáilte sa ghníomh seo. Mar shampla, tá coimeádán speisialta ann do GCC:

Anailís ar ghealltanais agus iarratais tarraingthe in Travis CI, Buddy agus AppVeyor ag baint úsáide as PVS-Studio
Anois, déanaimis PVS-Studio a shuiteáil agus na fóntais riachtanacha:

Anailís ar ghealltanais agus iarratais tarraingthe in Travis CI, Buddy agus AppVeyor ag baint úsáide as PVS-Studio
Cuirimis na línte seo a leanas leis an eagarthóir:

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

Anois, déanaimis dul go dtí an cluaisín Rith (an chéad íocón) agus cuir an cód seo a leanas leis an réimse eagarthóireachta comhfhreagrach:

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

Má léann tú an chuid ar Travs-CI, tá an cód seo ar an eolas agat cheana féin, áfach, tá céim nua ann anois:

Anailís ar ghealltanais agus iarratais tarraingthe in Travis CI, Buddy agus AppVeyor ag baint úsáide as PVS-Studio
Is é fírinne an scéil nach ndéanaimid anailís anois ar thoradh an chumaisc, ach ar CEANN an bhrainse óna ndéantar an t-iarratas ar tharraingt:

Anailís ar ghealltanais agus iarratais tarraingthe in Travis CI, Buddy agus AppVeyor ag baint úsáide as PVS-Studio
Mar sin táimid i ngealltanas coinníollach B3 agus caithfimid an difríocht a fháil ó 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

A chinneadh A3 Úsáidfimid an API GitHub:

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

D’úsáideamar na hathróga seo a leanas a sholáthraíonn Buddy:

  • $BUDDY_EXECUTION_PULL_REQEUST_NO — uimhir iarratais a tharraingt;
  • $BUDDY_REPO_SLUG — meascán d'ainm úsáideora agus stór (mar shampla uas/tástáil).

Anois sábhálfaimid na hathruithe ag baint úsáide as an gcnaipe thíos agus cumasóimid anailís ar an iarratas tarraingt:

Anailís ar ghealltanais agus iarratais tarraingthe in Travis CI, Buddy agus AppVeyor ag baint úsáide as PVS-Studio
Murab ionann agus Travis CI, ní gá dúinn a shonrú .pvs-stiúideo le haghaidh taisceadh, ós rud é go ndéanann Buddy gach comhad a thaisceadh go huathoibríoch le haghaidh seoltaí ina dhiaidh sin. Mar sin, is é an rud deireanach atá fágtha ná an logáil isteach agus an focal faire a shábháil le haghaidh PVS-Studio in Buddy. Tar éis na hathruithe a shábháil, tógfar muid ar ais go Píblíne. Ní mór dúinn bogadh ar aghaidh chuig athróga a shocrú agus logáil isteach agus eochair a chur leis do PVS-Studio:

Anailís ar ghealltanais agus iarratais tarraingthe in Travis CI, Buddy agus AppVeyor ag baint úsáide as PVS-Studio
Ina dhiaidh sin, cuirfear tús leis an athbhreithniú mar gheall ar iarratas tarraingte nua nó gealltanas. Má tá earráidí i ngealltanas, cuirfidh Buddy é seo in iúl ar an leathanach iarratais tarraingthe.

AppVeyor

Tá socrú AppVeyor cosúil le Buddy, toisc go dtarlaíonn gach rud sa chomhéadan gréasáin agus ní gá comhad *.yml a chur le stór an tionscadail.

Rachaimid chuig an táb Socruithe san fhorbhreathnú ar an tionscadal:

Anailís ar ghealltanais agus iarratais tarraingthe in Travis CI, Buddy agus AppVeyor ag baint úsáide as PVS-Studio
Déanaimis scrollú síos an leathanach seo agus cumasaigh muid taisce a shábháil chun iarratais tarraingthe a bhailiú:

Anailís ar ghealltanais agus iarratais tarraingthe in Travis CI, Buddy agus AppVeyor ag baint úsáide as PVS-Studio
Anois rachaimid go dtí an cluaisín Comhshaoil, áit a shonróimid an íomhá le haghaidh tionóil agus na hathróga timpeallachta is gá:

Anailís ar ghealltanais agus iarratais tarraingthe in Travis CI, Buddy agus AppVeyor ag baint úsáide as PVS-Studio
Má tá na hailt roimhe seo léite agat, tá tú an-eolach ar an dá athróg seo − PVS_KEY и PVS_USERNAME. Mura bhfuil, lig dom i gcuimhne duit go bhfuil siad riachtanach chun ceadúnas an anailísí PVS-Studio a fhíorú. Feicfimid arís iad i scripteanna Bash amach anseo.

Ar an leathanach céanna thíos cuirimid an fillteán le haghaidh taisce in iúl:

Anailís ar ghealltanais agus iarratais tarraingthe in Travis CI, Buddy agus AppVeyor ag baint úsáide as PVS-Studio
Mura ndéanfaimid é seo, déanfaimid anailís ar an tionscadal iomlán in ionad cúpla comhad, ach gheobhaidh muid an t-aschur ó na comhaid sonraithe. Mar sin, tá sé tábhachtach an t-ainm eolaire ceart a chur isteach.

Anois tá sé in am don script a thástáil. Oscail cluaisín na dTrialacha agus roghnaigh Script:

Anailís ar ghealltanais agus iarratais tarraingthe in Travis CI, Buddy agus AppVeyor ag baint úsáide as PVS-Studio
Ní mór duit an cód seo a leanas a ghreamú isteach san 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

Tugaimis aird ar an gcuid seo 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

Is cosúil go bhfuil sannadh sách sonrach luach an ordaithe pwd d'athróg ba chóir an luach réamhshocraithe seo a stóráil aisteach ar an gcéad amharc, áfach, míneoidh mé gach rud anois.

Agus an anailíseoir á bhunú in AppVeyor, tháinig mé ar iompar an-aisteach an anailíseora. Ar thaobh amháin, d'oibrigh gach rud i gceart, ach níor thosaigh an anailís. Chaith mé go leor ama ag tabhairt faoi deara go bhfuil muid san eolaire / home / appveyor / projects / testcalc / , agus tá an anailísí cinnte go bhfuil muid i /opt/appveyor/build-agent/. Ansin thuig mé go raibh an athróg $ PWD suite beagán. Ar an gcúis seo, nuashonraigh mé a luach de láimh sular thosaigh mé ar an anailís.

Agus ansin tá gach rud mar a bhí roimhe:

Anailís ar ghealltanais agus iarratais tarraingthe in Travis CI, Buddy agus AppVeyor ag baint úsáide as PVS-Studio
Anois smaoinigh ar an blúire seo 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"`

Faighimid ann an difríocht idir na brainsí thar a ndearbhaítear an t-iarratas tarraingt. Chun é seo a dhéanamh ní mór dúinn na hathróga timpeallachta seo a leanas:

  • $APPVEYOR_PULL_REQUEST_NUMBER — tarraing uimhir an iarratais;
  • $APPVEYOR_REPO_NAME - ainm úsáideora agus stór tionscadail.

Conclúid

Ar ndóigh, níor mheasamar na seirbhísí lánpháirtithe leanúnaí féideartha go léir, áfach, tá sonraí oibríochta an-chosúil acu go léir lena chéile. Seachas taisceadh, déanann gach seirbhís a “rothar” féin, agus mar sin bíonn gach rud difriúil i gcónaí.

Áit éigin, cosúil le Travis-CI, oibríonn cúpla líne de chód agus caching flawlessly; áit éigin, cosúil le AppVeyor, ní mór duit ach an fillteán a shonrú sna socruithe; ach áit éigin is gá duit a chruthú eochracha uathúla agus iarracht a chur ina luí ar an gcóras a thabhairt duit an deis a scríobh ar an blúire i dtaisce. Dá bhrí sin, más mian leat anailís a dhéanamh ar iarratais tarraingt ar sheirbhís comhtháthú leanúnach nár pléadh thuas, ansin déan cinnte ar dtús nach mbeidh fadhbanna agat le caching.

Go raibh maith agat as do aird. Mura n-oibríonn rud éigin amach, ná bíodh drogall ort scríobh chugainn ag tacaíocht. Tabharfaimid comhairle agus cúnamh.

Anailís ar ghealltanais agus iarratais tarraingthe in Travis CI, Buddy agus AppVeyor ag baint úsáide as PVS-Studio

Más mian leat an t-alt seo a roinnt le lucht féachana Béarla, bain úsáid as an nasc aistriúcháin: Maxim Zvyagintsev. Anailís ar ghealltanais agus iarratais tarraingthe in Travis CI, Buddy agus AppVeyor ag baint úsáide as PVS-Studio.

Foinse: will.com

Add a comment