Iloiloga o tautinoga ma toso talosaga i Travis CI, Buddy ma AppVeyor faʻaaoga PVS-Studio

Iloiloga o tautinoga ma toso talosaga i Travis CI, Buddy ma AppVeyor faʻaaoga PVS-Studio
I le suʻega PVS-Studio mo C ma C ++ gagana i luga o Linux ma macOS, amata mai le version 7.04, ua faʻaalia se filifiliga suʻega e siaki le lisi o faila faʻamaonia. I le faʻaaogaina o le faiga fou, e mafai ona e faʻapipiʻi le suʻesuʻega e siaki ai faʻatonuga ma toso talosaga. O lenei tusiga o le a taʻuina atu ia te oe le faʻatulagaina o le siakiina o le lisi o faila ua suia o se poloketi GitHub i se taʻutaʻua CI (Continuous Integration) faiga e pei o Travis CI, Buddy ma AppVeyor.

Faiga siaki lisi faila

PVS-potu potu o se meafaigaluega mo le faʻailoaina o mea sese ma faʻafitauli faʻaletonu i le faʻailoga autu o polokalame o loʻo tusia i le C, C ++, C # ma Java. E galue i faiga 64-bit i Windows, Linux ma macOS.

I le version PVS-Studio 7.04 mo Linux ma macOS, ua faʻaalia se faiga mo le siakiina o le lisi o faila faila. E aoga lenei mea mo galuega faatino o latou faiga faufale e mafai ai ona e gaosia se faila compile_commands.json. E manaʻomia mo le tagata suʻesuʻe e suʻe faʻamatalaga e uiga i le tuʻufaʻatasia o faila faʻamaonia. Afai e le lagolagoina e lau faufale le fausiaina o le compile_commands.json faila, e mafai ona e taumafai e fai sea faila e faʻaaoga ai le aoga. Ia tuuina atu lau.

E le gata i lea, e mafai ona fa'aoga le faiga e siaki ai le lisi o faila fa'atasi ma le strace log log of compiler fa'alauiloa (pvs-studio-analyzer trace). Ina ia faia lenei mea, e tatau ona e faia muamua se fausaga atoa o le poloketi ma siaki ina ia aoina e le tagata suʻesuʻe faʻamatalaga atoatoa e uiga i le tuʻufaʻatasiga o faila uma o loʻo siakiina.

Ae ui i lea, o lenei filifiliga o loʻo i ai se faʻafitauli taua - e te manaʻomia le faia o se faʻataʻitaʻiga atoa o le galuega atoa i taimi uma e te faʻatinoina ai, lea e feteenai ma le manatu o le siakiina vave o se tautinoga. Po'o, afai e te natia le fa'ai'uga lava ia, o le fa'asologa mulimuli a le su'esu'e atonu e le atoatoa pe a suia le fa'alagolago i le fa'avae o faila fa'apogai pe a mae'a le su'ega (mo se fa'ata'ita'iga, e fa'aopoopo se #include fou i se tasi o faila fa'apogai).

O le mea lea, matou te le fautuaina le faʻaogaina o le faʻaogaina o le lisi o faila faʻatasi ma le faʻamaufaʻailoga e siaki ai faʻatonuga pe toso talosaga. I le tulaga e mafai ona e faia se faʻaopoopoga faʻaopoopo pe a siaki se tautinoga, mafaufau e faʻaaoga le faiga su'esu'ega fa'aopoopo.

O le lisi o faila faila mo suʻesuʻega o loʻo faʻasaoina i se faila faila ma pasi atu i le suʻega e faʻaaoga ai le parakalafa -S:

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

O le faila lea e fa'amaoti ai auala fa'atatau i faila, ma o faila fou ta'itasi e tatau ona i ai i se laina fou. E talia le faʻamaonia e le gata o igoa faila mo suʻesuʻega, ae faʻapea foʻi ma tusitusiga eseese. O le a iloa e le tagata suʻesuʻe e le o se faila ma o le a le amanaiaina le laina. E mafai ona aoga lenei mea mo faʻamatalaga pe a faʻamaonia faila ma le lima. Ae ui i lea, e masani lava o se lisi o faila o le a faia i le taimi o suʻesuʻega i le CI, mo se faʻataʻitaʻiga, o nei mea e mafai ona avea ma faila mai se tautinoga poʻo se toso talosaga.

I le taimi nei, i le faʻaaogaina o lenei faiga, e mafai ona e siaki vave le code fou aʻo leʻi oʻo i totonu o le lala atinaʻe autu. Ina ia mautinoa e tali atu le faiga o suʻesuʻega i lapataiga a le au suʻesuʻe, o le aoga fa'alili-liliu faaopoopo le fu'a --faailoa-lapataiga:

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

Faatasi ai ma lenei fuʻa, o le a toe faʻafoʻi e le tagata liliu mai se code e le-zero pe afai o loʻo i ai lapataiga i le lipoti o le suʻega. I le faʻaaogaina o le code toe foʻi, e mafai ona e poloka se matau muamua, fai, poʻo le tosoina o le talosaga, ma e mafai ona faʻaalia, fefaʻasoaaʻi, pe lafoina le lipoti o suʻesuʻega faʻavae.

Manatua. A e amata amata suʻesuʻeina se lisi o faila, o le a suʻesuʻeina atoa le poloketi, aua e mana'omia e le tagata su'esu'e le fa'atupuina o se faila fa'alagolago i faila fa'apogai i luga o faila ulutala. Ole vaega lea ole su'esu'eina o faila C ma C++. I le lumanaʻi, e mafai ona faʻapipiʻi le faila faʻalagolago ma o le a faʻafouina e le tagata suʻesuʻe. O le lelei o le siakiina e faia pe a faʻaogaina le lisi o faila siaki le faʻaogaina o le faʻaogaina o faʻataʻitaʻiga faʻataʻitaʻiga o le naʻo lou manaʻomia e teu le faila ae le o faila faila.

Ta'iala lautele ole su'esu'eina ole toso ole talosaga

O le su'esu'eina o le galuega atoa e tele se taimi e alu ai, o lea e talafeagai ai le siaki na'o se vaega patino. O le fa'afitauli e tatau ona e vavae'ese faila fou mai isi faila o galuega.

Seʻi o tatou vaʻai i se faʻataʻitaʻiga o se laʻau faʻapipiʻi e lua lala:

Iloiloga o tautinoga ma toso talosaga i Travis CI, Buddy ma AppVeyor faʻaaoga PVS-Studio

Se'i vaai faalemafaufau i lena tautinoga A1 o loʻo i ai se aofaʻi tele o code ua uma ona faʻataʻitaʻiina. I se taimi muamua atu na matou faia ai se lala mai le tautinoga A1 ma suia nisi faila.

Ioe, na e matauina lena mea ina ua uma A1 e lua isi tautinoga na tupu, ae o nei foi tuʻufaʻatasiga o isi lala, aua matou te le tuuto aliʻi. Ma o lea ua oo mai le taimi hotfix sauni. O le mafuaaga lena na aliali mai ai se talosaga toso mo le tuufaatasia B3 и A3.

Ioe, o le a mafai ona siaki le taunuuga atoa o la latou faʻatasi, ae o le a tele le taimi e alu ai ma le faʻamaonia, talu ai na o ni nai faila na suia. O le mea lea, e sili atu ona lelei le suʻesuʻeina naʻo mea ua suia.

Ina ia faia lenei mea, matou te maua le eseesega i le va o lala, o loʻo i totonu o le HEAD o le lala matou te manaʻo e tuʻufaʻatasia i le matai:

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

$MERGE_BASE o le a tatou tilotilo i ai i se auiliiliga mulimuli ane. O le mea moni e le o auaunaga uma a le CI e tuʻuina atu faʻamatalaga talafeagai e uiga i faʻamaumauga mo le tuʻufaʻatasia, o taimi uma e tatau ai ona e sau i ni auala fou e maua ai nei faʻamatalaga. O le a fa'amatala au'ili'ili i lalo i 'au'aunaga i luga ole laiga ta'itasi.

O lea la, matou te maua le eseesega i le va o lala, pe sili atu, o se lisi o igoa faila na suia. Ole taimi nei e tatau ona tatou tuʻuina atu le faila .pvs-pr.list (na matou toe faʻafeiloaʻi le gaioiga o loʻo i luga i ai) i le suʻega:

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

A maeʻa suʻesuʻega, matou te manaʻomia le faʻaliliuina o le faila ogalaau (PVS-Studio.log) i se faʻasologa faigofie-e-faitau:

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

O lenei poloaiga o le a lisi ai mea sese i totonu stderr (tulaga fa'ailoga fa'aletonu masani).

Naʻo le taimi nei tatou te manaʻomia e le gata ina faʻaalia mea sese, ae faʻaalia foi la tatou auaunaga mo le faʻapotopotoga ma suʻega e uiga i le i ai o faʻafitauli. Mo lenei faʻamoemoe, sa faʻaopoopoina se fuʻa i le liliu -W (--faailoa-lapataiga). Afai ei ai a itiiti ifo ma le tasi le analyer lapataiga, le aoga toe faafoi code fa'alili-liliu o le a suia i le 2, lea o le a logoina ai le auaunaga CI e uiga i le i ai o mea sese i totonu o faila talosaga toso.

Travis C.I.

O le faʻatulagaga ua faia o se faila .travis.yml. Mo le faʻaogagofie, ou te fautua atu ia te oe e tuʻu mea uma i totonu o se isi faʻamaumauga bash ma galuega o le a valaʻau mai le faila .travis.yml (bash script_name.sh function_name).

O le a matou faʻaopoopoina le code talafeagai i le tusitusiga i bash, o le auala lea o le a tatou maua ai le tele o galuega. I le vaega faʻapipiʻi sei o tatou tusia mea nei:

install:
  - bash .travis.sh travis_install

Afai ei ai ni au faʻatonuga, e mafai ona e faʻafeiloaʻi i totonu o le tusitusiga, aveese faʻaoga.

Tatou tatala le faila .travis.sh ma fa'aopoopo le seti su'esu'e i le galuega 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 
}

Sei o tatou faaopoopo atu i le vaega tusilima su'esu'ega ta'avale:

script:
  - bash .travis.sh travis_script

Ma i le bash 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
}

O lenei tulafono e manaʻomia ona faʻataʻitaʻiina pe a uma ona fausia le poloketi, mo se faʻataʻitaʻiga, pe afai na e fausia ile CMake:

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

O le a foliga mai e pei o lenei:

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
}

Masalo ua uma ona e matauina nei fesuiaiga o le siosiomaga $TRAVIS_PULL_REQUEST и $TRAVIS_BRANCH. Travis CI taʻutino atu latou tutoatasi:

  • $TRAVIS_PULL_REQUEST teu le numera talosaga toso pe sese, pe afai o se lala masani lenei;
  • $TRAVIS_REPO_SLUG teuina le igoa o le fale teu oloa.

Le algorithm mo lenei galuega:

Iloiloga o tautinoga ma toso talosaga i Travis CI, Buddy ma AppVeyor faʻaaoga PVS-Studio
E tali atu Travis CI i le toe faafoi o tulafono laiti, o lea o le i ai o lapataiga o le a taʻu atu ai i le auʻaunaga e faʻailoga le tautinoga e iai mea sese.

Sei o tatou vaʻavaʻai totoʻa i le laina lenei o code:

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

O le mea moni e faapea o Travis CI e otometi ona tuʻufaʻatasia lala aʻo suʻesuʻeina se talosaga toso:

Iloiloga o tautinoga ma toso talosaga i Travis CI, Buddy ma AppVeyor faʻaaoga PVS-Studio
O lea matou te iloiloina A4ae leai B3->A3. Ona o lenei vaega, e tatau ona tatou fuafuaina le eseesega ma A3, o le pito tonu lava lea o le lala mai amataga.

E tasi le fa'amatalaga taua o lo'o totoe - fa'asaoina le fa'alagolago o faila fa'aulu i luga o iunite fa'aliliu tu'ufa'atasi (*.c, *.cc, *.cpp, etc.). E fa'atatau e le tagata su'esu'e nei fa'alagolago pe a fa'alauiloa muamua i le faiga o le siakiina o se lisi o faila ona fa'asaoina lea i le .PVS-Studio directory. O le Travis CI e fa'atagaina oe e teu faila, o lea o le a matou fa'asaoina ai fa'amaumauga fa'amaumauga .PVS-Studio/:

cache:
  directories:
    - .PVS-Studio/

O lenei code e manaʻomia ona faʻaopoopo i le faila .travis.yml. O lenei fa'amaumauga e teu ai fa'amaumauga eseese e aoina pe a mae'a su'esu'ega, lea o le a matua fa'avavevave ai fa'asologa mulimuli ane o su'esu'ega lisi o faila po'o su'esu'ega fa'aopoopo. Afai e le faia lenei mea, ona suʻesuʻeina lea e le tagata suʻesuʻe faila uma i taimi uma.

Buddy

E pei o Travis CI, Buddy e maua ai le tomai e otometi ona fausia ma su'e galuega faatino o lo'o teuina ile GitHub. E le pei o Travis CI, o loʻo faʻapipiʻiina i luga o le upega tafaʻilagi (o loʻo maua le lagolago o le bash), o lea e le manaʻomia ai le teuina o faila faʻapipiʻi i le poloketi.

Muamua lava, tatou te manaʻomia le faʻaopoopoina o se gaioiga fou i le laina faʻapotopotoga:

Iloiloga o tautinoga ma toso talosaga i Travis CI, Buddy ma AppVeyor faʻaaoga PVS-Studio
Se'i ta'u mai le tagata tu'ufa'atasi na fa'aaoga e fausia ai le galuega. Matau le koneteina o lo'o fa'apipi'i ile gaioiga lea. Mo se faʻataʻitaʻiga, o loʻo i ai se pusa faʻapitoa mo le GCC:

Iloiloga o tautinoga ma toso talosaga i Travis CI, Buddy ma AppVeyor faʻaaoga PVS-Studio
Sei o tatou faʻapipiʻi le PVS-Studio ma mea faʻaoga talafeagai:

Iloiloga o tautinoga ma toso talosaga i Travis CI, Buddy ma AppVeyor faʻaaoga PVS-Studio
Sei o tatou faaopoopo atu laina nei i le faatonu:

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

Sei o tatou o i le Run tab (muamua aikona) ma faʻaopopo le code lea i le faʻatonu faʻatonu:

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

Afai e te faitau i le vaega i luga o Travs-CI, o lenei code ua uma ona e masani ai, ae peitai, o lea ua i ai se laasaga fou:

Iloiloga o tautinoga ma toso talosaga i Travis CI, Buddy ma AppVeyor faʻaaoga PVS-Studio
O le mea moni o le taimi nei matou te suʻesuʻeina e le o le iʻuga o le tuʻufaʻatasia, ae o le HEAD o le paranesi lea na faia ai le talosaga toso:

Iloiloga o tautinoga ma toso talosaga i Travis CI, Buddy ma AppVeyor faʻaaoga PVS-Studio
O lea la ua tatou i ai i se tautinoga tuutuuga B3 ma e tatau ona tatou maua le eseesega mai 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

Mo le fuafuaina A3 Tatou fa'aoga le GitHub API:

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

Na matou faʻaogaina suiga nei na saunia e Buddy:

  • $BUDDY_EXECUTION_PULL_REQEUST_NO - toso numera talosaga;
  • $BUDDY_REPO_SLUG - o se tu'ufa'atasiga ole igoa ole igoa ma le fa'aputuga (fa'ata'ita'iga max/test).

Se'i o tatou fa'asaoina suiga e fa'aaoga ai le fa'amau i lalo ma mafai ai ona su'esu'eina le talosaga toso:

Iloiloga o tautinoga ma toso talosaga i Travis CI, Buddy ma AppVeyor faʻaaoga PVS-Studio
E le pei o Travis CI, matou te le manaʻomia le faʻamaonia .pvs-studio mo le teuina, talu ai e otometi lava ona teuina e Buddy faila uma mo faʻasalalauga mulimuli. O le mea lea, o le mea mulimuli o loʻo totoe o le faʻasaoina lea o le saini ma le upega tafaʻilagi mo PVS-Studio i Buddy. A uma ona fa'asaoina suiga, o le a toe ave i tua i le Pipeline. Matou te manaʻomia le agai i luma i le faʻatulagaina o fesuiaiga ma faʻaopoopo se saini ma ki mo PVS-Studio:

Iloiloga o tautinoga ma toso talosaga i Travis CI, Buddy ma AppVeyor faʻaaoga PVS-Studio
A maeʻa lenei mea, o le faʻaalia o se talosaga toso fou poʻo se tautinoga o le a faʻaosofia ai le toe iloiloga. Afai o se tautinoga o loʻo i ai mea sese, Buddy o le a faʻaalia lenei mea i luga o le itulau talosaga toso.

AppVeyor

O le setiina o le AppVeyor e tutusa ma Buddy, talu ai e tutupu mea uma i luga o le upega tafaʻilagi ma e leai se manaʻoga e faʻaopoopo se faila * .yml i le fale teu oloa.

Se'i o tatou i le Fa'amaufa'ailoga i le va'aiga lautele o le poloketi:

Iloiloga o tautinoga ma toso talosaga i Travis CI, Buddy ma AppVeyor faʻaaoga PVS-Studio
Se'i o ta'ai i lalo le itulau lenei ma fa'aaga le fa'asaoina o le cache mo le aoina mai o talosaga toso:

Iloiloga o tautinoga ma toso talosaga i Travis CI, Buddy ma AppVeyor faʻaaoga PVS-Studio
Sei o tatou o i le Siosiomaga tab, lea tatou te faʻamaonia ai le ata mo le faʻapotopotoga ma suiga talafeagai o le siosiomaga:

Iloiloga o tautinoga ma toso talosaga i Travis CI, Buddy ma AppVeyor faʻaaoga PVS-Studio
Afai na e faitau i vaega ua mavae, ua e masani lelei i nei fesuiaiga e lua − PVS_KEY и PVS_USERNAME. Afai e leai, sei ou faamanatu atu ia te oe e tatau ona latou faʻamaonia le laisene o le PVS-Studio analyzer. O le a tatou toe vaʻaia i latou i tusitusiga Bash i le lumanaʻi.

I luga o le itulau e tasi o loʻo i lalo matou te faʻaalia le faila mo le faʻapipiʻiina:

Iloiloga o tautinoga ma toso talosaga i Travis CI, Buddy ma AppVeyor faʻaaoga PVS-Studio
Afai tatou te le faia lenei mea, o le a tatou suʻesuʻeina le poloketi atoa nai lo ni faila faila, ae o le a tatou maua le gaioiga mai faila faʻamaonia. O le mea lea, e taua le fa'aofiina o le igoa fa'atonu sa'o.

Ua o'o nei i le taimi e su'e ai le tusitusiga. Tatala le Su'ega tab ma filifili Mau:

Iloiloga o tautinoga ma toso talosaga i Travis CI, Buddy ma AppVeyor faʻaaoga PVS-Studio
E tatau ona e fa'apipi'i le code lea i totonu o lenei fomu:

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

Sei o tatou gauai atu i le vaega lea o le code:

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

O le faʻatonuga patino o le tau o le pwd poloaiga i se fesuiaiga e tatau ona teuina lenei tau le aoga e foliga mai e ese i le tepa muamua, ae ui i lea, o le a ou faʻamatalaina mea uma i le taimi nei.

Aʻo faʻatulagaina le suʻega i AppVeyor, na ou feagai ma uiga uiga ese a le suʻega. I le tasi itu, sa lelei mea uma, ae e leʻi amataina le auiliiliga. Na ou faʻaaluina le tele o le taimi e matauina ai o matou i totonu o le /home/appveyor/projects/testcalc/ directory, ma e mautinoa e le tagata suʻesuʻe o loʻo matou i totonu /opt/appveyor/build-agent/. Ona ou iloa ai lea o le fesuiaiga o le $PWD o loʻo taoto laitiiti. Mo lenei mafuaʻaga, na ou faʻafouina ma le lima lona tau aʻo leʻi amataina le auiliiliga.

Ma o mea uma e pei o muamua:

Iloiloga o tautinoga ma toso talosaga i Travis CI, Buddy ma AppVeyor faʻaaoga PVS-Studio
Mafaufau la i le vaega lea:

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

I totonu tatou te maua ai le eseesega i le va o lala o loʻo faʻaalia ai le talosaga toso. Ina ia faia lenei mea matou te manaʻomia suiga o le siosiomaga nei:

  • $APPVEYOR_PULL_REQUEST_NUMBER — toso numera talosaga;
  • $APPVEYOR_REPO_NAME - igoa fa'aoga ma fale teu oloa.

iʻuga

O le mea moni, matou te leʻi mafaufauina uma auaunaga tuʻufaʻatasiga faʻaauau, peitaʻi, e tutusa uma le faʻaogaina o le tasi i le isi. Se'i vagana ai le caching, e faia e 'au'aunaga ta'itasi lana lava " uila vilivae ", o lea e ese lava mea uma.

I se mea, pei o Travis-CI, o ni laina se lua o le code ma caching e galue lelei; i se mea, pei o le AppVeyor, naʻo lou manaʻomia e faʻamaonia le faila i totonu o tulaga; ae i se mea e te manaʻomia e fatuina ai ni ki tulaga ese ma taumafai e faʻamaonia le faiga e tuʻuina atu ia te oe le avanoa e faʻasolo ai le vaega o le cached. O le mea lea, afai e te manaʻo e faʻatulaga auʻiliʻiliga o talosaga toso i luga o se auaunaga tuʻufaʻatasiga faifaipea e leʻi talanoaina i luga, ia muamua ia mautinoa o le a leai sau faʻafitauli i le caching.

Faafetai mo lou gauai mai. Afai e iai se mea e le manuia, lagona le saoloto e tusi mai ia i matou i lagolago. O le a matou fautua ma fesoasoani.

Iloiloga o tautinoga ma toso talosaga i Travis CI, Buddy ma AppVeyor faʻaaoga PVS-Studio

Afai e te manaʻo e faʻasoa lenei tusiga i se faʻalogo Igilisi, faʻamolemole faʻaoga le fesoʻotaʻiga faʻaliliu: Maxim Zvyagintsev. Iloiloga o tautinoga ma toso talosaga i Travis CI, Buddy ma AppVeyor faʻaaoga PVS-Studio.

puna: www.habr.com

Faaopoopo i ai se faamatalaga