V537 غور ڪريو 'y' شين جي استعمال جي صحيحيت جو جائزو وٺو.
جيڪڏھن توھان چاھيو ٿا ته پنھنجي ھٿن کي ھن غلطي ۾، ھڪڙي تيار ڪيل مثال جي ڪوشش ڪريو Compiler Explorer ۾: *روئڻ*.
۽ جيئن توهان سمجھو ٿا، اهو هميشه ممڪن ناهي ته ڪوڊ جي اهڙن حصن تي فوري طور تي ڌيان ڏيو، ۽ انهي جي ڪري، توهان هڪ سٺي ڪلاڪ لاء ڊيبگنگ ڪري سگهو ٿا، حيران ٿي ته هر شيء ايترو عجيب ڪم ڪري ٿي.
بهرحال، اهو واضح طور تي هڪ غلطي آهي. ڇا ٿيندو جيڪڏهن ڊولپر suboptimal ڪوڊ لکيو ڇو ته هن ٻولي جي ڪجهه ذيلي ذخيري کي وساري ڇڏيو؟ يا ان کي ڪوڊ ۾ پڻ اجازت ڏني وئي غير واضح رويي؟ بدقسمتي سان، اهڙا ڪيس مڪمل طور تي عام آهن ۽ وقت جو وڏو حصو ڊيبگنگ ۾ خرچ ڪيو ويندو آهي خاص طور تي ڪم ڪندڙ ڪوڊ جنهن ۾ ٽائپس، عام غلطيون يا اڻ ڄاڻايل رويي شامل آهن.
اهو انهن حالتن لاء آهي ته جامد تجزيو ظاهر ٿيو. هي ڊولپر لاءِ هڪ اسسٽنٽ آهي جيڪو ڪوڊ ۾ مختلف مسئلن جي نشاندهي ڪندو ۽ دستاويزن ۾ وضاحت ڪندو ته ان طريقي سان لکڻ ضروري ڇو نه آهي، اهو ڇا ٿي سگهي ٿو ۽ ان کي ڪيئن حل ڪجي. هتي هڪ مثال آهي ته اهو ڇا ٿي سگهي ٿو: *روئڻ*.
ھاڻي جڏھن توھان ھي مواد پڙھيو آھي ۽ جامد تجزيو جي فائدن جا قائل آھيو، توھان شايد ان کي آزمائڻ چاھيو. پر ڪٿان شروع ڪجي؟ توهان جي موجوده منصوبي ۾ هڪ نئين اوزار کي ڪيئن ضم ڪرڻ؟ ۽ هن کي ٽيم ڪيئن متعارف ڪرايو؟ توھان ھيٺ ڏنل سوالن جا جواب ڳوليندا.
نوٽ: جامد تجزيو اهڙي مفيد شيءِ کي تبديل يا منسوخ نٿو ڪري جيئن ڪوڊ جائزو. اهو هن عمل کي پورو ڪري ٿو، اڳ ۾ ئي ٽائپس، غلطيون، ۽ خطرناڪ ڊيزائن کي نوٽيس ۽ درست ڪرڻ ۾ مدد ڪري ٿو. اهو تمام گهڻو ڪارائتو آهي ڪوڊ جي نظرثانين تي الورورٿمز ۽ ڪوڊ جي وضاحت تي ڌيان ڏيڻ بجاءِ غلط جاءِ تي قوس يا بورنگ موازنہ افعال پڙهو.
0. اوزار جي ڄاڻ حاصل ڪرڻ
اهو سڀ هڪ آزمائشي ورجن سان شروع ٿئي ٿو. درحقيقت، اهو ڏکيو آهي ته ڪنهن به شيء کي ترقي جي عمل ۾ لاڳو ڪرڻ جو فيصلو ڪيو وڃي جيڪڏهن توهان ڪڏهن به اوزار کي اڳ ۾ نه ڏٺو آهي. تنهن ڪري، پهرين شيء توهان کي ڪرڻ گهرجي ڊائون لوڊ آهي آزمائشي نسخو.
هن مرحلي ۾ توهان ڇا سکندا:
تجزيه نگار سان لهه وچڙ جا ڪهڙا طريقا آهن؛
ڇا تجزيو ڪندڙ توهان جي ترقي واري ماحول سان مطابقت رکي ٿو؟
توهان جي منصوبن ۾ هن وقت ڪهڙا مسئلا آهن؟
توھان کان پوءِ توھان کي ھر شيءِ انسٽال ڪرڻ کان پوءِ توھان کي ضرورت آھي، پھرين شيءِ توھان کي ڪرڻ گھرجي پوري منصوبي جو تجزيو ڪرڻ (ونڊوز, لينڪس, macOS). بصري اسٽوڊيو ۾ PVS-اسٽوڊيو جي صورت ۾ توهان هڪ جهڙي تصوير ڏسندا (ڪلڪ ڪرڻ لائق):
حقيقت اها آهي ته جامد تجزيه ڪندڙ اڪثر ڪري وڏي تعداد ۾ ڊيڄاريندڙن کي جاري ڪن ٿا منصوبن لاءِ وڏي ڪوڊ بيس سان. انهن سڀني کي درست ڪرڻ جي ڪا ضرورت ناهي، ڇو ته توهان جو منصوبو اڳ ۾ ئي ڪم ڪري رهيو آهي، جنهن جو مطلب آهي ته اهي مسئلا نازڪ نه آهن. تنهن هوندي به، توهان توھان ڏسي سگھوٿا سڀ کان وڌيڪ دلچسپ ڊيڄاريندڙ ۽ جيڪڏهن ضروري هجي ته ان کي درست ڪريو. هن کي ڪرڻ لاء، توهان کي آئوٽ فلٽر ڪرڻ جي ضرورت آهي ۽ صرف سڀ کان وڌيڪ قابل اعتماد پيغام ڇڏي ڏيو. بصري اسٽوڊيو لاءِ PVS-اسٽوڊيو پلگ ان ۾، اهو ڪيو ويندو آهي فلٽرنگ ذريعي غلطي جي سطحن ۽ زمرے. سڀ کان وڌيڪ صحيح پيداوار لاء، صرف ڇڏي ڏيو هاء и جنرل (پڻ ڪلڪ ڪري سگهجي ٿو):
ٽيب ۾ وچولو и گھٽ اڪثر ڪري چڱا ڊيڄاريندڙ هوندا آهن، پر انهن قسمن ۾ اهي تشخيص شامل آهن جن ۾ گهٽ درستي (معتبر) آهي. ڊيڄاريندڙ سطحن ۽ ونڊوز تحت ڪم ڪرڻ لاءِ اختيارن بابت وڌيڪ معلومات هتي ملي سگهي ٿي: *روئڻ*.
ڪاميابيءَ سان تمام دلچسپ غلطين جو جائزو وٺڻ (۽ ڪاميابيءَ سان انھن کي درست ڪيو) قابل آھي باقي ڊيڄاريندڙن کي دٻايو. اهو ضروري آهي ته نئين ڊيڄاريندڙن جي وچ ۾ گم ٿي نه وڃن. ان کان سواء، هڪ جامد تجزيه ڪندڙ پروگرامر لاء هڪ اسسٽنٽ آهي، ۽ نه ڪي جي فهرست. 🙂
1. خودمختاري
واقف ٿيڻ کان پوء، اهو پلگ ان کي ترتيب ڏيڻ ۽ CI ۾ ضم ڪرڻ جو وقت آهي. اهو ٿيڻ گهرجي ان کان اڳ جو پروگرامر جامد تجزيي کي استعمال ڪرڻ شروع ڪن. حقيقت اها آهي ته پروگرامر تجزيي کي فعال ڪرڻ لاء وساري سگهي ٿو يا اهو نه ڪرڻ چاهيندو آهي. هن کي ڪرڻ لاءِ، توهان کي هر شيءِ جي حتمي جانچ ڪرڻ جي ضرورت آهي ته جيئن اڻ جانچيل ڪوڊ جنرل ڊولپمينٽ برانچ ۾ نه اچي سگهي.
هن مرحلي ۾ توهان ڇا سکندا:
اوزار ڪهڙي آٽوميشن جا اختيار مهيا ڪندو آهي؛
ڇا تجزيو ڪندڙ توهان جي اسيمبليء جي نظام سان مطابقت رکي ٿو؟
جيئن ته مڪمل دستاويز موجود ناهي، ڪڏهن ڪڏهن توهان کي لکڻو پوندو مدد. اهو عام آهي ۽ اسان توهان جي مدد ڪرڻ ۾ خوش آهيون. 🙂
ھاڻي اچو ته ھلون لڳاتار انضمام (CI) خدمتن ڏانھن. ڪنهن به تجزيي کي ڪنهن به سنجيده مسئلن کان سواء انهن ۾ لاڳو ڪري سگهجي ٿو. هن کي ڪرڻ لاء، توهان کي پائپ لائن ۾ هڪ الڳ اسٽيج ٺاهڻ جي ضرورت آهي، جيڪا عام طور تي تعمير ۽ يونٽ ٽيسٽ کان پوء واقع آهي. اهو مختلف ڪنسول افاديت استعمال ڪندي ڪيو ويندو آهي. مثال طور، PVS-اسٽوڊيو مهيا ڪري ٿو هيٺين افاديت:
توھان وڌيڪ پڙھي سگھو ٿا PVS-Studio کي ترتيب ڏيڻ بابت ونڊوز تي هلندڙ سسٽم *هتي*.
انسٽاليشن کان پوء، توهان کي سڌو سنئون تجزيو هلائڻ جي ضرورت آهي. تنهن هوندي به، ان کي ڪرڻ جي صلاح ڏني آهي صرف تاليف ۽ ٽيسٽ پاس ڪرڻ کان پوء. اهو ئي سبب آهي ته جامد تجزيي عام طور تي تاليف جي ڀيٽ ۾ ٻه ڀيرا وٺندو آهي.
جيئن ته لانچ جو طريقو پليٽ فارم ۽ پروجيڪٽ جي خاصيتن تي منحصر آهي، آئون مثال طور C++ (لينڪس) لاءِ اختيار ڏيکاريندس:
ٺيڪ آهي، توهان تجزيي کي ترتيب ڏيڻ واري سرور تي ترتيب ڏنو آهي. هاڻي، جيڪڏهن ڪو اڻ ٽيسٽ ٿيل ڪوڊ اپ لوڊ ڪري ٿو، تصديق جو مرحلو ناڪام ٿي ويندو، ۽ توهان مسئلي کي معلوم ڪرڻ جي قابل ٿي ويندا، جڏهن ته، اهو مڪمل طور تي آسان ناهي، ڇاڪاڻ ته اهو وڌيڪ ڪارائتو آهي ته پروجيڪٽ کي جانچڻ کان پوء شاخن کي ضم ٿيڻ کان پوء نه، پر. ان کان اڳ، پل جي درخواست جي اسٽيج تي.
عام طور تي، هڪ پل جي درخواست جي تجزيو کي ترتيب ڏيڻ CI تي تجزيي جي معمولي لانچ کان گهڻو مختلف ناهي. تبديل ٿيل فائلن جي فهرست حاصل ڪرڻ جي ضرورت کان سواء. اهي عام طور تي حاصل ڪري سگھجن ٿيون شاخن جي وچ ۾ فرق پڇڻ سان git استعمال ڪندي:
git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list
ھاڻي توھان کي فائلن جي ھن لسٽ کي ان پٽ طور تجزيو ڪندڙ ڏانھن منتقل ڪرڻ جي ضرورت آھي. مثال طور، PVS-اسٽوڊيو ۾ اهو پرچم استعمال ڪندي لاڳو ڪيو ويو آهي -S:
توهان پل جي درخواستن جي تجزيو بابت وڌيڪ ڳولي سگهو ٿا *هتي*. جيتوڻيڪ توهان جو CI مضمون ۾ ذڪر ڪيل خدمتن جي فهرست تي نه آهي، توهان کي هن قسم جي تجزيي جي نظريي لاء وقف ڪيل عام سيڪشن مفيد ملندو.
پل جي درخواستن جي تجزيي کي ترتيب ڏيڻ سان، توهان ڊيڄاريندڙن تي مشتمل ڪمن کي بلاڪ ڪري سگهو ٿا، اهڙي طرح هڪ حد ٺاهي ٿي جيڪا اڻ آزمائشي ڪوڊ پار نه ٿي سگهي.
اهو سڀ ڪجهه ضرور سٺو آهي، پر مان چاهيان ٿو ته سڀني ڊيڄاريندڙن کي هڪ جاءِ تي ڏسي سگهان. نه رڳو جامد تجزيي کان، پر يونٽ ٽيسٽ يا متحرڪ تجزيي کان پڻ. ھن لاءِ مختلف خدمتون ۽ پلگ ان آھن. PVS-اسٽوڊيو، مثال طور، آهي SonarQube ۾ انضمام لاءِ پلگ ان.
2. ڊولپر مشينن تي انضمام
هاڻي اهو وقت آهي انسٽال ڪرڻ ۽ ترتيب ڏيڻ جو تجزيه روزمره جي ترقي جي استعمال لاءِ. ھن نقطي تائين توھان اڳ ۾ ئي ڪم ڪرڻ جي گھڻن طريقن کان واقف ٿي چڪا آھيو، تنھنڪري اھو سڀ کان آسان حصو چئي سگھجي ٿو.
آسان ترين اختيار جي طور تي، ڊولپرز پاڻ کي لازمي تجزيي کي نصب ڪري سگھن ٿا. بهرحال، اهو گهڻو وقت وٺندو ۽ انهن کي ترقي کان پريشان ڪندو، تنهنڪري توهان انسٽالر ۽ ضروري پرچم استعمال ڪندي هن عمل کي خودڪار ڪري سگهو ٿا. PVS-اسٽوڊيو لاء مختلف آهن خودڪار تنصيب لاء پرچم. بهرحال، اتي هميشه پئڪيج مينيجرز آهن، مثال طور، چاڪليٽ (ونڊوز)، هومبرو (macOS) يا لينڪس لاءِ درجن جا آپشن.
هن اسٽيج تي، اهو وقت آهي چند لفظن کي روزاني استعمال دوران تجزيي کي تيز ڪرڻ جي طريقن بابت. پوري پروجيڪٽ جي مڪمل تجزيي ۾ تمام گهڻو وقت لڳندو آهي، پر اسان ڪيترا ڀيرا ڪوڊ تبديل ڪريون ٿا پوري پروجيڪٽ ۾ هڪ ئي وقت؟ هتي شايد ئي ڪو ريفيڪٽرنگ آهي جيڪو ايترو وڏو آهي ته اهو فوري طور تي پوري ڪوڊ بيس کي متاثر ڪندو. فائلن جو تعداد هڪ وقت ۾ تبديل ٿي رهيو آهي گهٽ ۾ گهٽ هڪ درجن کان وڌيڪ آهي، تنهنڪري اهو انهن جو تجزيو ڪرڻ جو احساس آهي. اهڙي صورتحال لاء اتي آهي وڌندڙ تجزيو موڊ. بس پريشان نه ٿيو، هي ٻيو اوزار ناهي. هي هڪ خاص موڊ آهي جيڪو توهان کي صرف تبديل ٿيل فائلن ۽ انهن جي انحصار جو تجزيو ڪرڻ جي اجازت ڏئي ٿو، ۽ اهو خود بخود ٿي ويندو عمارت کان پوءِ جيڪڏهن توهان هڪ IDE ۾ ڪم ڪري رهيا آهيو پلگ ان سان.
جيڪڏهن تجزيه ڪندڙ تازو تبديل ٿيل ڪوڊ ۾ مسئلا ڳولي ٿو، اهو آزاديء سان رپورٽ ڪندو. مثال طور، PVS-Studio توهان کي ان بابت خبردار ڪندي ٻڌائيندو:
يقينا، ڊولپرز کي اوزار استعمال ڪرڻ لاء ڪافي نه آهي. اسان کي ڪنهن به طرح انهن کي ٻڌائڻ جي ضرورت آهي ته اهو ڇا آهي ۽ اهو ڪيئن آهي. هتي، مثال طور، PVS-Studio لاءِ تڪڙي شروعات بابت آرٽيڪل آهن، پر توهان ڳولي سگهو ٿا ساڳيا سبق ڪنهن به اوزار لاءِ جيڪي توهان چاهيو ٿا:
اهڙا آرٽيڪل روزمره جي استعمال لاءِ تمام ضروري معلومات مهيا ڪن ٿا ۽ گهڻو وقت نٿا وٺن. 🙂
جيتوڻيڪ اوزار کي ڄاڻڻ جي اسٽيج تي، اسان پهرين لانچن مان هڪ دوران ڪيترن ئي ڊيڄاريندڙن کي دٻايو. بدقسمتي سان، جامد تجزيي وارا مڪمل نه آهن، تنهنڪري وقت وقت تي اهي غلط مثبت ڏيو. اهو عام طور تي انهن کي دٻائڻ آسان آهي؛ مثال طور، PVS-Studio پلگ ان ۾ Visual Studio لاءِ توهان کي صرف هڪ بٽڻ تي ڪلڪ ڪرڻ جي ضرورت آهي:
تنهن هوندي، توهان صرف انهن کي دٻائڻ کان وڌيڪ ڪري سگهو ٿا. مثال طور، توهان مدد لاء هڪ مسئلو رپورٽ ڪري سگهو ٿا. جيڪڏهن غلط مثبت کي درست ڪري سگهجي ٿو، ته پوءِ مستقبل جي تازه ڪارين ۾ توهان نوٽيس ڪري سگهو ٿا ته هر وقت توهان جي ڪوڊ بيس لاءِ مخصوص ۽ گهٽ غلط مثبت آهن.
انضمام کان پوء
تنهنڪري اسان ترقي جي عمل ۾ جامد تجزيي کي ضم ڪرڻ جي سڀني مرحلن مان گذري چڪا آهيون. CI تي اهڙن اوزارن کي ترتيب ڏيڻ جي اهميت جي باوجود، انهن کي هلائڻ لاءِ سڀ کان اهم جڳهه ڊولپر جو ڪمپيوٽر آهي. آخرڪار، هڪ جامد تجزيه ڪندڙ جج نه آهي جيڪو توهان کان پري ڪٿي چوي ٿو ته ڪوڊ سٺو ناهي. ان جي برعڪس، اهو هڪ اسسٽنٽ آهي جيڪو توهان کي ٻڌائي ٿو ته توهان ٿڪل آهيو ۽ توهان کي ياد ڏياريندو آهي ته توهان ڪجهه وساري ڇڏيو آهي.
سچ، باقاعده استعمال کان سواء، جامد تجزيو ممڪن ناهي ته ترقي کي آسان بڻائي سگهجي. آخرڪار، هڪ ڊولپر لاء ان جو بنيادي فائدو ڪوڊ جي پيچيده ۽ تڪراري حصن جي ڳولا ۾ گهڻو نه آهي، پر انهن جي شروعاتي ڳولڻ ۾. ان ڳالهه تي متفق آهيون ته تبديلين جي جاچ لاءِ موڪلڻ کان پوءِ ڪنهن مسئلي کي دريافت ڪرڻ نه رڳو ناپسنديده آهي، پر تمام گهڻو وقت وٺندڙ به آهي. جامد تجزيو، جڏهن باقاعده استعمال ڪيو وڃي، هر تبديلي کي سڌو سنئون توهان جي ڪمپيوٽر تي ڏسي ٿو ۽ ڪوڊ تي ڪم ڪرڻ دوران مشڪوڪ هنڌن جي رپورٽ ڪري ٿو.
۽ جيڪڏهن توهان يا توهان جا ساٿي اڃا تائين پڪ ناهي ته ڇا اهو تجزيي کي لاڳو ڪرڻ جي قابل آهي، پوء مان توهان کي مشورو ڏيان ٿو ته توهان هاڻي آرٽيڪل پڙهڻ شروع ڪيو "جامد ڪوڊ اينالائيزر PVS-Studio کي ترقي جي عمل ۾ متعارف ڪرائڻ جا سبب". اهو ڊولپرز جي عام خدشات کي حل ڪري ٿو ته جامد تجزيي انهن جو وقت وٺي ويندي وغيره وغيره.
جيڪڏهن توهان هن مضمون کي انگريزي ڳالهائيندڙ سامعين سان حصيداري ڪرڻ چاهيو ٿا، مهرباني ڪري ترجمو لنڪ استعمال ڪريو: Maxim Zvyagintsev. جامد تجزيو: شروعات کان وٺي انضمام تائين.