C# لاءِ PVS-Studio استعمال ڪندي GitLab ۾ ضم ڪرڻ جي درخواستن جو تجزيو

C# لاءِ PVS-Studio استعمال ڪندي GitLab ۾ ضم ڪرڻ جي درخواستن جو تجزيو
GitLab سان پيار ڪريو ۽ ڪيڙن کان نفرت ڪريو؟ توهان جي سورس ڪوڊ جي معيار کي بهتر ڪرڻ چاهيو ٿا؟ پوء توهان صحيح جڳهه تي آيا آهيو. اڄ اسان توهان کي ٻڌائينداسين ته PVS-Studio C# analyzer کي ڪيئن ترتيب ڏيو ضم ڪرڻ جي درخواستن کي چيڪ ڪرڻ لاءِ. هڪ يونيسيور موڊ ۽ سڀني کي خوش پڙهڻ.

پي وي وي اسٽوڊيو C, C++، C# ۽ Java ۾ لکيل پروگرامن جي سورس ڪوڊ ۾ غلطين ۽ امڪاني نقصانن جي نشاندهي ڪرڻ لاءِ هڪ اوزار آهي. ونڊوز، لينڪس ۽ macOS تي 64-bit سسٽم تي ڪم ڪري ٿو. 32-bit، 64-bit ۽ ايمبيڊڊ ARM پليٽ فارمز لاءِ ٺهيل ڪوڊ جو تجزيو ڪري سگھي ٿو.

رستي جي ذريعي، اسان PVS-Studio 7.08 جاري ڪيو، جنهن ۾ اسان ڪيتريون ئي شيون ڪيون دلچسپ. مثال طور

  • لينڪس ۽ macOS لاء سي # تجزيي؛
  • سوار لاء پلگ ان؛
  • نئين فائل لسٽ چيڪنگ موڊ.

فائل لسٽ چيڪنگ موڊ

اڳي، ڪجهه فائلن کي چيڪ ڪرڻ لاء، اهو ضروري هو ته هڪ .xml فائلن جي فهرست سان گڏ تجزيو ڪندڙ ڏانهن. پر جيئن ته اهو تمام آسان ناهي، اسان .txt کي منتقل ڪرڻ جي صلاحيت شامل ڪئي آهي، جيڪا زندگي تمام سادي بڻائي ٿي.

مخصوص فائلن کي چيڪ ڪرڻ لاء، توھان کي جھنڊو بيان ڪرڻ گھرجي --source Files (-f) ۽ منتقلي .txt فائلن جي فهرست سان. اهو هن طرح نظر اچي ٿو:

pvs-studio-dotnet -t path/to/solution.sln -f fileList.txt -o project.json

جيڪڏھن توھان چاھيو ٿا سيٽنگ ڪرڻ ۾ ڪمٽ چيڪنگ يا ڇڪڻ جون درخواستون، توھان پڻ ڪري سگھو ٿا اھو موڊ استعمال ڪندي. فرق تجزيو ڪرڻ لاءِ فائلن جي لسٽ حاصل ڪرڻ ۾ هوندو ۽ ان تي منحصر هوندو ته توهان ڪهڙا سسٽم استعمال ڪري رهيا آهيو.

ضمير جي درخواست کي جانچڻ جو اصول

چيڪ جو بنيادي جوهر اهو يقيني بڻائڻ آهي ته ضم ٿيڻ دوران تجزيه نگار پاران معلوم ڪيل مسئلا ان ۾ نه اچن. رکن ٿا شاخ. اسان هر دفعي پوري منصوبي جو تجزيو ڪرڻ نٿا چاهيون. ان کان علاوه، شاخن کي ضم ڪرڻ وقت، اسان وٽ تبديل ٿيل فائلن جي هڪ فهرست آهي. تنهن ڪري، مان ضم ڪرڻ جي درخواست جي چڪاس کي شامل ڪرڻ جي صلاح ڏيان ٿو.

هي اهو آهي جيڪو ضم ڪرڻ جي درخواست وانگر ڏسڻ ۾ اچي ٿو هڪ جامد تجزيي کي لاڳو ڪرڻ کان اڳ:

C# لاءِ PVS-Studio استعمال ڪندي GitLab ۾ ضم ڪرڻ جي درخواستن جو تجزيو
اهو آهي، اهي سڀئي غلطيون جيڪي برانچ ۾ هئا تبديليون، ماسٽر برانچ ڏانهن منتقل ڪيو ويندو. جيئن ته اسان اهو نه چاهيون ٿا، اسان تجزيو شامل ڪيو، ۽ هاڻي ڊراگرام هن طرح نظر اچي ٿو:

C# لاءِ PVS-Studio استعمال ڪندي GitLab ۾ ضم ڪرڻ جي درخواستن جو تجزيو
تجزيو ڪرڻ تبديليون 2 ۽، جيڪڏهن ڪو نقص نه آهي، اسان ضم ڪرڻ جي درخواست کي قبول ڪريون ٿا، ٻي صورت ۾ اسان ان کي رد ڪريون ٿا.

رستي جي ذريعي، جيڪڏهن توهان C/C++ لاءِ ڪمٽٽس ۽ ڇڪڻ جي درخواستن جو تجزيو ڪرڻ ۾ دلچسپي رکو ٿا، ته پوءِ توهان ان بابت پڙهي سگهو ٿا هتي.

GitLab

GitLab هڪ اوپن سورس ويب تي ٻڌل DevOps لائف سائيڪل ٽول آهي جيڪو Git لاءِ هڪ ڪوڊ ريپوزٽري مئنيجمينٽ سسٽم مهيا ڪري ٿو ان جي پنهنجي وڪي سان، مسئلو ٽريڪنگ سسٽم، CI/CD پائپ لائن ۽ ٻيون خاصيتون.

ان کان اڳ جو توھان ضم ڪرڻ جي درخواستن جو تجزيو ڪرڻ شروع ڪريو، توھان کي پنھنجي پروجيڪٽ کي رجسٽر ڪرڻ ۽ اپلوڊ ڪرڻ جي ضرورت آھي. جيڪڏهن توهان نٿا ڄاڻو ته اهو ڪيئن ڪجي، پوء آئون مشورو ڏيان ٿو مضمون منهنجو ساٿي.

ويچاري. هيٺ بيان ڪيل ماحول کي ترتيب ڏيڻ جو طريقو هڪ ممڪن آهي. مقصد تجزيو ڪرڻ ۽ تجزيي کي شروع ڪرڻ لاء ضروري ماحول کي ترتيب ڏيڻ لاء قدم ڏيکارڻ آهي. شايد توھان جي صورت ۾ اھو وڌيڪ بھتر ھوندو ته ماحول جي تياري جي مرحلن کي الڳ ڪرڻ (مخزن کي شامل ڪرڻ، تجزيي کي نصب ڪرڻ) ۽ تجزيو: مثال طور، ضروري ماحول سان Docker تصويرون تيار ڪرڻ ۽ انھن کي استعمال ڪرڻ، يا ڪو ٻيو طريقو.

بهتر سمجھڻ لاءِ ته ھاڻي ڇا ٿيندو، مان ھيٺين آريگرام کي ڏسڻ جي صلاح ڏيان ٿو:

C# لاءِ PVS-Studio استعمال ڪندي GitLab ۾ ضم ڪرڻ جي درخواستن جو تجزيو
تجزيي کي هلائڻ لاءِ .NET Core SDK 3 جي ضرورت آهي، تنهن ڪري تجزيي کي انسٽال ڪرڻ کان پهريان توهان کي Microsoft جي ذخيرن کي شامل ڪرڻ جي ضرورت آهي جنهن تان تجزيي لاءِ گهربل انحصار انسٽال ڪيو ويندو. مختلف لينڪس جي تقسيم لاء Microsoft مخزن کي شامل ڪرڻ لاڳاپيل دستاويز ۾ بيان ڪيو ويو آهي.

انسٽال ڪرڻ لاءِ پي وي ايس-اسٽوڊيو پيڪيج مئنيجر ذريعي، توهان کي به شامل ڪرڻو پوندو PVS-اسٽوڊيو مخزن. مختلف تقسيم لاء مخزن کي شامل ڪرڻ ۾ وڌيڪ تفصيل سان بيان ڪيو ويو آهي دستاويز جي لاڳاپيل سيڪشن.

تجزيه ڪندڙ کي هلائڻ لاءِ لائسنس جي چيڪ جي ضرورت آهي. توھان حاصل ڪري سگھو ٿا آزمائشي لائسنس تي analyzer ڊائون لوڊ صفحو.

ويچاري. مهرباني ڪري نوٽ ڪريو ته آپريشن جو بيان ڪيل طريقو (ضمن جي درخواستن جو تجزيو) هڪ انٽرنيشنل لائسنس جي ضرورت آهي. تنهن ڪري، جيڪڏهن توهان ڪوشش ڪرڻ چاهيو ٿا آپريشن جي هن طريقي کي، "پيغام" فيلڊ ۾ ظاهر ڪرڻ نه وساريو ته توهان کي انٽرپرائز لائسنس جي ضرورت آهي.

جيڪڏهن ضم ٿيڻ جي درخواست ٿئي ٿي، ته اسان کي صرف تبديل ٿيل فائلن جي لسٽ جو تجزيو ڪرڻو پوندو، ٻي صورت ۾ اسان سڀني فائلن جو تجزيو ڪنداسين. تجزيي کان پوء، اسان کي لاگ ان فارميٽ ۾ تبديل ڪرڻ جي ضرورت آهي جيڪا اسان کي گهربل آهي.

ھاڻي، توھان جي اکين اڳيان ڪم جو الگورتھم آھي، توھان اڳتي وڌائي سگھوٿا ھڪڙي اسڪرپٽ لکڻ لاءِ. هن کي ڪرڻ لاء، توهان کي فائل کي تبديل ڪرڻو پوندو gitlab-ci.yml يا، جيڪڏهن اهو موجود ناهي، ان کي ٺاهيو. ان کي ٺاهڻ لاء، توهان کي پنهنجي منصوبي جي نالي تي ڪلڪ ڪرڻ جي ضرورت آهي -> سيٽ اپ ڪريو CI/CD.

C# لاءِ PVS-Studio استعمال ڪندي GitLab ۾ ضم ڪرڻ جي درخواستن جو تجزيو
هاڻي اسان اسڪرپٽ لکڻ لاءِ تيار آهيون. اچو ته پھريون ڪوڊ لکون جيڪو اينالائزر انسٽال ڪندو ۽ لائسنس داخل ڪندو:

before_script:
  - apt-get update && apt-get -y install wget gnupg 

  - apt-get -y install git
  - wget https://packages.microsoft.com/config/debian/10/
packages-microsoft-prod.deb -O packages-microsoft-prod.deb
  - dpkg -i packages-microsoft-prod.deb
  - apt-get update
  - apt-get install apt-transport-https
  - apt-get update
  
  - 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-dotnet

  - pvs-studio-analyzer credentials $PVS_NAME $PVS_KEY
  - dotnet restore "$CI_PROJECT_DIR"/Test/Test.sln

جيئن ته انسٽاليشن ۽ چالو ٿيڻ لازمي آهي ٻين سڀني اسڪرپٽس کان اڳ، اسان هڪ خاص ليبل استعمال ڪندا آهيون before_script. اچو ته هن ٽڪري کي ٿورو بيان ڪريون.

تجزيي کي انسٽال ڪرڻ جي تياري:

  - wget https://packages.microsoft.com/config/debian/10/
packages-microsoft-prod.deb -O packages-microsoft-prod.deb
  - dpkg -i packages-microsoft-prod.deb
  - apt-get update
  - apt-get install apt-transport-https
  - apt-get update

PVS-اسٽوڊيو مخزن ۽ تجزيي کي شامل ڪرڻ:

  - 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-dotnet

لائسنس چالو ڪرڻ:

  - pvs-studio-analyzer credentials $PVS_NAME $PVS_KEY

$PVS_NAME - استعمال ڪندڙ جو نالو.

$PVS_KEY - پيداوار جي چاٻي.

پراجيڪٽ جي انحصار کي بحال ڪرڻ جتي $CI_PROJECT_DIR - پروجيڪٽ ڊاريڪٽري ڏانهن مڪمل رستو:

  - dotnet restore "$CI_PROJECT_DIR"/Path/To/Solution.sln

صحيح تجزيو ڪرڻ لاء، منصوبي کي ڪاميابي سان تعمير ڪيو وڃي، ۽ ان جي انحصار کي بحال ڪيو وڃي (مثال طور، ضروري NuGet پيڪيجز کي ڊائون لوڊ ڪيو وڃي).

توھان سيٽ ڪري سگھو ٿا ماحوليات متغيرات تي مشتمل لائسنس جي معلومات تي ڪلڪ ڪندي جوڙ، ۽ بعد ۾ - تي CI/CD.

C# لاءِ PVS-Studio استعمال ڪندي GitLab ۾ ضم ڪرڻ جي درخواستن جو تجزيو
کليل ونڊو ۾، شيون ڳولھيو مختلف، ساڄي پاسي واري بٽڻ تي ڪلڪ ڪريو وڌايو ۽ متغير شامل ڪريو. نتيجو هن طرح ڏسڻ گهرجي:

C# لاءِ PVS-Studio استعمال ڪندي GitLab ۾ ضم ڪرڻ جي درخواستن جو تجزيو
هاڻي توهان تجزيو ڏانهن منتقل ڪري سگهو ٿا. پهرين، اچو ته مڪمل تجزيو لاءِ اسڪرپٽ شامل ڪريون. پرچم ڏانهن -t اسان پرچم جي حل لاء رستو گذري ٿو -o فائل ڏانهن رستو لکو جنهن ۾ تجزيو جا نتيجا لکيا ويندا. اسان واپسي ڪوڊ ۾ پڻ دلچسپي رکون ٿا. انهي صورت ۾، اسان آپريشن کي روڪڻ ۾ دلچسپي رکون ٿا جڏهن واپسي ڪوڊ معلومات تي مشتمل آهي ته ڊيڄاريندڙ تجزيي دوران جاري ڪيا ويا آهن. ھي اھو آھي جيڪو ھي ٽڪرو ڏسڻ ۾ اچي ٿو:

job:
  script:
  - exit_code=0
  - pvs-studio-dotnet -t "$CI_PROJECT_DIR"/Test/Test.sln -o 
PVS-Studio.json || exit_code=$?
  - exit_code=$((($exit_code & 8)/8))
  - if [[ $exit_code == 1 ]]; then exit 1; else exit 0; fi

واپسي جا ڪوڊ بٽ ماسڪ جي اصول تي ڪم ڪن ٿا. مثال طور، جيڪڏهن تجزيي جي نتيجي ۾ ڊيڄاريندڙ جاري ڪيا ويا، ته پوءِ واپسي جو ڪوڊ 8 جي برابر هوندو. جيڪڏهن لائسنس هڪ مهيني اندر ختم ٿي وڃي ته پوءِ واپسي جو ڪوڊ 4 جي برابر هوندو. جيڪڏهن تجزيي دوران غلطيون معلوم ٿيون، ۽ لائسنس هڪ مهيني اندر ختم ٿي ويندو، ڪوڊ واپسي، ٻئي قدر لکيا ويندا: انگن کي گڏ ڪريو ۽ حتمي واپسي ڪوڊ حاصل ڪريو - 8+4=12. اهڙيء طرح، لاڳاپيل بٽس کي جانچڻ سان، تجزيو دوران مختلف رياستن بابت معلومات حاصل ڪري سگهجي ٿي. واپسي جا ڪوڊ وڌيڪ تفصيل سان بيان ڪيا ويا آهن "pvs-studio-dotnet (Linux / macOS) ريٽرن ڪوڊس" دستاويز جي سيڪشن ۾.PVS-Studio استعمال ڪندي ڪمانڊ لائن مان Visual Studio / MSBuild / .NET ڪور پروجيڪٽ جي جانچ ڪندي".

انهي حالت ۾، اسان سڀني موٽڻ واري ڪوڊ ۾ دلچسپي رکون ٿا جتي 8 ظاهر ٿئي ٿو.

  - exit_code=$((($exit_code & 8)/8))

اسان 1 وصول ڪنداسين جڏهن واپسي ڪوڊ ۾ شامل ڪيل نمبر جو ساٽ شامل آهي جنهن ۾ اسان دلچسپي رکون ٿا، ٻي صورت ۾ اسان 0 وصول ڪنداسين.

انضمام جي درخواست جي تجزيو شامل ڪرڻ جو وقت آهي. ان کان اڳ اسين ائين ڪريون، اچو ته لکت لاءِ جڳھ تيار ڪريون. اسان کي ان تي عمل ڪرڻ جي ضرورت آهي صرف ان صورت ۾ جڏهن ضم ٿيڻ جي درخواست ٿئي ٿي. اهو هن طرح نظر اچي ٿو:

merge:
  script:
  only:
  - merge_requests

اچو ته خود اسڪرپٽ ڏانهن وڃو. مون کي ان حقيقت سان منهن ڏيڻو پيو ته مجازي مشين بابت ڪا به خبر ناهي اصل / ماسٽر. سو اچو ته هن جي ٿوري مدد ڪريون:

  - git fetch origin

هاڻي اسان شاخن جي وچ ۾ فرق حاصل ڪريون ۽ نتيجو بچايو txt فائل:

  - git diff --name-only origin/master $CI_COMMIT_SHA > pvs-fl.txt

ڪٿي $CI_COMMIT_SHA - آخري انجام جو هيش.

اڳيون، اسان پرچم استعمال ڪندي فائلن جي لسٽ جو تجزيو ڪرڻ شروع ڪندا آهيون -f. اسان اڳ ۾ حاصل ڪيل .txt فائل کي ان ڏانهن منتقل ڪيو. يقينن، مڪمل تجزيو سان قياس سان، اسان واپسي جا ڪوڊ ڏسون ٿا:

  - exit_code=0
  - pvs-studio-dotnet -t "$CI_PROJECT_DIR"/Test/Test.sln -f 
pvs-fl.txt -o PVS-Studio.json || exit_code=$?
  - exit_code=$((($exit_code & 8)/8))
  - if [[ $exit_code == 1 ]]; then exit 1; else exit 0; fi

ضم ٿيڻ جي درخواست کي جانچڻ لاءِ مڪمل اسڪرپٽ هن طرح نظر ايندي:

merge:
  script:
  - git fetch origin
  - git diff --name-only origin/master $CI_COMMIT_SHA > pvs-fl.txt
  - exit_code=0
  - pvs-studio-dotnet -t "$CI_PROJECT_DIR"/Test/Test.sln -f 
pvs-fl.txt -o PVS-Studio.json || exit_code=$?
  - exit_code=$((($exit_code & 8)/8))
  - if [[ $exit_code == 1 ]]; then exit 1; else exit 0; fi
  only:
  - merge_requests

باقي رهي ٿو لاگ ڪنورشن شامل ڪرڻ کان پوءِ سڀني اسڪرپٽس تي عمل ڪيو ويو آهي. اسان ليبل استعمال ڪندا آهيون after_script ۽ افاديت پلگ ڪنورٽر:

after_script:
  - plog-converter -t html -o eLog ./PVS-Studio.json

افاديت پلگ ڪنورٽر هڪ اوپن سورس پروجيڪٽ آهي جيڪو استعمال ڪيو ويندو آهي پارسر جي غلطي جي رپورٽن کي مختلف شڪلن ۾ تبديل ڪرڻ، جهڙوڪ HTML. يوٽيلٽي جو وڌيڪ تفصيلي بيان سب سيڪشن ”پلاگ ڪنورٽر يوٽيلٽي“ ۾ ڏنو ويو آهي. دستاويز جي لاڳاپيل سيڪشن.

رستي جي ذريعي، جيڪڏهن توهان آساني سان ڪم ڪرڻ چاهيو ٿا .json رپورٽن سان مقامي طور تي IDE کان، پوء آئون مشورو ڏيان ٿو اسان جي پلگ ان IDE رائڊر لاءِ. ان جي استعمال کي وڌيڪ تفصيل سان بيان ڪيو ويو آهي لاڳاپيل دستاويز.

سهولت لاء، هتي آهي gitlab-ci.yml مڪمل طور تي:

image: debian

before_script:
  - apt-get update && apt-get -y install wget gnupg 

  - apt-get -y install git
  - wget https://packages.microsoft.com/config/debian/10/
packages-microsoft-prod.deb -O packages-microsoft-prod.deb
  - dpkg -i packages-microsoft-prod.deb
  - apt-get update
  - apt-get install apt-transport-https
  - apt-get update
  
  - 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-dotnet

  - pvs-studio-analyzer credentials $PVS_NAME $PVS_KEY
  - dotnet restore "$CI_PROJECT_DIR"/Test/Test.sln

merge:
  script:
  - git fetch origin
  - git diff --name-only origin/master $CI_COMMIT_SHA > pvs-fl.txt
  - exit_code=0
  - pvs-studio-dotnet -t "$CI_PROJECT_DIR"/Test/Test.sln -f 
pvs-fl.txt -o PVS-Studio.json || exit_code=$?
  - exit_code=$((($exit_code & 8)/8))
  - if [[ $exit_code == 1 ]]; then exit 1; else exit 0; fi
  only:
  - merge_requests

job:
  script:
  - exit_code=0
  - pvs-studio-dotnet -t "$CI_PROJECT_DIR"/Test/Test.sln -o 
PVS-Studio.json || exit_code=$?
  - exit_code=$((($exit_code & 8)/8))
  - if [[ $exit_code == 1 ]]; then exit 1; else exit 0; fi
  
after_script:
  - plog-converter -t html -o eLog ./PVS-Studio.json

هڪ دفعو توهان فائل ۾ سڀ ڪجهه شامل ڪيو، تي ڪلڪ ڪريو تبديلين جو عزم. ڏسڻ لاء ته سڀڪنھن شيء کي درست آهي، ڏانھن وڃو CI/CD -> پوسٽون -> ڊوڙندو. هڪ ورچوئل مشين ونڊو کلي ويندي، جنهن جي آخر ۾ هيٺيان هجڻ گهرجي:

C# لاءِ PVS-Studio استعمال ڪندي GitLab ۾ ضم ڪرڻ جي درخواستن جو تجزيو
ڏٺو نوڪري ڪامياب ٿي وئي - ڪاميابي، سڀ ڪجھ ٺيڪ آهي. هاڻي توهان جانچ ڪري سگهو ٿا جيڪي توهان ڪيو آهي.

ڪم جا مثال

ڪم جي مثال لاءِ، اچو ته ھڪڙو سادو پروجيڪٽ ٺاھيون (۾ رکن ٿا) جنهن ۾ ڪيترن ئي فائلن تي مشتمل هوندي. ان کان پوء، ٻي برانچ ۾ اسان صرف هڪ فائل تبديل ڪنداسين ۽ ضم ڪرڻ جي درخواست ڪرڻ جي ڪوشش ڪنداسين.

اچو ته ٻن ڪيسن تي غور ڪريو: جڏهن تبديل ٿيل فائل ۾ هڪ غلطي آهي ۽ جڏهن اهو نه آهي. پهريون، هڪ غلطي سان هڪ مثال.

اچو ته چوندا آهن ته ماسٽر برانچ ۾ هڪ فائل آهي Program.cs، جنهن ۾ غلطيون شامل نه آهن، پر ٻي شاخ ۾ ڊولپر غلط ڪوڊ شامل ڪيو ۽ ضم ڪرڻ جي درخواست ڪرڻ چاهي ٿو. هن ڪهڙي قسم جي غلطي ڪئي، اهو اهم ناهي، بنيادي شيء اها آهي ته اهو موجود آهي. مثال طور، آپريٽر وساريو ڌوڙ (ها، تمام غلط):

void MyAwesomeMethod(String name)
{
  if (name == null)
    new ArgumentNullException(....);
  // do something
  ....
}

اچو ته هڪ مثال جي غلطي سان تجزيو ڪرڻ جو نتيجو ڏسو. انهي کي يقيني بڻائڻ لاءِ ته صرف هڪ فائل پارس ڪيو ويو ، مون پرچم شامل ڪيو -r pvs-studio-dotnet لانچ لائن ڏانهن:

C# لاءِ PVS-Studio استعمال ڪندي GitLab ۾ ضم ڪرڻ جي درخواستن جو تجزيو
اسان ڏسون ٿا ته تجزيه نگار هڪ غلطي ڏٺي ۽ شاخن کي ضم ڪرڻ جي اجازت نه ڏني.

اچو ته بغير ڪنهن غلطي جي مثال کي ڏسو. ڪوڊ کي درست ڪرڻ:

void MyAwesomeMethod(String name)
{
  if (name == null)
    throw new ArgumentNullException(....);
  // do something
  ....
}

ضم ڪرڻ جي درخواست جي تجزيو جا نتيجا:

C# لاءِ PVS-Studio استعمال ڪندي GitLab ۾ ضم ڪرڻ جي درخواستن جو تجزيو
جيئن ته اسان ڏسي سگهون ٿا، ڪا به غلطي نه ملي هئي، ۽ ڪم تي عمل ڪامياب ٿي ويو، جيڪو اسان کي چيڪ ڪرڻ چاهيون ٿا.

ٿڪل

شاخن کي ضم ڪرڻ کان اڳ خراب ڪوڊ کي ختم ڪرڻ تمام آسان ۽ خوشگوار آهي. تنهن ڪري جيڪڏهن توهان CI/CD استعمال ڪري رهيا آهيو، چيڪ ڪرڻ لاءِ جامد تجزيي کي شامل ڪرڻ جي ڪوشش ڪريو. ان کان سواء، اهو بلڪل سادو ڪيو ويندو آهي.

توهان جي ڌيان لاء توهان جي مهرباني.

C# لاءِ PVS-Studio استعمال ڪندي GitLab ۾ ضم ڪرڻ جي درخواستن جو تجزيو
جيڪڏهن توهان هن مضمون کي انگريزي ڳالهائيندڙ سامعين سان حصيداري ڪرڻ چاهيو ٿا، مهرباني ڪري ترجمو لنڪ استعمال ڪريو: Nikolay Mironov. C# لاءِ PVS-Studio استعمال ڪندي GitLab ۾ ضم ڪرڻ جي درخواستن جو تجزيو.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو