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

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

پي وي وي اسٽوڊيو — C، C++، C#، ۽ جاوا ۾ لکيل پروگرامن جي سورس ڪوڊ ۾ غلطين ۽ امڪاني ڪمزورين جي سڃاڻپ لاءِ هڪ اوزار آهي. اهو 64-بٽ سسٽم تي هلندو آهي. Windows, Linux и macOSاهو 32-bit، 64-bit، ۽ ايمبيڊڊ ARM پليٽ فارمن کي نشانو بڻائيندڙ ڪوڊ جو تجزيو ڪري سگهي ٿو.

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

  • سي # تجزيه نگار هيٺ Linux и macOS;
  • رائيڊر لاءِ پلگ ان؛
  • نئين فائل لسٽ چيڪنگ موڊ.

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

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

مخصوص فائلن کي چيڪ ڪرڻ لاءِ، توهان کي هڪ پرچم بيان ڪرڻ جي ضرورت آهي —ذريعو فائلون (-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 پائپ لائن، ۽ ٻين خاصيتن سان.

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

ويچاريهيٺ بيان ڪيل ماحول جي سيٽ اپ جو طريقو هڪ ممڪن طريقو آهي. مقصد تجزيو لاءِ گهربل ماحول کي ترتيب ڏيڻ ۽ تجزيي کي هلائڻ لاءِ قدمن جو مظاهرو ڪرڻ آهي. شايد، توهان جي صورت ۾، ماحول جي تياري جي مرحلن (ذخيرن کي شامل ڪرڻ، تجزيي کي نصب ڪرڻ) ۽ تجزيي کي الڳ ڪرڻ وڌيڪ بهتر هوندو: مثال طور، گهربل ماحول سان ڊاڪر تصويرون تيار ڪرڻ ۽ انهن کي استعمال ڪرڻ، يا ڪو ٻيو طريقو.

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

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

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

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

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

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

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

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

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

تجزيي جي انسٽاليشن جي تياري:

  - 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:
  - plog-converter -t html -o eLog ./PVS-Studio.json

افاديت پلگ ڪنورٽر — هڪ اوپن سورس پروجيڪٽ آهي جيڪو پارسر ايرر رپورٽن کي مختلف فارميٽ ۾ تبديل ڪرڻ لاءِ استعمال ڪيو ويندو آهي، جهڙوڪ HTML. يوٽيلٽي جي وڌيڪ تفصيلي وضاحت "پلاگ ڪنورٽر يوٽيلٽي" سب سيڪشن ۾ ڏني وئي آهي. دستاويز جو لاڳاپيل حصو.

رستي ۾، جيڪڏهن توهان IDE مان مقامي طور تي .json رپورٽ سان آساني سان ڪم ڪرڻ چاهيو ٿا، ته مان صلاح ڏيان ٿو ته اسان جو پلگ ان 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 ۾ ضم جي درخواستن جو تجزيو ڪرڻ
اسان ڏٺو نوڪري ڪامياب ٿي وئي. - ڪاميابي، سڀ ڪجهه شاندار آهي. هاڻي اسان جانچ ڪري سگهون ٿا ته اسان ڇا ڪيو آهي.

ڪم جا مثال

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

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

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

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

اچو ته غلطي سان مثال جي تجزيو جي نتيجي تي نظر وجهون. انهي سان گڏ، اهو يقيني بڻائڻ لاءِ ته صرف هڪ فائل جو تجزيو ڪيو ويو، مون هڪ جھنڊو شامل ڪيو. -r پي وي ايس-اسٽوڊيو-ڊاٽ نيٽ لانچ لائن ۾:

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 ۾ ضم جي درخواستن جو تجزيو ڪرڻ
جيڪڏهن توهان هن مضمون کي انگريزي ڳالهائيندڙ سامعين سان شيئر ڪرڻ چاهيو ٿا، ته مهرباني ڪري ترجمي جي لنڪ استعمال ڪريو: نڪولائي ميرونوف. C# لاءِ PVS-Studio استعمال ڪندي GitLab ۾ ضم جي درخواستن جو تجزيو.

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

DDoS تحفظ سان سائيٽن لاءِ قابل اعتماد هوسٽنگ خريد ڪريو، VPS VDS سرور 🔥 DDoS تحفظ سان قابل اعتماد ويب سائيٽ هوسٽنگ خريد ڪريو، VPS VDS سرورز | ProHoster