Pag-analisar sa mga commit ug pull request sa Travis CI, Buddy ug AppVeyor gamit ang PVS-Studio

Pag-analisar sa mga commit ug pull request sa Travis CI, Buddy ug AppVeyor gamit ang PVS-Studio
Sa PVS-Studio analyzer alang sa C ug C ++ nga mga pinulongan sa Linux ug macOS, sugod sa bersyon 7.04, usa ka opsyon sa pagsulay ang nagpakita aron masusi ang listahan sa mga piho nga mga file. Gamit ang bag-ong mode, mahimo nimong i-configure ang analyzer aron masusi ang mga commit ug pull requests. Kini nga artikulo magsulti kanimo kung giunsa ang pag-set up sa pagsusi sa lista sa nabag-o nga mga file sa usa ka proyekto sa GitHub sa ingon ka sikat nga mga sistema sa CI (Continuous Integration) sama sa Travis CI, Buddy ug AppVeyor.

Pagsusi sa lista sa file mode

PVS Studio usa ka himan alang sa pag-ila sa mga sayup ug potensyal nga mga kahuyangan sa source code sa mga programa nga gisulat sa C, C++, C# ug Java. Nagtrabaho sa 64-bit nga mga sistema sa Windows, Linux ug macOS.

Sa bersyon nga PVS-Studio 7.04 alang sa Linux ug macOS, usa ka mode alang sa pagsusi sa lista sa mga gigikanan nga file nagpakita. Naglihok kini alang sa mga proyekto kansang sistema sa pagtukod nagtugot kanimo sa pagmugna og usa ka file compile_commands.json. Gikinahanglan kini alang sa analisador sa pagkuha sa impormasyon mahitungod sa paghugpong sa gipiho nga mga file. Kung ang imong sistema sa pagtukod dili mosuporta sa paghimo sa compile_commands.json file, mahimo nimong sulayan ang paghimo sa ingon nga file gamit ang utility oso.

Usab, ang file list checking mode mahimong gamiton uban sa strace trace log sa compiler launches (pvs-studio-analyzer trace). Aron mahimo kini, kinahanglan nimo nga buhaton una ang usa ka bug-os nga pagtukod sa proyekto ug pagsubay niini aron ang tig-analisar mangolekta sa kompleto nga kasayuran bahin sa mga parameter sa pagtipon sa tanan nga mga file nga gisusi.

Bisan pa, kini nga kapilian adunay usa ka hinungdanon nga disbentaha - kinahanglan nimo nga himuon ang usa ka bug-os nga pagsubay sa pagtukod sa tibuuk nga proyekto matag higayon nga imong gipadagan kini, nga sa iyang kaugalingon sukwahi sa ideya sa dali nga pagsusi sa usa ka pasalig. O, kung imong gi-cache ang resulta sa pagsubay mismo, ang sunod nga pagdagan sa analisador mahimong dili kompleto kung ang istruktura sa dependency sa gigikanan nga mga file mausab pagkahuman sa pagsubay (pananglitan, usa ka bag-ong #include ang idugang sa usa sa mga gigikanan nga file).

Busa, dili namo girekomendar ang paggamit sa file list check mode uban sa trace log aron masusi ang commit o pull requests. Kung mahimo nimo ang usa ka incremental nga pagtukod kung magsusi sa usa ka commit, hunahunaa ang paggamit sa mode incremental nga pagtuki.

Ang lista sa mga source file alang sa pagtuki gitipigan sa usa ka text file ug gipasa sa analisador gamit ang parameter -S:

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

Kini nga payl nagtino sa paryente o hingpit nga mga agianan sa mga file, ug ang matag bag-ong file kinahanglan nga naa sa usa ka bag-ong linya. Gidawat nga ipiho dili lamang ang mga ngalan sa file alang sa pag-analisar, apan usab lainlaing teksto. Makita sa analisador nga dili kini usa ka file ug ibaliwala ang linya. Mahimong mapuslanon kini sa pagkomento kung ang mga file gipiho nga mano-mano. Bisan pa, kasagaran usa ka lista sa mga file ang mabuhat sa panahon sa pag-analisar sa CI, pananglitan, mahimo kini nga mga file gikan sa usa ka commit o pull request.

Karon, gamit kini nga mode, mahimo nimong susihon dayon ang bag-ong code sa dili pa kini makasulod sa punoan nga sanga sa pag-uswag. Aron masiguro nga ang sistema sa pag-scan motubag sa mga pasidaan sa analisador, ang utility tigbalhin-balhin gidugang ang bandila --indicate-pahimangno:

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

Uban niini nga bandila, ang converter magbalik sa usa ka non-zero code kung adunay mga pasidaan sa report sa analyzer. Gamit ang return code, mahimo nimong babagan ang usa ka precommit hook, commit, o pull request, ug ang namugna nga report sa analyzer mahimong ipakita, ipaambit, o ipadala pinaagi sa email.

Nota. Sa una nimong pagsugod sa pag-analisar sa usa ka lista sa mga file, ang tibuuk nga proyekto pag-analisar, tungod kay ang analista kinahanglan nga makamugna og usa ka file sa dependencies sa project source files sa header files. Kini usa ka bahin sa pag-analisar sa mga file sa C ug C++. Sa umaabot, ang dependency file mahimong ma-cache ug kini awtomatiko nga i-update sa analista. Ang bentaha sa check commits sa paggamit sa file list checking mode kay sa paggamit sa incremental analysis mode mao nga kinahanglan nimo nga i-cache ang file ug dili ang object files.

Kinatibuk-ang mga prinsipyo sa pagtuki sa hangyo sa pagbitad

Ang pag-analisar sa tibuok nga proyekto nagkinahanglan og daghang panahon, busa makatarunganon nga susihon lamang ang usa ka bahin niini. Ang problema mao nga kinahanglan nimo nga ibulag ang mga bag-ong file gikan sa nahabilin nga mga file sa proyekto.

Atong tan-awon ang usa ka pananglitan sa usa ka commit tree nga adunay duha ka sanga:

Pag-analisar sa mga commit ug pull request sa Travis CI, Buddy ug AppVeyor gamit ang PVS-Studio

Hunahunaa kana nga pasalig A1 naglangkob sa usa ka medyo dako nga kantidad sa code nga nasulayan na. Sa sayo pa naghimo kami og usa ka branch gikan sa commit A1 ug giusab ang pipila ka mga file.

Siyempre, namatikdan nimo kana pagkahuman A1 duha pa ka commit ang nahitabo, apan kini mga mergers usab sa ubang mga branch, tungod kay dili kami mopasalig sa agalon. Ug karon niabot ang panahon nga hotfix andam. Mao nga ang usa ka hangyo sa pagbitad alang sa paghiusa nagpakita B3 ΠΈ A3.

Siyempre, posible nga susihon ang tibuok nga resulta sa ilang paghiusa, apan kini makahurot sa panahon ug dili makatarunganon, tungod kay pipila lamang ka mga file ang giusab. Busa, mas episyente ang pag-analisar lamang sa mga nabag-o.

Aron mahimo kini, makuha namon ang kalainan tali sa mga sanga, nga naa sa HEAD sa sanga diin gusto namon nga maghiusa sa master:

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

$MERGE_BASE ato kining tan-awon sa detalye unya. Ang tinuod mao nga dili tanan nga serbisyo sa CI naghatag sa gikinahanglan nga impormasyon bahin sa database alang sa paghiusa, mao nga sa matag higayon nga ikaw adunay mga bag-ong paagi aron makuha kini nga datos. Kini gihulagway sa detalye sa ubos sa matag usa sa gihulagway nga mga serbisyo sa web.

Mao nga, nakuha namon ang kalainan tali sa mga sanga, o labi pa, usa ka lista sa mga ngalan sa file nga giusab. Karon kinahanglan namong ihatag ang file .pvs-pr.list (among gi-redirect ang output sa ibabaw niini) ngadto sa analyzer:

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

Human sa pagtuki, kinahanglan natong i-convert ang log file (PVS-Studio.log) ngadto sa sayon-basahon nga format:

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

Kini nga mando maglista sa mga sayup sa stderr (standard error message output).

Karon lang kinahanglan namon nga dili lamang magpakita sa mga sayup, apan ipahibalo usab ang among serbisyo alang sa asembliya ug pagsulay bahin sa presensya sa mga problema. Alang niini nga katuyoan, usa ka bandila ang gidugang sa converter -W (--indicate-pahimangno). Kung adunay labing menos usa ka analisador nga pasidaan, ang utility return code tigbalhin-balhin mabag-o sa 2, nga sa baylo magpahibalo sa serbisyo sa CI bahin sa presensya sa mga potensyal nga sayup sa mga file sa paghangyo sa pagbitad.

Travis CI

Ang configuration gihimo isip file .travis.yml. Alang sa kasayon, gitambagan ko ikaw nga ibutang ang tanan sa usa ka bulag nga script sa bash nga adunay mga function nga tawgon gikan sa file .travis.yml (bash script_name.sh function_name).

Atong idugang ang gikinahanglan nga code sa script sa bash, niining paagiha makakuha kita ug dugang nga gamit. Sa seksyon pag-instalar atong isulat ang mosunod:

install:
  - bash .travis.sh travis_install

Kung naa kay mga instruksyon, mahimo nimong ibalhin kini sa script, tangtangon ang mga hyphen.

Atong ablihan ang file .travis.sh ug idugang ang analista setting sa function 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 
}

Karon atong idugang sa seksyon script run analysis:

script:
  - bash .travis.sh travis_script

Ug sa 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
}

Kini nga code kinahanglan nga modagan human sa pagtukod sa proyekto, pananglitan, kung ikaw adunay pagtukod sa CMake:

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

Kini mahimong sama niini:

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
}

Tingali namatikdan na nimo kini nga mga variable sa palibot $TRAVIS_PULL_REQUEST ΠΈ $TRAVIS_BRANCH. Gipahayag sila ni Travis CI nga independente:

  • $TRAVIS_PULL_REQUEST nagtipig sa numero sa hangyo sa pagbitad o bakak nga mga, kon kini usa ka regular nga sanga;
  • $TRAVIS_REPO_SLUG nagtipig sa ngalan sa repository sa proyekto.

Ang algorithm alang niini nga function:

Pag-analisar sa mga commit ug pull request sa Travis CI, Buddy ug AppVeyor gamit ang PVS-Studio
Ang Travis CI motubag sa pagbalik sa mga code, mao nga ang presensya sa mga pasidaan magpahibalo sa serbisyo nga markahan ang commit nga adunay mga sayup.

Karon atong tan-awon pag-ayo kining linya sa code:

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

Ang tinuod mao nga ang Travis CI awtomatikong naghiusa sa mga sanga samtang nag-analisar sa usa ka hangyo sa pagbitad:

Pag-analisar sa mga commit ug pull request sa Travis CI, Buddy ug AppVeyor gamit ang PVS-Studio
Busa atong analisahon A4, ug dili B3->A3. Tungod niini nga bahin, kita kinahanglan nga kuwentahon ang kalainan sa A3, nga mao ang tukma nga tumoy sa sanga gikan sa Gigikanan.

Adunay usa ka importante nga detalye nga nahabilin - ang pag-cache sa mga dependency sa mga file sa header sa gihugpong nga mga yunit sa paghubad (*.c, *.cc, *.cpp, ug uban pa). Gikalkulo sa analisador kini nga mga dependensya sa diha nga kini unang gilusad sa paagi sa pagsusi sa usa ka lista sa mga file ug dayon i-save kini sa .PVS-Studio nga direktoryo. Gitugotan ka sa Travis CI nga i-cache ang mga folder, aron among i-save ang data sa direktoryo .PVS-Studio/:

cache:
  directories:
    - .PVS-Studio/

Kini nga code kinahanglan idugang sa file .travis.yml. Kini nga direktoryo nagtipig sa nagkalain-laing mga datos nga nakolekta human sa pagtuki, nga makapadali sa sunod nga pagdagan sa pagtuki sa listahan sa mga file o pag-analisa sa incremental. Kung wala kini nahimo, nan ang analista mag-analisar sa tanan nga mga file matag higayon.

buddy

Sama sa Travis CI, buddy naghatag ug abilidad sa awtomatik nga paghimo ug pagsulay sa mga proyekto nga gitipigan sa GitHub. Dili sama sa Travis CI, kini gi-configure sa web interface (ang suporta sa bash anaa), mao nga dili kinahanglan nga tipigan ang mga file sa pag-configure sa proyekto.

Una sa tanan, kinahanglan natong idugang ang usa ka bag-ong aksyon sa linya sa asembliya:

Pag-analisar sa mga commit ug pull request sa Travis CI, Buddy ug AppVeyor gamit ang PVS-Studio
Atong ipakita ang compiler nga gigamit sa pagtukod sa proyekto. Matikdi ang docker container nga na-install niini nga aksyon. Pananglitan, adunay espesyal nga sudlanan alang sa GCC:

Pag-analisar sa mga commit ug pull request sa Travis CI, Buddy ug AppVeyor gamit ang PVS-Studio
Karon atong i-install ang PVS-Studio ug ang gikinahanglan nga mga gamit:

Pag-analisar sa mga commit ug pull request sa Travis CI, Buddy ug AppVeyor gamit ang PVS-Studio
Atong idugang ang mosunod nga mga linya sa editor:

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

Karon adto kita sa Run tab (unang icon) ug idugang ang mosunod nga code sa katugbang nga editor field:

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

Kung gibasa nimo ang seksyon sa Travs-CI, nan kini nga code pamilyar na kanimo, bisan pa, karon adunay bag-ong yugto:

Pag-analisar sa mga commit ug pull request sa Travis CI, Buddy ug AppVeyor gamit ang PVS-Studio
Ang kamatuoran mao nga karon atong analisahon dili ang resulta sa paghiusa, apan ang HEAD sa sanga diin ang pull request gihimo:

Pag-analisar sa mga commit ug pull request sa Travis CI, Buddy ug AppVeyor gamit ang PVS-Studio
Mao nga naa kami sa usa ka conditional commit B3 ug kinahanglan natong makuha ang kalainan gikan sa 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

Alang sa pagtino A3 Atong gamiton ang GitHub API:

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

Gigamit namo ang mosunod nga mga variable nga gihatag ni Buddy:

  • $BUDDY_EXECUTION_PULL_REQEUST_NO - numero sa hangyo sa pagbitad;
  • $BUDDY_REPO_SLUG β€” usa ka kombinasyon sa username ug repository (pananglitan max/test).

Karon i-save nato ang mga pagbag-o gamit ang buton sa ubos ug i-enable ang pagtuki sa pull request:

Pag-analisar sa mga commit ug pull request sa Travis CI, Buddy ug AppVeyor gamit ang PVS-Studio
Dili sama sa Travis CI, dili na namo kinahanglan nga ipiho .pvs-studio alang sa caching, tungod kay ang Buddy awtomatik nga nag-cache sa tanan nga mga file alang sa sunod nga paglansad. Busa, ang kataposang butang nga nahibilin mao ang pag-save sa login ug password para sa PVS-Studio sa Buddy. Human sa pagluwas sa mga kausaban, kita dad-on balik sa Pipeline. Kinahanglan namon nga magpadayon sa pag-set up sa mga variable ug pagdugang usa ka login ug yawe alang sa PVS-Studio:

Pag-analisar sa mga commit ug pull request sa Travis CI, Buddy ug AppVeyor gamit ang PVS-Studio
Pagkahuman niini, ang dagway sa usa ka bag-ong hangyo sa pagbitad o pagpasalig mag-trigger sa pagrepaso. Kung ang usa ka commit adunay mga sayup, ipakita kini ni Buddy sa panid sa hangyo sa pagbitad.

AppVeyor

Ang pag-set up sa AppVeyor susama sa Buddy, tungod kay ang tanan mahitabo sa web interface ug dili na kinahanglan nga magdugang ug *.yml file sa project repository.

Adto ta sa tab sa Settings sa overview sa proyekto:

Pag-analisar sa mga commit ug pull request sa Travis CI, Buddy ug AppVeyor gamit ang PVS-Studio
Atong i-scroll down kini nga panid ug i-enable ang cache saving para sa pagkolekta sa mga pull request:

Pag-analisar sa mga commit ug pull request sa Travis CI, Buddy ug AppVeyor gamit ang PVS-Studio
Karon moadto kita sa tab sa Kalikopan, diin atong gipiho ang imahe alang sa asembliya ug ang kinahanglan nga mga variable sa palibot:

Pag-analisar sa mga commit ug pull request sa Travis CI, Buddy ug AppVeyor gamit ang PVS-Studio
Kung nabasa na nimo ang miaging mga seksyon, pamilyar ka kaayo niining duha nga mga variable - PVS_KEY ΠΈ PVS_USERNAME. Kung dili, tugoti ako nga pahinumdoman ka nga sila kinahanglan aron mapamatud-an ang lisensya sa PVS-Studio analyzer. Makita nato sila pag-usab sa mga script sa Bash sa umaabot.

Sa parehas nga panid sa ubos gipakita namon ang folder alang sa pag-cache:

Pag-analisar sa mga commit ug pull request sa Travis CI, Buddy ug AppVeyor gamit ang PVS-Studio
Kung dili namo buhaton kini, among analisahon ang tibuok nga proyekto imbes nga usa ka magtiayon nga mga file, apan makuha namo ang output gikan sa gipiho nga mga file. Busa, importante nga mosulod sa husto nga ngalan sa direktoryo.

Karon na ang panahon sa pagsulay sa script. Ablihi ang tab sa Pagsulay ug pilia ang Script:

Pag-analisar sa mga commit ug pull request sa Travis CI, Buddy ug AppVeyor gamit ang PVS-Studio
Kinahanglan nimong i-paste ang mosunod nga code sa kini nga porma:

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

Atong hatagan ug pagtagad ang mosunod nga bahin sa 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

Ang labi ka piho nga buluhaton sa kantidad sa pwd nga mando sa usa ka variable nga kinahanglan magtipig niini nga default nga kantidad ingon katingad-an sa una nga pagtan-aw, bisan pa, ipasabut nako ang tanan karon.

Samtang gipahimutang ang analisador sa AppVeyor, akong nasugatan ang hilabihan ka katingad-an nga kinaiya sa analisador. Sa usa ka bahin, ang tanan nagtrabaho sa husto, apan ang pag-analisar wala magsugod. Gigugol nako ang daghang oras nga nakamatikod nga naa kami sa /home/appveyor/projects/testcalc/ directory, ug sigurado ang analista nga naa kami sa /opt/appveyor/build-agent/. Unya nakaamgo ko nga ang $PWD variable namakak og gamay. Tungod niini nga hinungdan, mano-mano ko nga gi-update ang kantidad niini sa wala pa magsugod ang pagtuki.

Ug unya ang tanan sama sa kaniadto:

Pag-analisar sa mga commit ug pull request sa Travis CI, Buddy ug AppVeyor gamit ang PVS-Studio
Karon tagda ang mosunod nga tipik:

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

Diha niini atong makuha ang kalainan tali sa mga sanga diin gipahayag ang hangyo sa pagbitad. Aron mahimo kini kinahanglan namon ang mosunod nga mga variable sa palibot:

  • $APPVEYOR_PULL_REQUEST_NUMBER β€” numero sa hangyo sa pagbitad;
  • $APPVEYOR_REPO_NAME - user name ug project repository.

konklusyon

Siyempre, wala namo gikonsiderar ang tanan nga posible nga padayon nga serbisyo sa pag-integrate, bisan pa, silang tanan adunay parehas nga mga detalye sa operasyon sa usag usa. Gawas sa caching, ang matag serbisyo naghimo sa kaugalingon nga "bisikleta", busa ang tanan kanunay nga lahi.

Sa usa ka dapit, sama sa Travis-CI, ang usa ka magtiayon nga mga linya sa code ug caching nagtrabaho nga walay kapuslanan; bisan asa, sama sa AppVeyor, kinahanglan nimo nga ipiho ang folder sa mga setting; apan sa usa ka dapit kinahanglan nimo nga maghimo ug talagsaon nga mga yawe ug pagsulay sa pagkombinser sa sistema sa paghatag kanimo sa oportunidad sa pag-overwrite sa naka-cache nga tipik. Busa, kung gusto nimong i-set up ang pag-analisar sa mga hangyo sa pagbitad sa usa ka padayon nga serbisyo sa panagsama nga wala gihisgutan sa ibabaw, nan siguroha una nga wala ka'y ​​​​problema sa pag-cache.

Salamat sa imong pagtagad. Kung adunay usa ka butang nga dili molihok, palihug pagsulat kanamo sa pagsuporta. Magtambag ug motabang mi.

Pag-analisar sa mga commit ug pull request sa Travis CI, Buddy ug AppVeyor gamit ang PVS-Studio

Kung gusto nimong ipaambit kini nga artikulo sa usa ka tigpaminaw nga nagsultig English, palihug gamita ang link sa paghubad: Maxim Zvyagintsev. Pag-analisar sa mga commit ug pull request sa Travis CI, Buddy ug AppVeyor gamit ang PVS-Studio.

Source: www.habr.com

Idugang sa usa ka comment