Binciken aikatawa da jawo buƙatun a Travis CI, Buddy da AppVeyor ta amfani da PVS-Studio

Binciken aikatawa da jawo buƙatun a Travis CI, Buddy da AppVeyor ta amfani da PVS-Studio
A cikin PVS-Studio analyzer don C da C ++ harsuna akan Linux da macOS, farawa daga sigar 7.04, zaɓin gwaji ya bayyana don duba jerin takamaiman fayiloli. Amfani da sabon yanayin, zaku iya saita mai nazari don bincika aikatawa da ja buƙatun. Wannan labarin zai gaya muku yadda ake saita duba jerin fayilolin da aka canza na aikin GitHub a cikin shahararrun tsarin CI (Ci gaba da Haɗin kai) kamar Travis CI, Buddy da AppVeyor.

Yanayin duba lissafin fayil

PVS-Studio kayan aiki ne don gano kurakurai da yuwuwar lahani a cikin lambar tushe na shirye-shiryen da aka rubuta a C, C++, C # da Java. Yana aiki akan tsarin 64-bit akan Windows, Linux da macOS.

A cikin sigar PVS-Studio 7.04 don Linux da macOS, yanayin duba jerin fayilolin tushen ya bayyana. Wannan yana aiki don ayyukan da tsarin ginawa ya ba ku damar samar da fayil tara_umarni.json. Ana buƙatar mai nazari don fitar da bayanai game da tattara takamaiman fayiloli. Idan tsarin ginin ku baya goyan bayan samar da fayil ɗin compile_commands.json, zaku iya ƙoƙarin samar da irin wannan fayil ta amfani da mai amfani. bear.

Hakanan, yanayin duba lissafin fayil ɗin ana iya amfani dashi tare da jerin jerin abubuwan ƙaddamar da tarawa (trace pvs-studio-analyzer). Don yin wannan, kuna buƙatar fara aiwatar da cikakken ginin aikin kuma ku bi shi ta yadda mai nazari ya tattara cikakkun bayanai game da ma'aunin tattara duk fayilolin da ake dubawa.

Koyaya, wannan zaɓin yana da babban koma baya - ko dai kuna buƙatar aiwatar da cikakken tsarin aikin gabaɗayan duk lokacin da kuka gudanar da shi, wanda a cikin kansa ya saba wa ra'ayin hanzarta bincika ƙaddamarwa. Ko, idan ka cache sakamakon binciken da kanta, ayyukan mai binciken na gaba na iya zama bai cika ba idan tsarin dogara na fayilolin tushen ya canza bayan alamar (misali, ana ƙara sabon #include zuwa ɗaya daga cikin fayilolin tushen).

Don haka, ba mu ba da shawarar yin amfani da yanayin bincika lissafin fayil tare da rajistan binciken don bincika aikata ko ja buƙatun ba. Idan za ku iya yin haɓaka haɓaka yayin bincika alƙawarin, yi la'akari da amfani da yanayin ƙarin bincike.

An adana jerin fayilolin tushen don bincike a cikin fayil ɗin rubutu kuma an wuce zuwa mai nazari ta amfani da siga -S:

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

Wannan fayil ɗin yana ƙayyadadden hanyoyin dangi ko cikakkun hanyoyin zuwa fayiloli, kuma kowane sabon fayil dole ne ya kasance akan sabon layi. Yana da karɓa ba kawai sunayen fayil don bincike ba, amma har ma da rubutu daban-daban. Mai nazari zai ga cewa wannan ba fayil ba ne kuma zai yi watsi da layin. Wannan na iya zama da amfani don yin tsokaci idan an ayyana fayiloli da hannu. Koyaya, galibi ana samar da jerin fayiloli yayin bincike a cikin CI, alal misali, waɗannan na iya zama fayiloli daga ƙaddamarwa ko buƙatun ja.

Yanzu, ta amfani da wannan yanayin, zaku iya bincika sabon lamba da sauri kafin ya shiga babban reshen haɓakawa. Don tabbatar da cewa tsarin dubawa ya amsa gargadin mai nazari, mai amfani plog-converter tuta ya kara --nuna-gargaɗi:

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

Tare da wannan tuta, mai canzawa zai dawo da lambar mara sifili idan akwai gargaɗi a cikin rahoton nazartar. Yin amfani da lambar dawowa, zaku iya toshe ƙugiya ta riga-kafi, yi, ko buƙatun ja, kuma ana iya nunawa, rabawa, ko aika ta imel.

Lura. Lokacin da ka fara nazarin jerin fayiloli, za a bincikar dukkan aikin, saboda mai nazari yana buƙatar samar da fayil na abubuwan dogaro na fayilolin tushen aikin akan fayilolin taken. Wannan siffa ce ta nazarin fayilolin C da C++. A nan gaba, za a iya adana fayil ɗin dogara kuma mai nazari zai sabunta shi ta atomatik. Amfanin dubawa yana aikata lokacin amfani da yanayin bincika lissafin fayil akan amfani da yanayin bincike na haɓaka shine kawai kuna buƙatar cache wancan fayil ɗin ba fayilolin abu ba.

Gabaɗaya ka'idodin jan buƙatun bincike

Yin nazarin gabaɗayan aikin yana ɗaukar lokaci mai yawa, don haka yana da ma'ana don bincika wani yanki kawai. Matsalar ita ce kuna buƙatar raba sabbin fayiloli daga sauran fayilolin aikin.

Bari mu kalli misalin wata bishiya mai rassa biyu:

Binciken aikatawa da jawo buƙatun a Travis CI, Buddy da AppVeyor ta amfani da PVS-Studio

Bari mu yi tunanin wannan ƙaddamarwa A1 yana ƙunshe da adadi mai girman gaske na lambar da aka riga aka gwada. A baya kadan mun yi reshe daga aikin A1 kuma canza wasu fayiloli.

Kai, ba shakka, lura cewa bayan A1 wasu ayyuka guda biyu sun faru, amma waɗannan kuma haɗe-haɗe ne na wasu rassa, saboda ba mu yi ba master. Kuma yanzu lokacin ya yi hotfix shirye. Shi ya sa aka bayyana bukatar ja-gorar hadakar B3 и A3.

Tabbas, zai yiwu a bincika gabaɗayan sakamakon haɗewarsu, amma wannan zai ɗauki lokaci mai yawa kuma bai dace ba, tunda an canza ƴan fayiloli kaɗan. Saboda haka, ya fi dacewa don bincika kawai waɗanda aka canza.

Don yin wannan, za mu sami bambanci tsakanin rassan, kasancewa a cikin HEAD na reshe wanda muke so mu haɗu zuwa maigidan:

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

$MERGE_BASE za mu duba shi dalla-dalla daga baya. Gaskiyar ita ce, ba kowane sabis na CI ke ba da bayanan da suka dace game da bayanan bayanan don haɗawa ba, don haka duk lokacin da za ku fito da sababbin hanyoyin samun wannan bayanan. Za a bayyana wannan dalla-dalla a ƙasa a cikin kowane sabis ɗin gidan yanar gizo da aka siffanta.

Don haka, mun sami bambanci tsakanin rassan, ko kuma wajen, jerin sunayen fayilolin da aka canza. Yanzu muna buƙatar ba da fayil ɗin .pvs-pr.list (mun juya abin da ke sama zuwa gare shi) zuwa ga mai nazari:

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

Bayan bincike, muna buƙatar musanya fayil ɗin log ɗin (PVS-Studio.log) zuwa tsari mai sauƙin karantawa:

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

Wannan umarnin zai jera kurakurai a ciki stderr (fitowar saƙon kuskure daidai).

Yanzu kawai muna buƙatar ba kawai nuna kurakurai ba, amma kuma sanar da sabis ɗinmu don taro da gwaji game da kasancewar matsaloli. Don wannan dalili, an ƙara tuta zuwa mai juyawa -W (--nuna-gargaɗi). Idan akwai aƙalla gargaɗin mai nazari ɗaya, lambar dawowar mai amfani plog-converter zai canza zuwa 2, wanda hakan zai sanar da sabis na CI game da kasancewar yuwuwar kurakurai a cikin fayilolin buƙatun ja.

Travis CI

Ana yin tsari azaman fayil .travis.yml. Don dacewa, ina ba ku shawara ku sanya komai a cikin rubutun bash daban tare da ayyuka waɗanda za a kira su daga fayil ɗin. .travis.yml (bash script_name.sh function_name).

Za mu ƙara lambar da ake bukata zuwa rubutun a Bash, ta wannan hanyar za mu sami ƙarin ayyuka. A cikin sashe shigar bari mu rubuta kamar haka:

install:
  - bash .travis.sh travis_install

Idan kuna da kowane umarni, zaku iya canza su zuwa rubutun, cire sarƙoƙi.

Bari mu buɗe fayil ɗin .travis.sh kuma ƙara saitin nazari zuwa aikin 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 
}

Yanzu bari mu ƙara zuwa sashe script gudanar da bincike:

script:
  - bash .travis.sh travis_script

Kuma a cikin rubutun 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
}

Ana buƙatar gudanar da wannan lambar bayan gina aikin, misali, idan kuna da gini akan CMake:

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

Zai kasance kamar haka:

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
}

Wataƙila kun riga kun lura da waɗannan canjin yanayi $TRAVIS_PULL_REQUEST и $TRAVIS_BRANCH. Travis CI ya ayyana su da kansa:

  • $TRAVIS_PULL_REQUEST yana adana lambar buƙatar ja ko arya, idan wannan reshe ne na yau da kullum;
  • $TRAVIS_REPO_SLUG yana adana sunan ma'ajiyar aikin.

Algorithm don wannan aikin:

Binciken aikatawa da jawo buƙatun a Travis CI, Buddy da AppVeyor ta amfani da PVS-Studio
Travis CI yana amsa lambobin dawowa, don haka kasancewar faɗakarwa zai gaya wa sabis ɗin don alamar aikatawa azaman ƙunshi kurakurai.

Yanzu bari mu dubi wannan layin code:

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

Gaskiyar ita ce Travis CI ta haɗu da rassa ta atomatik yayin nazarin buƙatar ja:

Binciken aikatawa da jawo buƙatun a Travis CI, Buddy da AppVeyor ta amfani da PVS-Studio
Don haka muna nazari A4, kuma ba B3->A3. Saboda wannan fasalin, muna buƙatar lissafin bambanci tare da A3, wanda shine daidai saman reshe daga Asali.

Akwai wani muhimmin daki-daki daya da ya rage - caching dogayen fayilolin kan layi akan rukunin fassarar da aka haɗa (*.c, *.cc, *.cpp, da sauransu). Mai nazari yana ƙididdige waɗannan abubuwan dogara lokacin da aka fara ƙaddamar da shi a cikin yanayin duba jerin fayiloli sannan ya adana su a cikin .PVS-Studio directory. Travis CI yana ba ku damar adana manyan fayiloli, don haka za mu adana bayanan directory .PVS-Studio/:

cache:
  directories:
    - .PVS-Studio/

Ana buƙatar ƙara wannan lambar zuwa fayil ɗin .travis.yml. Wannan kundin adireshi yana adana bayanai daban-daban da aka tattara bayan bincike, waɗanda za su hanzarta gudanar da bincike na lissafin fayil na gaba ko ƙarin bincike. Idan ba a yi haka ba, to, mai nazari zai bincika duk fayilolin kowane lokaci.

aboki

Kamar Travis CI, aboki yana ba da ikon ginawa ta atomatik da gwada ayyukan da aka adana akan GitHub. Ba kamar Travis CI ba, an saita shi a cikin haɗin yanar gizon yanar gizon (akwai tallafin bash), don haka babu buƙatar adana fayilolin sanyi a cikin aikin.

Da farko, muna buƙatar ƙara sabon aiki zuwa layin taro:

Binciken aikatawa da jawo buƙatun a Travis CI, Buddy da AppVeyor ta amfani da PVS-Studio
Bari mu nuna na'urar da aka yi amfani da ita don gina aikin. Lura da kwandon docker ɗin da aka shigar a cikin wannan aikin. Misali, akwai akwati na musamman don GCC:

Binciken aikatawa da jawo buƙatun a Travis CI, Buddy da AppVeyor ta amfani da PVS-Studio
Yanzu bari mu shigar da PVS-Studio da abubuwan da ake buƙata:

Binciken aikatawa da jawo buƙatun a Travis CI, Buddy da AppVeyor ta amfani da PVS-Studio
Bari mu ƙara layin masu zuwa ga edita:

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

Yanzu bari mu je Run tab (alama ta farko) kuma mu ƙara lambar da ke gaba zuwa filin edita daidai:

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

Idan kun karanta sashin Travs-CI, to wannan lambar ta riga ta saba muku, duk da haka, yanzu akwai sabon mataki:

Binciken aikatawa da jawo buƙatun a Travis CI, Buddy da AppVeyor ta amfani da PVS-Studio
Gaskiyar ita ce, yanzu ba mu bincikar sakamakon haɗakarwa ba, amma SHUGABAN reshe ne wanda aka yi buƙatun ja:

Binciken aikatawa da jawo buƙatun a Travis CI, Buddy da AppVeyor ta amfani da PVS-Studio
Don haka muna cikin alƙawarin sharadi B3 kuma muna buƙatar samun bambanci daga 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

Don tantancewa A3 Bari mu yi amfani da GitHub API:

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

Mun yi amfani da masu canji masu zuwa waɗanda Buddy ke bayarwa:

  • $BUDDY_EXECUTION_PULL_REQEUST_NO - ja lambar neman;
  • $BUDDY_REPO_SLUG - hade da sunan mai amfani da wurin ajiya (misali max/gwaji).

Yanzu bari mu ajiye canje-canje ta amfani da maɓallin da ke ƙasa kuma mu ba da damar nazarin buƙatar ja:

Binciken aikatawa da jawo buƙatun a Travis CI, Buddy da AppVeyor ta amfani da PVS-Studio
Ba kamar Travis CI ba, ba ma buƙatar tantancewa .pvs-studio don caching, tunda Buddy yana adana duk fayiloli ta atomatik don ƙaddamarwa na gaba. Don haka, abu na ƙarshe da ya rage shine adana shiga da kalmar wucewa don PVS-Studio a cikin Buddy. Bayan adana canje-canje, za a mayar da mu zuwa Pipeline. Muna buƙatar ci gaba don saita masu canji da ƙara shiga da maɓalli don PVS-Studio:

Binciken aikatawa da jawo buƙatun a Travis CI, Buddy da AppVeyor ta amfani da PVS-Studio
Bayan wannan, bayyanar sabon buƙatar ja ko ƙaddamarwa zai haifar da bita. Idan alƙawarin ya ƙunshi kurakurai, Buddy zai nuna wannan akan shafin nema.

AppVeyor

Saita AppVeyor yayi kama da Buddy, tunda duk abin da ke faruwa a cikin mahaɗin yanar gizo kuma babu buƙatar ƙara fayil * .yml zuwa wurin ajiyar aikin.

Bari mu je shafin Saituna a cikin bayanin aikin:

Binciken aikatawa da jawo buƙatun a Travis CI, Buddy da AppVeyor ta amfani da PVS-Studio
Bari mu gungurawa wannan shafin kuma mu ba da damar adana cache don tattara buƙatun ja:

Binciken aikatawa da jawo buƙatun a Travis CI, Buddy da AppVeyor ta amfani da PVS-Studio
Yanzu bari mu je shafin Muhalli, inda muka saka hoton don taro da masu canjin yanayi masu dacewa:

Binciken aikatawa da jawo buƙatun a Travis CI, Buddy da AppVeyor ta amfani da PVS-Studio
Idan kun karanta sassan da suka gabata, kun saba da waɗannan ma'auni guda biyu - PVS_KEY и PVS_USERNAME. Idan ba haka ba, bari in tunatar da ku cewa suna da mahimmanci don tabbatar da lasisin nazartar PVS-Studio. Za mu sake ganin su a cikin rubutun Bash a nan gaba.

A wannan shafin da ke ƙasa muna nuna babban fayil ɗin caching:

Binciken aikatawa da jawo buƙatun a Travis CI, Buddy da AppVeyor ta amfani da PVS-Studio
Idan ba mu yi haka ba, za mu bincika dukkan aikin a maimakon wasu fayiloli guda biyu, amma za mu sami fitarwa daga fayilolin da aka ƙayyade. Don haka, yana da mahimmanci a shigar da madaidaicin sunan directory.

Yanzu lokaci ya yi da za a gwada rubutun. Bude shafin Gwaji kuma zaɓi Rubutun:

Binciken aikatawa da jawo buƙatun a Travis CI, Buddy da AppVeyor ta amfani da PVS-Studio
Kuna buƙatar liƙa lambar da ke gaba a cikin wannan fom:

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

Mu kula da sashin wannan lambar:

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

Ƙimar ƙayyadaddun ƙayyadaddun ƙimar umarnin pwd zuwa madaidaici wanda ya kamata ya adana wannan tsohuwar ƙimar da alama baƙon abu ne a kallon farko, duk da haka, zan bayyana komai yanzu.

Yayin kafa mai tantancewa a cikin AppVeyor, na ci karo da halin ban mamaki na mai nazarin. A gefe guda, komai yayi aiki daidai, amma binciken bai fara ba. Na dauki lokaci mai yawa don lura cewa muna cikin / gida / appveyor / ayyuka / testcalc / directory, kuma mai nazari ya tabbata cewa muna cikin / opt / appveyor / gina-agent /. Sai na gane cewa canjin $PWD yana ɗan karya kaɗan. Saboda wannan dalili, na sabunta ƙimar sa da hannu kafin fara bincike.

Sannan komai ya kasance kamar da:

Binciken aikatawa da jawo buƙatun a Travis CI, Buddy da AppVeyor ta amfani da PVS-Studio
Yanzu la'akari da guntu mai zuwa:

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

A ciki mun sami bambanci tsakanin rassan da aka bayyana buƙatar ja. Don yin wannan muna buƙatar masu canjin yanayi:

  • $APPVEYOR_PULL_REQUEST_NUMBER - jawo lambar neman;
  • $APPVEYOR_REPO_NAME - sunan mai amfani da wurin ajiyar aikin.

ƙarshe

Tabbas, ba mu yi la'akari da duk yuwuwar ci gaba da ayyukan haɗin kai ba, duk da haka, duk suna da takamaiman takamaiman aiki da juna. Ban da caching, kowane sabis yana yin nasa "keke", don haka komai ya bambanta.

Wani wuri, kamar a cikin Travis-CI, layukan layukan lamba da caching suna aiki mara kyau; wani wuri, kamar a cikin AppVeyor, kawai kuna buƙatar saka babban fayil a cikin saitunan; amma wani wuri kana buƙatar ƙirƙirar maɓallai na musamman kuma kuyi ƙoƙarin shawo kan tsarin don ba ku damar sake rubuta guntun da aka adana. Sabili da haka, idan kuna son saita bincike na buƙatun ja akan ci gaba da sabis na haɗin kai wanda ba a tattauna a sama ba, to da farko ku tabbata cewa ba za ku sami matsala tare da caching ba.

Na gode da kulawar ku. Idan wani abu bai yi aiki ba, jin daɗin rubuta mana a tallafi. Za mu ba da shawara da taimako.

Binciken aikatawa da jawo buƙatun a Travis CI, Buddy da AppVeyor ta amfani da PVS-Studio

Idan kuna son raba wannan labarin tare da masu sauraron Ingilishi, da fatan za a yi amfani da hanyar haɗin fassarar: Maxim Zvyagintsev. Binciken aikatawa da jawo buƙatun a Travis CI, Buddy da AppVeyor ta amfani da PVS-Studio.

source: www.habr.com

Add a comment