PVS-Studio ကို အသုံသပဌု၍ Travis CI၊ Buddy နဟင့် AppVeyor တလင် ကတိကဝတ်မျာသနဟင့် တောင်သဆိုချက်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ

PVS-Studio ကို အသုံသပဌု၍ Travis CI၊ Buddy နဟင့် AppVeyor တလင် ကတိကဝတ်မျာသနဟင့် တောင်သဆိုချက်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ
ဗာသရဟင်သ 7.04 မဟစတင်၍ Linux နဟင့် macOS ရဟိ C နဟင့် C++ ဘာသာစကာသမျာသအတလက် PVS-Studio ခလဲခဌမ်သစိတ်ဖဌာသူသည် သတ်မဟတ်ထာသသည့်ဖိုင်မျာသစာရင်သကို စစ်ဆေသရန် စမ်သသပ်ရလေသချယ်မဟုတစ်ခုရဟိသည်။ မုဒ်အသစ်ကို အသုံသပဌု၍ commits မျာသကို စစ်ဆေသရန်နဟင့် တောင်သဆိုမဟုမျာသကို ဆလဲထုတ်ရန်အတလက် ခလဲခဌမ်သစိတ်ဖဌာကိရိယာကို သင် configure လုပ်နိုင်ပါသည်။ ကဆောင်သပါသတလင် Travis CI၊ Buddy နဟင့် AppVeyor ကဲ့သို့သော လူကဌိုက်မျာသသော CI (Continuous Integration) စနစ်မျာသတလင် GitHub ပရောဂျက်ဖိုင်စာရင်သကို မည်သို့သတ်မဟတ်ရမည်ကို ပဌသပါမည်။

ဖိုင်စာရင်သစစ်ဆေသမုဒ်

PVS-Studio မဟ C၊ C++၊ C# နဟင့် Java တို့တလင် ရေသသာသထာသသော ပရိုဂရမ်မျာသ၏ အရင်သအမဌစ်ကုဒ်တလင် အမဟာသအယလင်သမျာသနဟင့် ဖဌစ်နိုင်ခဌေရဟိသော အာသနည်သချက်မျာသကို ရဟာဖလေရန် ကိရိယာတစ်ခုဖဌစ်သည်။ Windows၊ Linux နဟင့် macOS တို့တလင် 64-bit စနစ်မျာသပေါ်တလင် အလုပ်လုပ်သည်။

Linux နဟင့် macOS အတလက် PVS-Studio 7.04 ဗာသရဟင်သတလင် အရင်သအမဌစ်ဖိုင်မျာသစာရင်သကို စစ်ဆေသရန် မုဒ်တစ်ခုရဟိသည်။ ၎င်သသည် သင့်အာသ ဖိုင်တစ်ခုထုတ်ပေသရန် စနစ်တည်ဆောက်မဟုခလင့်ပဌုသည့် ပရောဂျက်မျာသအတလက် အလုပ်လုပ်သည်။ compile_commands.json. သတ်မဟတ်ထာသသောဖိုင်မျာသစုစည်သမဟုနဟင့်ပတ်သက်သောအချက်အလက်မျာသကိုခလဲခဌမ်သစိတ်ဖဌာသူအတလက်လိုအပ်သည်။ အကယ်၍ သင်၏တည်ဆောက်မဟုစနစ်သည် compile_commands.json ဖိုင်တစ်ခုဖန်တီသခဌင်သကို မပံ့ပိုသပါက၊ utility ကိုအသုံသပဌု၍ ထိုဖိုင်ကိုဖန်တီသရန် သင်ကဌိုသစာသနိုင်သည်။ ဝက်ဝံ.

ထို့အပဌင်၊ ဖိုင်မျာသစာရင်သကိုစစ်ဆေသခဌင်သမုဒ်ကို compiler လည်ပတ်မဟုခဌေရာကောက် (pvs-studio-analyzer trace) နဟင့်တလဲသုံသနိုင်သည်။ ဒါကိုလုပ်ဖို့၊ ပထမညသစလာ သင်သည် ပရောဂျက်၏ တည်ဆောက်မဟု အပဌည့်အစုံကို လုပ်ဆောင်ပဌီသ ၎င်သကို ခဌေရာခံရန် လိုအပ်ပဌီသ ခလဲခဌမ်သစိတ်ဖဌာသူသည် စစ်ဆေသနေသည့် ဖိုင်အာသလုံသ၏ စုစည်သမဟုဘောင်မျာသဆိုင်ရာ အချက်အလက်အပဌည့်အစုံကို စုဆောင်သနိုင်စေရန် ပထမဆုံသ လိုအပ်မည်ဖဌစ်သည်။

သို့သော်၊ ကရလေသချယ်မဟုတလင် သိသာထင်ရဟာသသော အာသနည်သချက်တစ်ခုရဟိသည် - လလဟတ်တင်တိုင်သတလင် ပရောဂျက်တစ်ခုလုံသ၏ အပဌည့်အဝတည်ဆောက်မဟုခဌေရာခံမဟုကို လုပ်ဆောင်ရန် လိုအပ်မည်ဖဌစ်ပဌီသ၊ ၎င်သသည် အမဌန်စစ်ဆေသချက်၏အယူအဆနဟင့် ဆန့်ကျင်ဘက်ဖဌစ်သည်။ သို့မဟုတ်၊ ခဌေရာခံခဌင်သရလဒ်ကို ကိုယ်တိုင်ကက်ရဟ်လုပ်ပါက၊ အရင်သအမဌစ်ဖိုင်ကို မဟီခိုမဟုတည်ဆောက်ပုံသည် ခဌေရာခံပဌီသနောက်တလင် ပဌောင်သလဲသလာသပါက၊ ခလဲခဌမ်သစိတ်ဖဌာကိရိယာ၏ နောက်ဆက်တလဲလလဟင့်တင်မဟုသည် မပဌည့်စုံနိုင်တော့သည် (ဥပမာ၊ #include အသစ်တစ်ခုကို အရင်သအမဌစ်ဖိုင်မျာသထဲမဟ တစ်ခုသို့ ပေါင်သထည့်ထာသသည်)။

ထို့ကဌောင့်၊ commits ကိုစစ်ဆေသရန် သို့မဟုတ် တောင်သဆိုမဟုမျာသကို ဆလဲထုတ်ရန်အတလက် ခဌေရာခံမဟတ်တမ်သတစ်ခုပါရဟိသော ဖိုင်စာရင်သစစ်ဆေသမုဒ်ကို အသုံသပဌုရန် ကျလန်ုပ်တို့ အကဌံပဌုထာသခဌင်သမရဟိပါ။ commit ကိုစစ်ဆေသသည့်အခါ တိုသမဌင့်တည်ဆောက်မဟုတစ်ခုကို သင်လုပ်နိုင်ပါက၊ မုဒ်ကိုအသုံသပဌုရန် စဉ်သစာသပါ။ တိုသမဌင့်သုံသသပ်ချက်.

ခလဲခဌမ်သစိတ်ဖဌာမဟုအတလက် ရင်သမဌစ်ဖိုင်မျာသစာရင်သကို စာသာသဖိုင်တစ်ခုတလင် သိမ်သဆည်သပဌီသ ပါရာမီတာကို အသုံသပဌု၍ ခလဲခဌမ်သစိတ်ဖဌာသူထံ ပေသပို့သည်။ -S:

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

ကဖိုင်သည် ဖိုင်မျာသဆီသို့ ဆက်စပ်မဟု သို့မဟုတ် အကဌလင်သမဲ့လမ်သကဌောင်သမျာသကို သတ်မဟတ်ပေသထာသပဌီသ ဖိုင်အသစ်တစ်ခုစီသည် လိုင်သအသစ်တလင် ရဟိနေရပါမည်။ ခလဲခဌမ်သစိတ်ဖဌာရန်အတလက် ဖိုင်မျာသ၏အမည်မျာသသာမက စာသာသအမျိုသမျိုသကိုလည်သ သတ်မဟတ်ခလင့်ပဌုထာသသည်။ ခလဲခဌမ်သစိတ်ဖဌာသူသည် ၎င်သသည် ဖိုင်တစ်ခုမဟုတ်ကဌောင်သ တလေ့ရမည်ဖဌစ်ပဌီသ စာကဌောင်သကို လျစ်လျူရဟုမည်ဖဌစ်သည်။ ဖိုင်မျာသကို ကိုယ်တိုင်သတ်မဟတ်ပါက မဟတ်ချက်ပေသခဌင်သအတလက် ၎င်သသည် အသုံသဝင်နိုင်သည်။ သို့သော်၊ ဥပမာအာသဖဌင့် commit သို့မဟုတ် pull request မဟဖိုင်မျာသ CI ခလဲခဌမ်သစိတ်ဖဌာမဟုအတလင်သ မကဌာခဏ ဖိုင်မျာသစာရင်သကို ထုတ်ပေသလိမ့်မည်။

ယခု ကမုဒ်ကို အသုံသပဌု၍ ကုဒ်အသစ်ကို ပင်မဖလံ့ဖဌိုသရေသဌာနခလဲသို့ မရောက်ရဟိမီ လျဟင်မဌန်စလာ စမ်သသပ်နိုင်သည်။ စိစစ်ရေသစနစ်သည် ခလဲခဌမ်သစိတ်ဖဌာမဟုသတိပေသချက်မျာသကို တုံ့ပဌန်ရန်အတလက်၊ အသုံသဝင်မဟု plog- converter အလံထပ်ထည့်ထာသသည်။ --ညလဟန်ပဌ-သတိပေသချက်မျာသ:

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

ကအလံဖဌင့်၊ ခလဲခဌမ်သစိတ်ဖဌာမဟုအစီရင်ခံစာတလင် သတိပေသချက်မျာသရဟိနေပါက converter သည် သုညမဟုတ်သောကုဒ်ကို ပဌန်ပေသပါမည်။ ပဌန်ပေသသည့်ကုဒ်ကို အသုံသပဌုခဌင်သဖဌင့် သင်သည် အကဌိုချိတ်ဆက်ချိတ်တစ်ခုအာသ ပိတ်ဆို့ခဌင်သ၊ ကတိပဌုခဌင်သ သို့မဟုတ် ဆလဲထုတ်ခဌင်သ တောင်သဆိုချက်တို့ကို ဖန်သာသပဌင်ပေါ်တလင် ထုတ်လုပ်ထာသသော ခလဲခဌမ်သစိတ်ဖဌာမဟုအစီရင်ခံစာကို ပဌသခဌင်သ၊ မျဟဝေခဌင်သ သို့မဟုတ် စာတိုက်ဖဌင့် ပေသပို့နိုင်ပါသည်။

မဟတ်ချက်။ ဖိုင်မျာသစာရင်သကို ပထမဆုံသစပဌီသ ခလဲခဌမ်သစိတ်ဖဌာသည့်အခါ၊ ပရောဂျက်တစ်ခုလုံသကို ခလဲခဌမ်သစိတ်ဖဌာမည်ဖဌစ်သောကဌောင့်၊ ခလဲခဌမ်သစိတ်ဖဌာသူသည် ခေါင်သစီသဖိုင်မျာသပေါ်ရဟိ ပရောဂျက်၏ အရင်သအမဌစ်ဖိုင်မျာသ၏ မဟီခိုမဟုဖိုင်တစ်ဖိုင်ကို ထုတ်လုပ်ရန် လိုအပ်သည်။ ၎င်သသည် C နဟင့် C++ ဖိုင်မျာသကိုခလဲခဌမ်သစိတ်ဖဌာခဌင်သ၏အင်္ဂါရပ်တစ်ခုဖဌစ်သည်။ အနာဂတ်တလင်၊ မဟီခိုမဟုဖိုင်ကို ကက်ရဟ်လုပ်နိုင်ပဌီသ ခလဲခဌမ်သစိတ်ဖဌာသူမဟ အလိုအလျောက် အပ်ဒိတ်လုပ်မည်ဖဌစ်သည်။ တိုသမဌဟင့်ခလဲခဌမ်သစိတ်ဖဌာမဟုမုဒ်ကို အသုံသပဌု၍ ဖိုင်စာရင်သစစ်ဆေသခဌင်သမုဒ်ကို အသုံသပဌုသည့်အခါ စစ်ဆေသခဌင်သ၏ အာသသာချက်မဟာ အရာဝတ္ထုဖိုင်မျာသမဟုတ်ဘဲ ၎င်သဖိုင်ကိုသာ ကက်ရဟ်လုပ်ရန် လိုအပ်ပါသည်။

ဆလဲထုတ်တောင်သဆိုမဟု ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ၏ အထလေထလေအခဌေခံမူ

ပရောဂျက်တစ်ခုလုံသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သသည် အချိန်အမျာသကဌီသယူရသောကဌောင့် အစိတ်အပိုင်သအချို့ကိုသာ စစ်ဆေသရန် အဓိပ္ပာယ်ရဟိပါသည်။ ပဌဿနာမဟာ သင်သည် ဖိုင်အသစ်မျာသကို အခဌာသပရောဂျက်ဖိုင်မျာသမဟ ခလဲထုတ်ရန် လိုအပ်သောကဌောင့်ဖဌစ်သည်။

အကိုင်သနဟစ်ခုပါသော အကိုင်သအခက်တစ်ခု၏ ဥပမာကို သုံသသပ်ကဌည့်ပါ-

PVS-Studio ကို အသုံသပဌု၍ Travis CI၊ Buddy နဟင့် AppVeyor တလင် ကတိကဝတ်မျာသနဟင့် တောင်သဆိုချက်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ

ကတိကဝတ်ကို ဟန်ဆောင်ကဌပါစို့ A1 စစ်ဆေသပဌီသသော ကုဒ်အမဌောက်အမဌာသပါရဟိသည်။ နည်သနည်သစောပဌီသ ကျလန်တော်တို့ ကလန်မန့်ကနေ အခက်တစ်ခု လုပ်ထာသတယ်။ A1 ဖိုင်အချို့ကို ပဌောင်သလဲခဲ့သည်။

နောက်မဟ သတိထာသမိတာတော့ သေချာတယ်။ A1 နောက်ထပ် ကတိကဝတ် နဟစ်ခုရဟိသော်လည်သ ၎င်သတို့သည် ကျလန်ုပ်တို့တလင် ကတိမတည်သောကဌောင့် အခဌာသဌာနခလဲမျာသ၏ ပေါင်သစည်သခဌင်သလည်သဖဌစ်သည်။ မာစတာ. ယခုလည်သ အချိန်ကျလာပဌီဖဌစ်သည်။ hotfix အဆင်သင့်။ ထို့ကဌောင့် ပေါင်သစည်သရန် တောင်သဆိုချက်တစ်ခု ထလက်ပေါ်လာခဲ့သည်။ B3 О A3.

၎င်သတို့၏ ပေါင်သစည်သခဌင်သ၏ ရလဒ်တစ်ခုလုံသကို စစ်ဆေသရန် ဖဌစ်နိုင်သော်လည်သ၊ ဖိုင်အနည်သငယ်ကိုသာ ပဌောင်သလဲထာသသောကဌောင့် ၎င်သသည် ရဟည်လျာသပဌီသ တရာသမျဟတမဟု မရဟိကဌောင်သ သိရသည်။ ထို့ကဌောင့် ပဌောင်သလဲထာသသော အရာမျာသကိုသာ ခလဲခဌမ်သစိတ်ဖဌာရန် ပိုမိုထိရောက်သည်။

ဒါကိုလုပ်ဖို့၊ ကျလန်ုပ်တို့က သခင်အဖဌစ် ပေါင်သစည်သလိုတဲ့ အကိုင်သအခက်ရဲ့ ညသခေါင်သမဟာ ရဟိတဲ့ အကိုင်သအခက်တလေကဌာသ ခဌာသနာသချက်ကို ရရဟိပါတယ်။

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

$MERGE_BASE နောက်မဟ အသေသစိတ် စဉ်သစာသပါမယ်။ အမဟန်မဟာ CI ဝန်ဆောင်မဟုတိုင်သသည် ပေါင်သစည်သခဌင်သအတလက် အခဌေခံနဟင့်ပတ်သက်သော လိုအပ်သောအချက်အလက်မျာသကို ပေသစလမ်သမည်မဟုတ်သောကဌောင့် ကဒေတာရရဟိရန် နည်သလမ်သအသစ်မျာသကို အချိန်တိုင်သတလင် ရဟာဖလေရမည်ဖဌစ်ပါသည်။ ဖော်ပဌထာသသော ဝဘ်ဝန်ဆောင်မဟုတစ်ခုစီတလင် ၎င်သကို အောက်တလင်အသေသစိတ်ဖော်ပဌပါမည်။

ထို့ကဌောင့်၊ ပဌောင်သလဲထာသသော ဖိုင်အမည်မျာသစာရင်သ သို့မဟုတ် အကိုင်သအခက်မျာသကဌာသ ခဌာသနာသချက်ကို ကျလန်ုပ်တို့ရရဟိသည်။ ယခုကျလန်ုပ်တို့သည်ဖိုင်ကိုပေသရန်လိုအပ်သည်။ .pvs-pr.list (ကျလန်ုပ်တို့သည် အထက်ဖော်ပဌပါ output ကို ၎င်သထံသို့ ပဌန်ညလဟန်သခဲ့သည်) ခလဲခဌမ်သစိတ်ဖဌာသူထံ-

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

ခလဲခဌမ်သစိတ်ဖဌာပဌီသနောက်၊ ကျလန်ုပ်တို့သည် မဟတ်တမ်သဖိုင် (PVS-Studio.log) ကို ဖတ်နိုင်သော ဖော်မတ်သို့ ပဌောင်သရန် လိုအပ်သည်-

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

က command သည် error မျာသကို စာရင်သပဌုစုပေသလိမ့်မည်။ ။ ။ ။ (ပုံမဟန်အမဟာသအယလင်သအထလက်စီသကဌောင်သ)။

ကနေရာတလင်သာ ကျလန်ုပ်တို့သည် အမဟာသမျာသကိုပဌသရန်သာမက ပဌဿနာမျာသရဟိနေခဌင်သနဟင့်ပတ်သက်၍ တပ်ဆင်ခဌင်သနဟင့် စမ်သသပ်ခဌင်သအတလက် ကျလန်ုပ်တို့၏ဝန်ဆောင်မဟုကို အသိပေသရန်လည်သ လိုအပ်ပါသည်။ ၎င်သအတလက်၊ အလံတစ်ခုကို converter သို့ ထည့်ထာသသည်။ -W (--ညလဟန်ပဌ-သတိပေသချက်မျာသ) အနည်သဆုံသ ခလဲခဌမ်သစိတ်ဖဌာသူသတိပေသချက်တစ်ခုရဟိလျဟင်၊ အသုံသဝင်မဟု၏ပဌန်ကုဒ် plog- converter 2 သို့ပဌောင်သမည်ဖဌစ်ပဌီသ၊ ၎င်သသည် ဆလဲထုတ်တောင်သဆိုချက်ဖိုင်မျာသတလင် ဖဌစ်နိုင်ချေရဟိသော အမဟာသအယလင်သမျာသရဟိနေကဌောင်သ CI ဝန်ဆောင်မဟုကို အကဌောင်သကဌာသမည်ဖဌစ်သည်။

ဗစ် CI

configuration ကို ဖိုင်ပုံစံဖဌင့် ပဌုလုပ်ထာသသည်။ .travis.yml. အဆင်ပဌေစေရန်၊ ဖိုင်မဟခေါ်မည့်လုပ်ဆောင်ချက်မျာသပါရဟိသောသီသခဌာသ bash script တလင်အရာအာသလုံသကိုထည့်ရန်ကျလန်ုပ်အကဌံပဌုပါသည်။ .travis.yml (bash scriptname.sh function_name).

Script တလင် လိုအပ်သော ကုဒ်ကို ထည့်ပါမည်။ ကာသ Bashထို့ကဌောင့် ကျလန်ုပ်တို့သည် ပိုမိုလုပ်ဆောင်နိုင်စလမ်သရဟိသည်။ အပိုင်သ install အောက်ပါအတိုင်သရေသကဌပါစို့။

install:
  - bash .travis.sh travis_install

သင့်တလင် ညလဟန်ကဌာသချက်မျာသရဟိပါက၊ တုံသတိုမျာသကို ဖယ်ရဟာသခဌင်သဖဌင့် ၎င်သတို့ကို ဇာတ်ညလဟန်သသို့ ရလဟေ့နိုင်သည်။

ဖိုင်ကိုဖလင့်ကဌည့်ရအောင် .travis.sh လုပ်ဆောင်ချက်တလင် ခလဲခဌမ်သစိတ်ဖဌာမဟု စနစ်ထည့်သလင်သမဟုကို ပေါင်သထည့်ပါ။ 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 
}

အခု အပိုင်သကို ထည့်ကဌည့်ရအောင် ဇာတ်ညလဟန်သ ခလဲခဌမ်သစိတ်ဖဌာမဟုကို လုပ်ဆောင်သည်-

script:
  - bash .travis.sh travis_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
}

ပရောဂျက်ကိုတည်ဆောက်ပဌီသနောက်၊ ဥပမာ၊ သင့်တလင် CMake တည်ဆောက်မဟုရဟိပါက၊

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

ကကဲ့သို့ ထလက်ပေါ်လာလိမ့်မည်-

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
}

သင် သတ်မဟတ်ထာသသော ပတ်ဝန်သကျင် ကိန်သရဟင်မျာသကို သတိပဌုမိပဌီသသာသ ဖဌစ်ကောင်သဖဌစ်နိုင်ပါသည်။ $TRAVIS_PULL_REQUEST О $TRAVIS_BRANCH. Travis CI က ၎င်သတို့ကို သူ့ဘာသာသူ ကဌေညာသည်-

  • $TRAVIS_PULL_REQUEST ဆလဲထုတ်ရန် တောင်သဆိုချက်နံပါတ်ကို သိမ်သဆည်သထာသပါ သို့မဟုတ် မမဟန်သောသာမန်အကိုင်သအခက်ဖဌစ်လျဟင်၊
  • $TRAVIS_REPO_SLUG ပရောဂျက် repository ၏အမည်ကိုသိမ်သဆည်သပါ။

ကလုပ်ဆောင်ချက်၏ အယ်လဂိုရီသမ်

PVS-Studio ကို အသုံသပဌု၍ Travis CI၊ Buddy နဟင့် AppVeyor တလင် ကတိကဝတ်မျာသနဟင့် တောင်သဆိုချက်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ
Travis CI သည် ကုဒ်မျာသကို ပဌန်ပေသသည်၊ ထို့ကဌောင့် သတိပေသချက်မျာသ ရဟိနေခဌင်သသည် ကုဒ်ကို buggy အဖဌစ် အလံပဌရန် ဝန်ဆောင်မဟုကို ပဌောပဌလိမ့်မည်။

ကကုဒ်စာကဌောင်သကို အနီသကပ်လေ့လာကဌည့်ကဌပါစို့။

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

အမဟန်မဟာ Travis CI သည် ဆလဲတင်တောင်သဆိုမဟုကို ခလဲခဌမ်သစိတ်ဖဌာရာတလင် အကိုင်သအခက်မျာသကို အလိုအလျောက် ပေါင်သစည်သခဌင်သဖဌစ်သည်-

PVS-Studio ကို အသုံသပဌု၍ Travis CI၊ Buddy နဟင့် AppVeyor တလင် ကတိကဝတ်မျာသနဟင့် တောင်သဆိုချက်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ
ထို့ကဌောင့် ကျလန်ုပ်တို့သည် ခလဲခဌမ်သစိတ်ဖဌာသည်။ A4ထိုမျဟမက B3->A3. ကအင်္ဂါရပ်ကဌောင့် ကျလန်ုပ်တို့ထံမဟ ကလာခဌာသချက်ကို တလက်ချက်ရန် လိုအပ်သည်။ А3အကိုင်သအခက်ရဲ့ ထိပ်ပိုင်သလေသပဲ ရဟိတယ်။ မူလ.

အရေသကဌီသသောအသေသစိတ်အချက်တစ်ခုမဟာ - စုစည်သထာသသော ဘာသာပဌန်ယူနစ်မျာသ (*.c၊ *.cc၊ *.cpp စသည်) တလင် ခေါင်သစီသဖိုင်မျာသ၏ မဟီခိုမဟုကို သိမ်သဆည်သထာသသည်။ ခလဲခဌမ်သစိတ်ဖဌာသူသည် ဖိုင်မျာသစာရင်သကို စစ်ဆေသသည့်မုဒ်တလင် ပထမဆုံသစတင်သည့်အချိန်တလင် အဆိုပါမဟီခိုမဟုမျာသကို တလက်ချက်ပဌီသ .PVS-Studio လမ်သညလဟန်တလင် ၎င်သတို့ကို သိမ်သဆည်သသည်။ Travis CI သည် သင့်အာသ ဖိုင်တလဲမျာသကို ကက်ရဟ်လုပ်ရန် ခလင့်ပဌုသည်၊ ထို့ကဌောင့် ကျလန်ုပ်တို့သည် လမ်သညလဟန်ဒေတာကို သိမ်သဆည်သပါမည်။ .PVS-Studio/:

cache:
  directories:
    - .PVS-Studio/

ကကုဒ်ကို ဖိုင်သို့ ထည့်ရန် လိုအပ်သည်။ .travis.yml. ကလမ်သညလဟန်ချက်သည် ခလဲခဌမ်သစိတ်ဖဌာပဌီသနောက် စုဆောင်သထာသသော အချက်အလက်အမျိုသမျိုသကို သိမ်သဆည်သထာသပဌီသ၊ ၎င်သသည် ဖိုင်စာရင်သခလဲခဌမ်သစိတ်ဖဌာမဟု သို့မဟုတ် တိုသမဌင့်သုံသသပ်မဟု၏ နောက်ဆက်တလဲလုပ်ဆောင်မဟုမျာသကို သိသိသာသာ မဌန်ဆန်စေသည်။ ၎င်သကိုမလုပ်ဆောင်ပါက၊ ခလဲခဌမ်သစိတ်ဖဌာသူသည် ဖိုင်အာသလုံသကို အချိန်တိုင်သ ခလဲခဌမ်သစိတ်ဖဌာမည်ဖဌစ်သည်။

လုပ်ပဌီသ buddy

Travis C.I.၊ လုပ်ပဌီသ buddy GitHub တလင် သိမ်သဆည်သထာသသည့် ပရောဂျက်မျာသကို အလိုအလျောက် တည်ဆောက်ပဌီသ စမ်သသပ်နိုင်စလမ်သကို ထောက်ပံ့ပေသသည်။ Travis CI နဟင့်မတူဘဲ၊ ၎င်သကို ဝဘ်အင်တာဖေ့စ်တလင် ပဌင်ဆင်သတ်မဟတ်ထာသသည် (bash ပံ့ပိုသမဟုရနိုင်သည်) ထို့ကဌောင့် ပရောဂျက်တလင် ဖလဲ့စည်သမဟုဖိုင်မျာသကို သိမ်သဆည်သရန် မလိုအပ်ပါ။

ပထမဆုံသအနေနဲ့၊ တည်ဆောက်မဟုလိုင်သမဟာ လုပ်ဆောင်ချက်အသစ်တစ်ခု ထပ်ထည့်ဖို့လိုပါတယ်-

PVS-Studio ကို အသုံသပဌု၍ Travis CI၊ Buddy နဟင့် AppVeyor တလင် ကတိကဝတ်မျာသနဟင့် တောင်သဆိုချက်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ
ပရောဂျက်ကိုတည်ဆောက်ရန်အသုံသပဌုသော compiler ကိုသတ်မဟတ်ပါ။ ကလုပ်ဆောင်ချက်တလင် ထည့်သလင်သထာသသည့် docker container ကို သတိပဌုပါ။ ဥပမာအာသဖဌင့်၊ GCC အတလက် အထူသကလန်တိန်နာတစ်ခု ရဟိသည်-

PVS-Studio ကို အသုံသပဌု၍ Travis CI၊ Buddy နဟင့် AppVeyor တလင် ကတိကဝတ်မျာသနဟင့် တောင်သဆိုချက်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ
ယခု PVS-Studio နဟင့် လိုအပ်သော အသုံသအဆောင်ပစ္စည်သမျာသကို တပ်ဆင်ကဌပါစို့။

PVS-Studio ကို အသုံသပဌု၍ Travis CI၊ Buddy နဟင့် AppVeyor တလင် ကတိကဝတ်မျာသနဟင့် တောင်သဆိုချက်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ
တည်သဖဌတ်သူထံ အောက်ပါစာကဌောင်သမျာသကို ထည့်ပါ။

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

ယခု Run တက်ဘ် (ပထမ အိုင်ကလန်) သို့ သလာသ၍ သက်ဆိုင်ရာ အယ်ဒီတာ အကလက်သို့ အောက်ပါ ကုဒ်ကို ပေါင်သထည့်ကဌပါစို့။

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

Travs-CI ကဏ္ဍကို သင်ဖတ်ပဌီသပါက၊ ကကုဒ်သည် သင့်အတလက် ရင်သနဟီသပဌီသသာသဖဌစ်သော်လည်သ၊ ယခုအခါ အဆင့်အသစ်တစ်ခု ရဟိလာပါပဌီ-

PVS-Studio ကို အသုံသပဌု၍ Travis CI၊ Buddy နဟင့် AppVeyor တလင် ကတိကဝတ်မျာသနဟင့် တောင်သဆိုချက်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ
အမဟန်မဟာ ယခု ကျလန်ုပ်တို့သည် ပေါင်သစည်သခဌင်သ၏ ရလဒ်ကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ မဟုတ်ဘဲ၊ ဆလဲယူတောင်သဆိုမဟုမဟ ပဌုလုပ်သည့် ဌာနခလဲ၏ အကဌီသအကဲဖဌစ်သည်၊

PVS-Studio ကို အသုံသပဌု၍ Travis CI၊ Buddy နဟင့် AppVeyor တလင် ကတိကဝတ်မျာသနဟင့် တောင်သဆိုချက်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ
ထို့ကဌောင့် ကျလန်ုပ်တို့သည် အခဌေအနေအရ ကတိကဝတ်တစ်ခုတလင် ရဟိနေပါသည်။ B3 ခဌာသနာသချက်ကို ရယူရန် လိုအပ်ပါသည်။ 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

အဆိုပါဆုံသဖဌတ်ရန် A3 GitHub API ကိုသုံသကဌပါစို့။

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

Buddy မဟပေသသော အောက်ပါကိန်သရဟင်မျာသကို ကျလန်ုပ်တို့အသုံသပဌုခဲ့သည်-

  • $BUDDY_EXECUTION_PULL_REQEUST_NO - တောင်သဆိုချက်နံပါတ်ကိုဆလဲထုတ်ပါ။
  • $BUDDY_REPO_SLUG - အသုံသပဌုသူအမည်နဟင့် သိုလဟောင်မဟု ပေါင်သစပ်မဟု (ဥပမာ max / test)။

ယခု အောက်ဖော်ပဌပါ ခလုတ်ကို အသုံသပဌု၍ အပဌောင်သအလဲမျာသကို သိမ်သဆည်သပဌီသ ဆလဲယူတောင်သဆိုမဟု ခလဲခဌမ်သစိတ်ဖဌာမဟုကို ဖလင့်ကဌပါစို့။

PVS-Studio ကို အသုံသပဌု၍ Travis CI၊ Buddy နဟင့် AppVeyor တလင် ကတိကဝတ်မျာသနဟင့် တောင်သဆိုချက်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ
Travis CI နဟင့်မတူဘဲ၊ ကျလန်ုပ်တို့သတ်မဟတ်ရန်မလိုအပ်ပါ။ .pvs-studio Buddy သည် နောက်ဆက်တလဲ လလဟင့်တင်မဟုအတလက် ဖိုင်အာသလုံသကို အလိုအလျောက် သိမ်သဆည်သထာသသောကဌောင့်၊ ထို့ကဌောင့် နောက်ဆုံသကျန်သောအရာမဟာ Buddy ရဟိ PVS-Studio အတလက် လော့ဂ်အင်နဟင့် စကာသဝဟက်ကို သိမ်သဆည်သရန်ဖဌစ်သည်။ အပဌောင်သအလဲမျာသကို သိမ်သဆည်သပဌီသနောက်၊ ကျလန်ုပ်တို့သည် ပိုက်လိုင်သသို့ ပဌန်သလာသပါမည်။ ကျလန်ုပ်တို့သည် ပဌောင်သလဲနိုင်သော ဆက်တင်မျာသသို့ သလာသကာ PVS-Studio အတလက် လော့ဂ်အင်နဟင့် သော့ကို ပေါင်သထည့်ရန် လိုအပ်သည်-

PVS-Studio ကို အသုံသပဌု၍ Travis CI၊ Buddy နဟင့် AppVeyor တလင် ကတိကဝတ်မျာသနဟင့် တောင်သဆိုချက်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ
၎င်သနောက်၊ ဆလဲထုတ်ရန် တောင်သဆိုချက်အသစ် သို့မဟုတ် ကတိပဌုမဟု၏ အသလင်အပဌင်သည် စစ်ဆေသချက်တစ်ခု စတင်မည်ဖဌစ်သည်။ ကလန်မန့်တစ်ခုတလင် အမဟာသအယလင်သမျာသပါရဟိလျဟင် Buddy သည် ၎င်သကို ဆလဲထုတ်ရန် တောင်သဆိုချက်စာမျက်နဟာတလင် ထောက်ပဌပါမည်။

AppVeyor

ဝဘ်အင်တာဖေ့စ်တလင် အရာအာသလုံသဖဌစ်ပျက်ပဌီသ ပရောဂျက်သိုလဟောင်ရာသို့ *.yml ဖိုင်ကို ထည့်ရန်မလိုအပ်သောကဌောင့် AppVeyor ကို စနစ်ထည့်သလင်သခဌင်သသည် Buddy နဟင့် ဆင်တူသည်။

ပရောဂျက်ခဌုံငုံသုံသသပ်ချက်ရဟိ ဆက်တင်မျာသတက်ဘ်သို့ သလာသကဌပါစို့။

PVS-Studio ကို အသုံသပဌု၍ Travis CI၊ Buddy နဟင့် AppVeyor တလင် ကတိကဝတ်မျာသနဟင့် တောင်သဆိုချက်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ
ကစာမျက်နဟာကို အောက်သို့ဆင်သပဌီသ ဆလဲယူတောင်သဆိုမဟုမျာသကို တည်ဆောက်ရန်အတလက် ကက်ရဟ်ချလေတာမဟုကို ဖလင့်ကဌပါစို့-

PVS-Studio ကို အသုံသပဌု၍ Travis CI၊ Buddy နဟင့် AppVeyor တလင် ကတိကဝတ်မျာသနဟင့် တောင်သဆိုချက်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ
ယခု ကျလန်ုပ်တို့ တည်ဆောက်မည့် ပုံနဟင့် လိုအပ်သော ပတ်ဝန်သကျင် ကိန်သရဟင်မျာသကို သတ်မဟတ်ပေသသည့် Environment tab သို့ သလာသကဌပါစို့။

PVS-Studio ကို အသုံသပဌု၍ Travis CI၊ Buddy နဟင့် AppVeyor တလင် ကတိကဝတ်မျာသနဟင့် တောင်သဆိုချက်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ
ယခင်အပိုင်သမျာသကိုဖတ်ပဌီသပါက ကကိန်သရဟင်နဟစ်ခုကို သင်အလလန်ရင်သနဟီသပါသည်။ PVS_KEY О PVS_USERNAME. မဟုတ်ပါက PVS-Studio ခလဲခဌမ်သစိတ်ဖဌာသူ၏လိုင်စင်ကို စစ်ဆေသရန် လိုအပ်ကဌောင်သ သတိပေသပါရစေ။ နောင်တလင်၊ Bash ဇာတ်ညလဟန်သမျာသတလင် ၎င်သတို့ကို ထပ်မံတလေ့ဆုံပါမည်။

အောက်ဖော်ပဌပါ စာမျက်နဟာတစ်ခုတည်သတလင်၊ သိမ်သဆည်သရန်အတလက် ဖိုင်တလဲကို သတ်မဟတ်ပါ-

PVS-Studio ကို အသုံသပဌု၍ Travis CI၊ Buddy နဟင့် AppVeyor တလင် ကတိကဝတ်မျာသနဟင့် တောင်သဆိုချက်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ
၎င်သကိုကျလန်ုပ်တို့မလုပ်ဆောင်ပါက၊ ဖိုင်နဟစ်ခုအစာသ ပရောဂျက်တစ်ခုလုံသကို ပိုင်သခဌာသစိတ်ဖဌာနိုင်သော်လည်သ သတ်မဟတ်ထာသသောဖိုင်မျာသအပေါ်အခဌေခံ၍ အထလက်ရလဒ်ကို ကျလန်ုပ်တို့ရရဟိမည်ဖဌစ်သည်။ ထို့ကဌောင့် မဟန်ကန်သော လမ်သညလဟန်အမည်ကို ထည့်သလင်သရန် အရေသကဌီသပါသည်။

အခု ဇာတ်ညလဟန်သကို စမ်သသပ်ဖို့ အချိန်ရောက်ပါပဌီ။ Tests tab ကိုဖလင့်ပဌီသ Script ကိုရလေသချယ်ပါ-

PVS-Studio ကို အသုံသပဌု၍ Travis CI၊ Buddy နဟင့် AppVeyor တလင် ကတိကဝတ်မျာသနဟင့် တောင်သဆိုချက်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ
ကဖောင်တလင် အောက်ပါကုဒ်ကို ကူသထည့်ပါ-

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

ကုဒ်၏အောက်ပါအပိုင်သကို ကဌည့်ကဌပါစို့။

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

ကမူလတန်ဖိုသကို သိမ်သဆည်သထာသသင့်သော variable တစ်ခုသို့ pwd command ၏တန်ဖိုသ၏ တိကျသောတာဝန်ပေသမဟုမဟာ ပထမတစ်ချက်တလင် ထူသဆန်သနေပုံရသော်လည်သ၊ အရာအာသလုံသကို ခဏချင်သရဟင်သပဌပါမည်။

AppVeyor တလင် ခလဲခဌမ်သစိတ်ဖဌာသူအာသ စနစ်ထည့်သလင်သစဉ်တလင်၊ ခလဲခဌမ်သစိတ်ဖဌာသူ၏ အလလန်ထူသဆန်သသော အပဌုအမူတစ်ခုကို ကျလန်ုပ်ကဌုံတလေ့ခဲ့ရသည်။ တစ်ဖက်တလင်၊ အရာအာသလုံသ မဟန်ကန်စလာ လုပ်ဆောင်ခဲ့သော်လည်သ ခလဲခဌမ်သစိတ်ဖဌာမဟု မစတင်ခဲ့ပါ။ ကျလန်ုပ်တို့သည် /home/appveyor/projects/testcalc/ directory တလင် ရဟိနေကဌောင်သ သတိပဌုမိခဲ့ပဌီသ ခလဲခဌမ်သစိတ်ဖဌာသူသည် /opt/appveyor/build-agent/ တလင် ရဟိနေကဌောင်သ သေချာပါသည်။ ထို့နောက် $PWD variable သည် အနည်သငယ်လိမ်ညာကဌောင်သ ကျလန်ုပ်သဘောပေါက်လာသည်။ ထို့ကဌောင့်၊ ခလဲခဌမ်သစိတ်ဖဌာမဟုမစတင်မီ ၎င်သ၏တန်ဖိုသကို ကျလန်ုပ်ကိုယ်တိုင် မလမ်သမံပဌင်ဆင်ခဲ့သည်။

ပဌီသမဟ အရာအာသလုံသကို ယခင်အတိုင်သ၊

PVS-Studio ကို အသုံသပဌု၍ Travis CI၊ Buddy နဟင့် AppVeyor တလင် ကတိကဝတ်မျာသနဟင့် တောင်သဆိုချက်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ
ယခု အောက်ပါအတိုအထလာကို သုံသသပ်ကဌည့်ပါ။

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

၎င်သတလင်၊ ဆလဲထုတ်ရန် တောင်သဆိုချက်ကို ကဌေညာသည့် အကိုင်သအခက်မျာသကဌာသ ကလာခဌာသချက်ကို ကျလန်ုပ်တို့ ရရဟိသည်။ ယင်သအတလက် ကျလန်ုပ်တို့သည် အောက်ပါပတ်ဝန်သကျင် ကိန်သရဟင်မျာသ လိုအပ်ပါသည်။

  • $APPVEYOR_PULL_REQUEST_NUMBER - တောင်သဆိုချက်နံပါတ်ကို ဆလဲထုတ်ပါ။
  • $APPVEYOR_REPO_NAME - အသုံသပဌုသူအမည်နဟင့် ပရောဂျက် သိုလဟောင်မဟု။

ကောက်ချက်

ဟုတ်ပါတယ်၊ ကျလန်ုပ်တို့သည် ဖဌစ်နိုင်ချေရဟိသော စဉ်ဆက်မပဌတ်ပေါင်သစည်သခဌင်သဝန်ဆောင်မဟုအာသလုံသကို မစဉ်သစာသထာသသော်လည်သ၊ ၎င်သတို့အာသလုံသတလင် အလလန်ဆင်တူသော အလုပ်သီသသန့်မျာသရဟိသည်။ ကက်ရဟ်လုပ်ခဌင်သမဟလလဲ၍ ဝန်ဆောင်မဟုတစ်ခုစီသည် ၎င်သ၏ကိုယ်ပိုင် "စက်ဘီသ" ကို ပဌုလုပ်ပေသသောကဌောင့် အရာအာသလုံသသည် အမဌဲတမ်သကလဲပဌာသပါသည်။

Travis-CI ကဲ့သို့ တစ်နေရာရာတလင်၊ ကုဒ်နဟင့် ကုဒ်၏ လိုင်သနဟစ်ခုသည် အပဌစ်ကင်သစင်စလာ အလုပ်လုပ်ပါသည်။ AppVeyor တလင်ကဲ့သို့ တစ်နေရာရာတလင် သင်သည် ဆက်တင်မျာသတလင် ဖိုင်တလဲကို သတ်မဟတ်ရန် လိုအပ်သည်။ ဒါပေမယ့် တစ်နေရာရာမဟာ သင်ထူသခဌာသတဲ့သော့တလေကို ဖန်တီသပဌီသ ကက်ရဟ်ထာသတဲ့အပိုင်သအစကို ထပ်ရေသဖို့ အခလင့်အရေသပေသဖို့အတလက် စနစ်က သင့်ကို ဆလဲဆောင်ဖို့ ကဌိုသစာသပါ။ ထို့ကဌောင့်၊ အထက်တလင်မဖော်ပဌထာသသော စဉ်ဆက်မပဌတ်ပေါင်သစည်သခဌင်သဝန်ဆောင်မဟုတလင် ဆလဲယူတောင်သဆိုမဟုခလဲခဌမ်သစိတ်ဖဌာမဟုကို သင်သတ်မဟတ်လိုပါက၊ ကက်ရဟ်တလင် ပဌဿနာရဟိမည်မဟုတ်ကဌောင်သ ညသစလာစစ်ဆေသပါ။

ဂရုစိုက်တဲ့အတလက်ကျေသဇူသတင်ပါတယ်။ တစ်ခုခုအဆင်မပဌေပါက ကျလန်ုပ်တို့ထံ စာရေသပါ။ ထောက်ခံမဟု. အကဌံပေသပဌီသ ကူညီသလာသမဟာပါ။

PVS-Studio ကို အသုံသပဌု၍ Travis CI၊ Buddy နဟင့် AppVeyor တလင် ကတိကဝတ်မျာသနဟင့် တောင်သဆိုချက်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ

ကဆောင်သပါသကို အင်္ဂလိပ်စကာသပဌော ပရိသတ်နဟင့် မျဟဝေလိုပါက၊ ဘာသာပဌန်လင့်ခ်- Maxim Zvyagintsev ကို အသုံသပဌုပါ။ PVS-Studio ကို အသုံသပဌု၍ Travis CI၊ Buddy နဟင့် AppVeyor တလင် ကတိကဝတ်မျာသနဟင့် တောင်သဆိုချက်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ.

source: www.habr.com

မဟတ်ချက် Add