Tlhahlobo ea boitlamo le likopo tsa ho hula ho Travis CI, Buddy le AppVeyor u sebelisa PVS-Studio.

Tlhahlobo ea boitlamo le likopo tsa ho hula ho Travis CI, Buddy le AppVeyor u sebelisa PVS-Studio.
Ho PVS-Studio analyzer bakeng sa lipuo tsa C le C ++ ho Linux le macOS, ho qala ka mofuta oa 7.04, monyetla oa teko o hlahile ho lekola lenane la lifaele tse boletsoeng. U sebelisa mokhoa o mocha, o ka hlophisa analyzer ho lekola boitlamo le ho hula likopo. Sengoliloeng sena se tla u bonts'a mokhoa oa ho theha lethathamo la lifaele tsa projeke ea GitHub lits'ebetsong tse tsebahalang tsa CI (Continuous Integration) joalo ka Travis CI, Buddy le AppVeyor.

Mokhoa oa ho hlahloba lenane la lifaele

Studio-PVS ke sesebelisoa sa ho bona liphoso le bofokoli bo ka bang teng ho khoutu ea mohloli oa mananeo a ngotsoeng ho C, C ++, C # le Java. E sebetsa ho sistimi ea 64-bit ho Windows, Linux le macOS.

Phetolelo ea PVS-Studio 7.04 bakeng sa Linux le macOS e na le mokhoa oa ho lekola lenane la lifaele tsa mohloli. Sena se sebetsa bakeng sa merero eo tsamaiso ea eona ea kaho e u lumellang ho hlahisa faele bokella_commands.json. Hoa hlokahala hore mohlahlobi a ntše tlhahisoleseling mabapi le ho bokelloa ha lifaele tse boletsoeng. Haeba mokhoa oa hau oa ho haha ​​o sa tšehetse ho hlahisa file ea compile_commands.json, u ka leka ho hlahisa faele e joalo u sebelisa lisebelisoa. Bear.

Hape, mokhoa oa ho lekola lenane la lifaele o ka sebelisoa hammoho le trace trace ea compiler runs (pvs-studio-analyzer trace). Ho etsa sena, o tla hloka pele ho etsa moralo o felletseng oa projeke mme o e latele e le hore mohlahlobi a bokelle tlhaiso-leseling e felletseng mabapi le likarolo tsa pokello ea lifaele tsohle tse hlahlojoang.

Leha ho le joalo, khetho ena e na le tšitiso e kholo - o tla hloka ho etsa moralo o felletseng oa morero o mong le o mong ha o qala, oo ka boona o hananang le mohopolo oa cheke e potlakileng ea boitlamo. Kapa, ​​​​haeba u boloka sephetho sa morao-rao ka boeona, ho hlahisoa ha mohlahlobi ho ka 'na ha bonahala ho sa phethahala haeba sebopeho sa mohloli oa mohloli se fetohang ka mor'a ho latela (mohlala, #include e ncha e kenyelelitsoe ho e' ngoe ea lifaele tsa mohloli).

Ka hona, ha re khothaletse ho sebelisa mokhoa oa ho hlahloba lenane la lifaele ka lethathamo la trace ho lekola likopo kapa ho hula likopo. Haeba o ka etsa moaho o eketsehileng ha o hlahloba boitlamo, nahana ka ho sebelisa mokhoa ona tlhahlobo e ntseng e eketseha.

Lethathamo la lifaele tsa mohloli bakeng sa tlhahlobo le bolokoa faeleng ea mongolo ebe le fetisetsoa ho mohlahlobi ho sebelisoa paramethara -S:

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

Faele ena e totobatsa litsela tse amanang kapa tse felletseng tsa lifaele, 'me faele e' ngoe le e 'ngoe e ncha e tlameha ho ba moleng o mocha. Hoa lumelloa ho bolela eseng feela mabitso a lifaele bakeng sa tlhahlobo, empa le litemana tse fapaneng. Mohlahlobi o tla bona hore ena ha se faele mme o tla iphapanyetsa mohala. Sena se ka ba molemo bakeng sa ho fana ka maikutlo haeba lifaele li hlalositsoe ka letsoho. Leha ho le joalo, hangata lethathamo la lifaele le tla hlahisoa nakong ea CI parsing, mohlala lifaele tse tsoang boitlamo kapa kopo ea ho hula.

Joale, u sebelisa mokhoa ona, u ka lekola khoutu e ncha kapele pele e kena lekaleng le ka sehloohong la nts'etsopele. E le hore sistimi ea netefatso e arabele litemoso tsa analyzer, ts'ebeliso mofetoheli oa pola folakha e ekelitsoe --bontsha-ditemoso:

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

Ka folakha ena, converter e tla khutlisa khoutu e seng ea zero haeba ho na le litemoso tlalehong ea analyzer. U sebelisa khoutu ea ho khutlisa, u ka thibela hook ea pele, ho itlama kapa ho hula kopo, 'me u bonts'a tlaleho e hlahisitsoeng ea mohlahlobi skrineng, u e arolelane kapa u e romelle ka lengolo.

Hlokomela. Lekhetlo la pele ha u qala ho hlahloba lenane la lifaele, morero oohle o tla hlahlojoa, hobane mohlahlobi o hloka ho hlahisa faele ea litšepiso tsa lifaele tsa mohloli oa projeke ho lifaele tsa hlooho. Ena ke tšobotsi ea ho arola lifaele tsa C le C ++. Nakong e tlang, faele ea ho itšetleha e ka bolokoa 'me e tla ntlafatsoa ka bo eona ke mohlahlobi. Monyetla oa ho hlahloba boitlamo ha u sebelisa mokhoa oa ho hlahloba lenane la lifaele ka ho sebelisa mokhoa o ntseng o eketseha oa parsing ke hore faele eo ke eona feela e lokelang ho bolokoa, eseng lifaele tsa ntho.

Melao-motheo e akaretsang ea tlhahlobo ea kopo ea ho hula

Tlhahlobo ea morero oohle e nka nako e telele, kahoo hoa utloahala ho hlahloba karolo e itseng feela ea eona. Bothata ke hore o hloka ho arola lifaele tse ncha ho lifaele tse ling tsa morero.

Nahana ka mohlala oa sefate sa boitlamo se nang le makala a mabeli:

Tlhahlobo ea boitlamo le likopo tsa ho hula ho Travis CI, Buddy le AppVeyor u sebelisa PVS-Studio.

Ha re etse eka ke boitlamo A1 e na le palo e kholo ea khoutu e seng e hlahlobiloe. Nakoana pejana re entse lekala ho tloha boitlamo A1 le ho fetola lifaele tse ling.

Ehlile, le hlokometse seo kamora A1 ho bile le li-commission tse ling tse peli, empa le tsona e ne e le kopanyo ea makala a mang, hobane ha re itlama mong'a. Mme jwale ho fihlile nako ya hore hotfix lokile. Ka hona, ho ile ha hlaha kopo ea ho hula bakeng sa ho kopanya B3 и A3.

Ha e le hantle, ho ka khoneha ho hlahloba sephetho sohle sa ho kopanya ha bona, empa sena se ne se tla ba nako e telele haholo le se sa lokang, kaha ke lifaele tse seng kae feela tse fetotsoeng. Ka hona, ho molemo ho hlahloba feela tse fetotsoeng.

Ho etsa sena, re fumana phapang lipakeng tsa makala, ho ba HLOOHO ea lekala leo re batlang ho kopana ho lona ho ba master:

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

$MERGE_BASE re tla hlahloba ka botlalo hamorao. 'Nete ke hore ha se tšebeletso e' ngoe le e 'ngoe ea CI e fanang ka tlhahisoleseding e hlokahalang mabapi le motheo oa ho kopanya, kahoo nako le nako u tlameha ho tla le litsela tse ncha tsa ho fumana lintlha tsena. Sena se tla hlalosoa ka botlalo ho e 'ngoe le e 'ngoe ea litšebeletso tsa marang-rang tse hlalositsoeng.

Kahoo, re fumane phapang pakeng tsa makala, kapa ho e-na le hoo, lethathamo la mabitso a lifaele a fetotsoeng. Hona joale re hloka ho fana ka file .pvs-pr.list (re lebisitse tlhahiso e kaholimo ho eona) ho mohlahlobi:

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

Kamora tlhahlobo, re hloka ho fetolela faele ea log (PVS-Studio.log) hore e be sebopeho se baloang:

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

Taelo ena e tla thathamisa liphoso ho ltsoa (sehlahisoa se tloaelehileng sa phoso).

Ke mona feela ha ho hlokahale hore re bontše liphoso feela, empa hape le ho tsebisa tšebeletso ea rona bakeng sa kopano le tlhahlobo mabapi le boteng ba mathata. Bakeng sa sena, ho ile ha eketsoa folakha ho converter -W (--bontsha-ditemoso). Haeba ho na le bonyane temoso e le 'ngoe ea analyzer, khoutu ea ho khutlisa ea ts'ebeliso mofetoheli oa pola e tla fetoha ho 2, e leng eona e tla tsebisa tšebeletso ea CI hore ho na le liphoso tse ka 'nang tsa e-ba teng ho lifaele tsa kopo ea ho hula.

Travis C.I.

Tlhophiso e entsoe ka mokhoa oa faele .travis.yml. Bakeng sa boiketlo, ke u eletsa hore u kenye ntho e 'ngoe le e' ngoe ka har'a script e arohaneng ea bash e nang le mesebetsi e tla bitsoa ho tsoa faeleng .travis.yml (bash scriptname.sh function_name).

Re tla eketsa khoutu e hlokahalang ho script ho Bash, kahoo re fumana ts'ebetso e eketsehileng. Karolong kenya ha re ngoleng tse latelang:

install:
  - bash .travis.sh travis_install

Haeba u ne u e-na le litaelo, u ka li suthisetsa script ka ho tlosa li-hyphens.

Ha re bule faele .travis.sh ebe o kenya setupo sa analyzer tšebetsong 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 
}

Joale ha re kenyelletse karolong rx tsamaisa tlhahlobo:

script:
  - bash .travis.sh travis_script

Mme ka 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
}

Khoutu ena e tlameha ho tsamaisoa kamora hore projeke e hahuoe, mohlala, haeba u ne u e-na le moaho oa CMake:

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

E tla shebahala tjena:

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
}

Mohlomong u se u hlokometse mefuta-futa ea tikoloho e boletsoeng. $TRAVIS_PULL_REQUEST и $TRAVIS_BRANCH. Travis CI e li phatlalatsa ka botsona:

  • $TRAVIS_PULL_REQUEST boloka nomoro ea kopo ea ho hula, kapa bohatahaeba e le lekala le tloaelehileng;
  • $TRAVIS_REPO_SLUG e boloka lebitso la polokelo ea morero.

Algorithm ea ts'ebetso ena:

Tlhahlobo ea boitlamo le likopo tsa ho hula ho Travis CI, Buddy le AppVeyor u sebelisa PVS-Studio.
Travis CI e araba likhoutu tsa ho khutlisa, kahoo boteng ba litemoso bo tla bolella ts'ebeletso ho tšoaea boitlamo joalo ka buggy.

Ha re shebisiseng mola ona oa khoutu:

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

Taba ke hore Travis CI e kopanya makala ka bo eona nakong ea tlhahlobo ea kopo ea ho hula:

Tlhahlobo ea boitlamo le likopo tsa ho hula ho Travis CI, Buddy le AppVeyor u sebelisa PVS-Studio.
Ka hona, re sekaseka A4, eseng B3->A3. Ka lebaka la tšobotsi ena, re hloka ho bala phapang ho tloha A3, e leng feela tlhōrō ea lekala ho tloha tsoalo.

Ntlha e le 'ngoe ea bohlokoa e sa ntse e le teng - ho boloka boitsebiso bo itšetlehileng ka lihlooho tsa lihlooho tsa lihlopha tsa phetolelo tse hlophisitsoeng (*.c, *.cc, *.cpp, joalo-joalo). Mohlahlobi o bala litšetleho tsena qalong ea mokhoa oa ho hlahloba lethathamo la lifaele ebe o li boloka bukeng ea .PVS-Studio. Travis CI e u lumella ho boloka li-folders, kahoo re tla boloka data ea directory .PVS-Studio/:

cache:
  directories:
    - .PVS-Studio/

Khoutu ena e tlameha ho kenngoa faeleng .travis.yml. Sengoliloeng sena se boloka lintlha tse fapaneng tse bokelletsoeng kamora tlhahlobo, tse tla potlakisa haholo ts'ebetso e latelang ea tlhahlobo ea lenane la lifaele kapa tlhahlobo e ntseng e eketseha. Haeba sena se sa etsoe, joale mohlahlobi o tla hlahloba lifaele tsohle nako le nako.

Buddy

Joalo ka Travis C.I., Buddy e fana ka bokhoni ba ho iketsetsa le ho leka merero e bolokiloeng ho GitHub. Ho fapana le Travis CI, e hlophisitsoe ka har'a sehokelo sa marang-rang (tšehetso ea bash e fumaneha), kahoo ha ho na tlhoko ea ho boloka lifaele tsa tlhophiso morerong.

Pele ho tsohle, re hloka ho eketsa ketso e ncha moleng oa kaho:

Tlhahlobo ea boitlamo le likopo tsa ho hula ho Travis CI, Buddy le AppVeyor u sebelisa PVS-Studio.
Hlalosa moqapi o sebelisitsoeng ho aha morero. Hlokomela setshelo sa docker se kentsoeng ts'ebetsong ena. Ka mohlala, ho na le setshelo se khethehileng sa GCC:

Tlhahlobo ea boitlamo le likopo tsa ho hula ho Travis CI, Buddy le AppVeyor u sebelisa PVS-Studio.
Joale ha re kenyeng PVS-Studio le lisebelisoa tse hlokahalang:

Tlhahlobo ea boitlamo le likopo tsa ho hula ho Travis CI, Buddy le AppVeyor u sebelisa PVS-Studio.
Kenya mela e latelang ho mohlophisi:

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

Joale ha re ee ho Run tab (setšoantšo sa pele) 'me u kenye khoutu e latelang sebakeng se tsamaisanang le sona:

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

Haeba u balile karolo ea Travs-CI, joale khoutu ena e se e ntse e u tseba, leha ho le joalo, joale ho na le mohato o mocha:

Tlhahlobo ea boitlamo le likopo tsa ho hula ho Travis CI, Buddy le AppVeyor u sebelisa PVS-Studio.
'Nete ke hore joale ha re sekaseke sephetho sa ho kopanya, empa SEHLOOHO sa lekala leo kopo ea ho hula e etsoang ho lona:

Tlhahlobo ea boitlamo le likopo tsa ho hula ho Travis CI, Buddy le AppVeyor u sebelisa PVS-Studio.
Kahoo re boitlamo bo nang le maemo B3 mme re hloka ho fumana phapang ho tloha ho 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

Bakeng sa ho khetholla A3 Ha re sebeliseng GitHub API:

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

Re sebelisitse mefuta e latelang e fanoeng ke Buddy:

  • $BUDDY_EXECUTION_PULL_REQEUST_NO - nomoro ea kopo ea ho hula;
  • $BUDDY_REPO_SLUG - motsoako oa lebitso la mosebelisi le polokelo (mohlala max / test).

Joale ha re bolokeng liphetoho re sebelisa konopo e ka tlase, 'me re lumelle tlhahlobo ea kopo ea ho hula:

Tlhahlobo ea boitlamo le likopo tsa ho hula ho Travis CI, Buddy le AppVeyor u sebelisa PVS-Studio.
Ho fapana le Travis CI, ha ho hlokahale hore re hlalose .pvs-studio bakeng sa caching, kaha Buddy e boloka lifaele tsohle ka bo eona bakeng sa ho qala ho latelang. Ka hona, ntho ea ho qetela e setseng ke ho boloka ho kena le password bakeng sa PVS-Studio ho Buddy. Kamora ho boloka liphetoho, re tla khutlela ho Pipeline. Re hloka ho ea ho litlhophiso tse fapaneng ebe re eketsa ho kena le senotlolo sa PVS-Studio:

Tlhahlobo ea boitlamo le likopo tsa ho hula ho Travis CI, Buddy le AppVeyor u sebelisa PVS-Studio.
Ka mor'a moo, ponahalo ea kopo e ncha ea ho hula kapa boitlamo e tla etsa hore cheke. Haeba boitlamo bo na le liphoso, joale Buddy o tla e supa leqepheng la kopo ea ho hula.

AppVeyor

Ho theha AppVeyor ho tšoana le Buddy, kaha ntho e 'ngoe le e' ngoe e etsahala ho sebopeho sa websaete 'me ha ho hlokahale hore u kenye faele ea *.yml sebakeng sa polokelo ea morero.

Ha re ee ho li-settings ho kakaretso ea morero:

Tlhahlobo ea boitlamo le likopo tsa ho hula ho Travis CI, Buddy le AppVeyor u sebelisa PVS-Studio.
Ha re theolele tlase leqephe lena 'me re lumelle ho boloka cache bakeng sa likopo tsa ho hula moaho:

Tlhahlobo ea boitlamo le likopo tsa ho hula ho Travis CI, Buddy le AppVeyor u sebelisa PVS-Studio.
Joale ha re ee tabeng ea Tikoloho, moo re hlalosang setšoantšo seo re lokelang ho se haha ​​le mefuta e fapaneng ea tikoloho:

Tlhahlobo ea boitlamo le likopo tsa ho hula ho Travis CI, Buddy le AppVeyor u sebelisa PVS-Studio.
Haeba u balile likarolo tse fetileng, u tloaelane haholo le mefuta ena e 'meli − PVS_KEY и PVS_USERNAME. Haeba ho se joalo, e-re ke u hopotse hore baa hlokahala ho hlahloba laesense ea PVS-Studio analyzer. Nakong e tlang, re tla kopana le bona hape ka mangolo a Bash.

Leqepheng le le leng le ka tlase, hlakisa foldara bakeng sa caching:

Tlhahlobo ea boitlamo le likopo tsa ho hula ho Travis CI, Buddy le AppVeyor u sebelisa PVS-Studio.
Haeba re sa etse sena, joale re tla sekaseka morero oohle ho e-na le lifaele tse 'maloa, empa re tla fumana tlhahiso ho latela lifaele tse boletsoeng. Ka hona, ho bohlokoa ho kenya lebitso la directory le nepahetseng.

Joale ke nako ea hore script e lekoe. Bula tab ea Liteko ebe u khetha Script:

Tlhahlobo ea boitlamo le likopo tsa ho hula ho Travis CI, Buddy le AppVeyor u sebelisa PVS-Studio.
Beha khoutu e latelang foromong ena:

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

Ha re shebeng karolo e latelang ea khoutu:

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

Kabelo e ikhethileng ea boleng ba taelo ea pwd ho phapang e lokelang ho boloka boleng bona ba kamehla e bonahala e makatsa qalong, leha ho le joalo, ke tla hlalosa ntho e ngoe le e ngoe ka motsotsoana.

Ha ke ntse ke theha analyzer ho AppVeyor, ke ile ka kopana le boitšoaro bo makatsang haholo ba mohlahlobi. Ka lehlakoreng le leng, ntho e 'ngoe le e' ngoe e ne e sebetsa hantle, empa tlhahlobo ha ea ka ea qala. Ke qetile nako e ngata ke hlokomela hore re ka har'a /home/appveyor/projects/testcalc/ directory, mme mohlahlobi o na le bonnete ba hore re ho /opt/appveyor/build-agent/. Eaba kea hlokomela hore phetoho ea $ PWD e batla e le leshano. Ka lebaka lena, ke ile ka ntlafatsa boleng ba eona pele ke qala tlhahlobo.

Ebe tsohle, joalo ka pele:

Tlhahlobo ea boitlamo le likopo tsa ho hula ho Travis CI, Buddy le AppVeyor u sebelisa PVS-Studio.
Joale nahana ka snippet e latelang:

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

Ho eona, re fumana phapang lipakeng tsa makala ao kopo ea ho hula e phatlalatsoang ho ona. Bakeng sa sena re hloka mefuta e latelang ea tikoloho:

  • $APPVEYOR_PULL_REQUEST_NUMBER - nomoro ea kopo ea ho hula;
  • $APPVEYOR_REPO_NAME - lebitso la mosebedisi le polokelo ea morero.

fihlela qeto e

Ha e le hantle, ha re e-s'o nahane ka litšebeletso tsohle tse ka khonehang tsa ho kopanya, leha ho le joalo, kaofela li na le litlhaloso tse tšoanang haholo tsa mosebetsi. Ntle le caching, tšebeletso e 'ngoe le e' ngoe e iketsetsa "baesekele", kahoo ntho e 'ngoe le e' ngoe e fapane kamehla.

Sebakeng se seng, joalo ka Travis-CI, mela e 'maloa ea khoutu le caching e sebetsa ka mokhoa o se nang sekoli; kae-kae, joalo ka AppVeyor, o hloka feela ho hlakisa foldara ho li-setting; empa kae-kae o hloka ho etsa linotlolo tse ikhethang mme o leke ho kholisa sistimi ho u fa monyetla oa ho hlakola sekhechana sa cached. Ka hona, haeba u batla ho theha tlhahlobo ea kopo ea ho hula ka ts'ebeletso e tsoelang pele ea ho kopanya e sa kang ea tšohloa ka holimo, joale etsa bonnete ba hore u ke ke ua ba le mathata ka caching.

Kea leboha ha u mametse. Haeba ho na le ho sa sebetseng hantle, ikutloe u lokolohile ho re ngolla ho tšehetso. Re tla eletsa le ho thusa.

Tlhahlobo ea boitlamo le likopo tsa ho hula ho Travis CI, Buddy le AppVeyor u sebelisa PVS-Studio.

Haeba u batla ho arolelana sengoloa sena le bamameli ba buang Senyesemane, ka kopo sebelisa sehokelo sa phetolelo: Maxim Zvyagintsev. Tlhahlobo ea boitlamo le likopo tsa ho hula ho Travis CI, Buddy le AppVeyor u sebelisa PVS-Studio..

Source: www.habr.com

Eketsa ka tlhaloso