৪.৪ স্ট্যাটিক বিশ্লেষণ ও কোড স্মেল মেট্রিক
সারসংক্ষেপ এবং প্রেরণা
স্ট্যাটিক বিশ্লেষণ টুল উৎস কোড কার্যকর না করেই স্ক্যান করে, ত্রুটি, নিরাপত্তা দুর্বলতা, বা রক্ষণাবেক্ষণযোগ্যতা সমস্যার সাথে সহসম্পর্কিত জানা প্যাটার্ন চিহ্নিত করে: অপৌঁছনীয় কোড, বন্ধ না করা সম্পদ, সন্দেহজনক টাইপ জবরদস্তি, নকল যুক্তি, এবং কোড স্মেল-এর বিস্তৃত শ্রেণী, কাঠামোগত প্যাটার্ন যা অগত্যা বাগ নয় কিন্তু কোডকে বোঝা, পরীক্ষা করা, বা নিরাপদে পরিবর্তন করা কঠিনতর করে তোলার প্রবণতা রাখে। স্ট্যাটিক বিশ্লেষণ হলো এই পর্বের অন্যান্য বিষয়ের আরও লক্ষ্যযুক্ত মেট্রিকের নিচের স্বয়ংক্রিয়, ক্রমাগত স্তর, প্রতিটি কমিটে চলে এবং একটি পর্যায়ক্রমিক নিরীক্ষার জন্য অপেক্ষা করার বদলে সমস্যা প্রবর্তিত হওয়ার মুহূর্তে প্রকাশ করে।
এই বিষয়ের কেন্দ্রীয় উদ্বেগ হলো স্ট্যাটিক বিশ্লেষণ টুল যা প্রতিবেদন করে এবং প্রকৃতপক্ষে যা গুরুত্বপূর্ণ তার মধ্যে ফাঁক। একটি টুল একটি বড় কোডবেস জুড়ে হাজার হাজার অনুসন্ধান চিহ্নিত করতে পারে, এবং একা অনুসন্ধানের সংখ্যা একটি খারাপ মেট্রিক, যেহেতু এটি তুচ্ছ শৈলী পছন্দকে প্রকৃত, গুরুতর ঝুঁকির সাথে গুলিয়ে ফেলে, এবং এটি প্রকৃত সমাধানের মাধ্যমে যতটা সহজে বাদ দেওয়ার মাধ্যমে ততটাই সহজে কমানো যায়। স্ট্যাটিক বিশ্লেষণের মূল্য কাঁচা অনুসন্ধান গণনা থেকে নয় বরং একটি প্রতিষ্ঠান কতটা ভালোভাবে তীব্রতা ট্রিয়াজ করে, প্রতিগমন প্রতিরোধ করে, এবং টুলের বিচারকে মানুষের পর্যালোচনার একটি বিকল্প হিসেবে বিবেচনা করার প্রলোভন প্রতিরোধ করে তার এর পরিপূরক হিসেবে থেকে আসে।
বড় দলের জন্য, স্ট্যাটিক বিশ্লেষণ একমাত্র ব্যবহারিক উপায় একটি কোডবেস জুড়ে কোড গুণমান ও নিরাপত্তা স্বাস্থ্যবিধির একটি বেসলাইন প্রয়োগ করা যা কোনো দল সম্পূর্ণভাবে ম্যানুয়ালি পর্যালোচনা করতে পারার চেয়ে বড়। প্রায়ই নিরাপদ কোডিং অনুশীলনের চারপাশে সম্মতি প্রয়োজনীয়তার সম্মুখীন এন্টারপ্রাইজ ও সরকারি প্রতিষ্ঠান নথিভুক্ত, নিরীক্ষাযোগ্য প্রমাণ হিসেবে স্ট্যাটিক বিশ্লেষণের উপর নির্ভর করে যে পরীক্ষার একটি বেসলাইন স্তর সামঞ্জস্যপূর্ণভাবে প্রয়োগ করা হয়েছিল, শুধু যখন একজন মানুষ পর্যালোচক একটি সমস্যা লক্ষ্য করেছিলেন তখন নয়।
মূল নীতিসমূহ
- কাঁচা অনুসন্ধান গণনা নিজে থেকে একটি খারাপ মেট্রিক। এটি তুচ্ছ ও গুরুতর সমস্যা গুলিয়ে ফেলে, এবং এটি প্রকৃত সমাধানের বদলে বাদ দেওয়ার মাধ্যমে কারচুপি করা যায়।
- আয়তনের চেয়ে তীব্রতা ট্রিয়াজ বেশি গুরুত্বপূর্ণ। সমালোচনামূলক অনুসন্ধানের একটি ছোট সংখ্যা তুচ্ছগুলোর একটি বড় সংখ্যার চেয়ে বেশি মনোযোগের যোগ্য।
- স্ট্যাটিক বিশ্লেষণ মানুষের পর্যালোচনার পরিপূরক; এটি এটি প্রতিস্থাপন করে না। টুল প্যাটার্ন ধরে; এগুলো উদ্দেশ্য বা ব্যবসায়িক প্রেক্ষাপট বোঝে না।
- একটি “নতুন প্রবর্তিত সমস্যা” প্রবণতা একটি মোট ব্যাকলগ গণনার চেয়ে বেশি কার্যকরী। এটি আপনাকে বলে বর্তমান অনুশীলন উন্নত হচ্ছে নাকি প্রতিগমন করছে।
- মিথ্যা ইতিবাচক টুলে বিশ্বাস ক্ষয় করে। একটি অব্যবস্থাপিত মিথ্যা-ইতিবাচক হার দলকে প্রকৃতগুলোসহ অনুসন্ধান সম্পূর্ণভাবে উপেক্ষা করতে পরিচালিত করে।
সুপারিশসমূহ
কাঁচা গণনা নয়, তীব্রতা-ভারযুক্ত অনুসন্ধান ট্র্যাক করুন
তীব্রতা দ্বারা অনুসন্ধান শ্রেণীবদ্ধ করতে আপনার স্ট্যাটিক বিশ্লেষণ টুলিং কনফিগার করুন (সমালোচনামূলক, উচ্চ, মাঝারি, নিম্ন, বা একটি সমতুল্য স্কেল), এবং একটি সমতল মোট গণনার বদলে একটি তীব্রতা-ভারযুক্ত প্রবণতা ট্র্যাক করুন। শূন্য সমালোচনামূলক অনুসন্ধান ও পাঁচশত নিম্ন-তীব্রতার শৈলী পরামর্শসহ একটি কোডবেস পঞ্চাশটি সমালোচনামূলক অনুসন্ধান ও কোনো শৈলী সমস্যা ছাড়াই একটির চেয়ে খুবই ভিন্ন অবস্থায় আছে, এবং একটি কাঁচা গণনা এদের মোটামুটি সমতুল্য হিসেবে বিবেচনা করে যখন সেগুলো নয়।
সম্পূর্ণ ঐতিহাসিক ব্যাকলগে নয়, প্রবর্তিত নতুন অনুসন্ধানে গেট করুন
বেশিরভাগ প্রতিষ্ঠিত কোডবেস বর্তমান অনুশীলনের পূর্ববর্তী অনুসন্ধানের একটি উত্তরাধিকার ব্যাকলগ বহন করে এবং একসাথে সবকিছু ঠিক করা নিষেধমূলকভাবে ব্যয়বহুল হবে। সম্পূর্ণ ব্যাকলগ পরিষ্কার না হওয়া পর্যন্ত সব কাজ ব্লক করার বদলে, একটি নির্দিষ্ট পরিবর্তন একটি সম্মত তীব্রতা প্রান্তিকের উপরে নতুন অনুসন্ধান প্রবর্তন করে কিনা তার উপর CI গেট করুন, স্বাভাবিক রক্ষণাবেক্ষণের মাধ্যমে ব্যাকলগকে ধীরে ধীরে সংকুচিত হতে দেওয়ার সময় আরও সঞ্চয় প্রতিরোধ করে। এই পার্থক্যটি বিষয় ৪.২-এর কভারেজ-মেঝে সুপারিশকে প্রতিফলিত করে: একটি অবাস্তব, একসাথে-সবকিছু সমাধান দাবি করার বদলে প্রতিগমনের বিরুদ্ধে রক্ষা করুন।
সক্রিয়ভাবে মিথ্যা-ইতিবাচক হার পরিচালনা করুন
পর্যায়ক্রমিকভাবে অনুসন্ধানের একটি নমুনা পর্যালোচনা করুন, বিশেষত উচ্চ আয়তনসহ যে কোনো শ্রেণী, এবং পরীক্ষা করুন কতগুলো প্রকৃত মিথ্যা ইতিবাচক, যেখানে টুলটি এমন একটি প্যাটার্ন চিহ্নিত করেছে যা প্রেক্ষাপটে প্রকৃতপক্ষে সমস্যাযুক্ত নয়। নির্দিষ্টভাবে প্রকৃতপক্ষে গোলমালপূর্ণ, নিম্ন-মূল্যের নিয়ম শ্রেণী দমন করতে নিয়ম কনফিগারেশন টিউন করুন, দলকে টুলের আউটপুট সম্পূর্ণভাবে উপেক্ষা করার অভ্যাস গড়ে তুলতে দেওয়ার বদলে কারণ এর অনেকটাই গোলমাল। একটি উচ্চ, অব্যবস্থাপিত মিথ্যা-ইতিবাচক হার একটি স্ট্যাটিক বিশ্লেষণ কর্মসূচির বিশ্বাসযোগ্যতা ধ্বংস করার একক দ্রুততম উপায়।
একটি স্বয়ংক্রিয় রায় হিসেবে নয়, পর্যালোচনার জন্য একটি প্রম্পট হিসেবে স্ট্যাটিক বিশ্লেষণ অনুসন্ধান ব্যবহার করুন
এমনকি একটি বৈধ, অ-মিথ্যা-ইতিবাচক অনুসন্ধান সবসময় একটি স্বয়ংক্রিয়, বাধ্যতামূলক সমাধান দাবি করে না; কিছু চিহ্নিত প্যাটার্ন একটি টুল দেখতে পারে না এমন নির্দিষ্ট প্রেক্ষাপটে গ্রহণযোগ্য। একজন মানুষের জন্য একটি হালকা প্রক্রিয়া তৈরি করুন পর্যালোচনা করতে এবং হয় ঠিক করতে বা একটি নথিভুক্ত কারণসহ একটি অনুসন্ধান স্পষ্টভাবে, দৃশ্যমানভাবে মওকুফ করতে, প্রতিটি অনুসন্ধান বাধ্যতামূলক হিসেবে অন্ধভাবে প্রয়োগ করা বা নীরব, অনথিভুক্ত দমন অনুমতি দেওয়ার বদলে যা সময়ের সাথে টুলের মূল্য ক্ষয় করে।
এই পর্বের অন্য কোড-গুণমান মেট্রিকের সাথে স্ট্যাটিক বিশ্লেষণ একত্রিত করুন
স্ট্যাটিক বিশ্লেষণ অনুসন্ধান, জটিলতা স্কোর (বিষয় ৪.১), এবং হটস্পট উপাত্ত (বিষয় ৪.৩) পরিপূরক প্রমাণ, প্রতিযোগী মেট্রিক নয়। একটি উচ্চ ঘনত্বসহ অসমাধানকৃত স্ট্যাটিক বিশ্লেষণ অনুসন্ধান একটি ফাইল যা একটি churn-জটিলতা হটস্পটও একটি বিশেষভাবে শক্তিশালী অগ্রাধিকারপ্রাপ্ত মনোযোগের প্রার্থী, যেহেতু একাধিক স্বাধীন সংকেত একই উপসংহারে একত্রিত হচ্ছে।
মূল্যবিচার: ভালো ও মন্দ দিক
| পদ্ধতি | ভালো দিক | মন্দ দিক |
|---|---|---|
| মেট্রিক হিসেবে কাঁচা অনুসন্ধান গণনা | প্রতিবেদন করা সরল | তুচ্ছ ও গুরুতর সমস্যা গুলিয়ে ফেলে; দমনের মাধ্যমে সহজে কারচুপি করা যায় |
| তীব্রতা-ভারযুক্ত প্রবণতা | প্রকৃত ঝুঁকি আরও সঠিকভাবে প্রতিফলিত করে | চলমান তীব্রতা-শ্রেণীবিভাগ রক্ষণাবেক্ষণ প্রয়োজন |
| সম্পূর্ণ ঐতিহাসিক ব্যাকলগে গেট করা | চূড়ান্ত কোড পরিচ্ছন্নতা সর্বাধিক করে | প্রতিষ্ঠিত কোডবেসের জন্য প্রায়ই অব্যবহারিক; সব কাজ থামাতে পারে |
| শুধু নতুন অনুসন্ধানে গেট করা | ব্যবহারিক, প্রতিগমন প্রতিরোধ করে, ব্যাকলগকে ধীরে ধীরে সংকুচিত হতে দেয় | একটি ইচ্ছাকৃত প্রতিকার পরিকল্পনা ছাড়া উত্তরাধিকার সমস্যা দীর্ঘতর টিকে থাকে |
কেন্দ্রীয় টানাপোড়েন হলো পুঙ্খানুপুঙ্খতা বনাম ব্যবহারিকতা। একটি স্ট্যাটিক বিশ্লেষণ নীতি যা কোনো নতুন কাজ এগিয়ে যাওয়ার আগে সম্পূর্ণ ঐতিহাসিক ব্যাকলগ সমাধান দাবি করে পুঙ্খানুপুঙ্খ কিন্তু প্রকৃত ইতিহাসসহ যে কোনো কোডবেসের জন্য সাধারণত অব্যবহারিক, এবং সেই চাপের অধীনে দল প্রকৃতপক্ষে তাদের ঠিক করার বদলে সম্পূর্ণভাবে অনুসন্ধান দমন করার প্রবণতা রাখে। কঠোরভাবে নতুন অনুসন্ধানে গেট করে এবং উত্তরাধিকার ব্যাকলগের বিরুদ্ধে একটি পৃথক, ইচ্ছাকৃতভাবে গতিযুক্ত প্রতিকার প্রচেষ্টা চালিয়ে, এই বিষয় ও বিষয় ৪.৩ সুপারিশকৃত তীব্রতা ও ক্রস-রেফারেন্সিং কৌশল ব্যবহার করে অগ্রাধিকারপ্রাপ্ত, টানাপোড়েন সমাধান করুন।
আপনার দলের সাথে আলোচনার প্রশ্ন
১. আমরা কি একটি তীব্রতা-ভারযুক্ত প্রবণতা ট্র্যাক করি, নাকি শুধু একটি কাঁচা মোট অনুসন্ধান গণনা? আপনার প্রকৃত ড্যাশবোর্ড টানুন এবং পরীক্ষা করুন; একটি কাঁচা গণনা অনেক টুলে ডিফল্টভাবে সাধারণ এবং প্রায়ই পরিবর্তে সঠিকভাবে তীব্রতা প্রকাশ করতে ইচ্ছাকৃত কনফিগারেশন প্রয়োজন।
২. অসমাধানকৃত অনুসন্ধানের আমাদের বর্তমান উত্তরাধিকার ব্যাকলগ কী, এবং আমাদের কি এটি কমানোর একটি ইচ্ছাকৃত, গতিযুক্ত পরিকল্পনা আছে, নাকি এটি শুধু অনির্দিষ্টকালের জন্য জমা হচ্ছে? একটি অসমাধানকৃত, নীরবে বেড়ে ওঠা ব্যাকলগ সাধারণ এবং অপরীক্ষিত রাখার বদলে সততার সাথে নাম দেওয়ার যোগ্য।
৩. আমাদের সর্বোচ্চ-আয়তনের অনুসন্ধান শ্রেণীর জন্য আমাদের অনুমিত মিথ্যা-ইতিবাচক হার কী, এবং আমরা কি প্রতিক্রিয়ায় নিয়ম কনফিগারেশন টিউন করেছি? যদি আপনি কখনও এটি পরীক্ষা না করে থাকেন, আপনার সবচেয়ে গোলমালপূর্ণ শ্রেণী থেকে অনুসন্ধানের একটি ব্যাচ নমুনা নিন এবং সততার সাথে মূল্যায়ন করুন কতগুলো প্রকৃতপক্ষে কার্যকরী।
৪. আমাদের দলের প্রকৌশলীরা কি স্ট্যাটিক বিশ্লেষণ অনুসন্ধান বিশ্বাস করেন, নাকি তারা এগুলো টিউন আউট করতে শিখেছেন কারণ আউটপুটের অনেকটাই গোলমাল? এটি দলকে জিজ্ঞাসা করার যোগ্য একটি সরাসরি, সৎ অন্তর্দৃষ্টি-পরীক্ষা প্রশ্ন, যেহেতু একটি টুল যা উপেক্ষা করা হয় এর তাত্ত্বিক ক্ষমতা নির্বিশেষে কোনো প্রকৃত মূল্য প্রদান করে না।
৫. একটি বৈধ অনুসন্ধান যা একটি দল বিশ্বাস করে নির্দিষ্ট প্রেক্ষাপট বিবেচনায় মওকুফ করা উচিত তা আমরা বর্তমানে কীভাবে পরিচালনা করি? পরীক্ষা করুন আপনার প্রক্রিয়া এটিকে একটি দৃশ্যমান, নথিভুক্ত সিদ্ধান্ত করে, নাকি এটি নীরব, অনথিভুক্ত দমনের মাধ্যমে ঘটে যা সময়ের সাথে টুলের সংকেত ক্ষয় করে।
৬. একই ফাইল বা মডিউলে স্ট্যাটিক বিশ্লেষণ অনুসন্ধান, জটিলতা স্কোর, এবং হটস্পট উপাত্ত কোথায় একত্রিত হয়? স্পষ্টভাবে এই তিনটি সংকেত ক্রস-রেফারেন্স করুন; একাধিক স্বাধীন মেট্রিক জুড়ে একত্রীকরণ কোনো একটি একার চেয়ে শক্তিশালী অগ্রাধিকার সংকেত।
ক্ষেত্র লেন্স
স্টার্টআপ। শুরু থেকে CI-তে একত্রিত একটি হালকাওজনের, বিনামূল্যের স্ট্যাটিক বিশ্লেষণ টুল সস্তা বীমা এবং প্রকৃত সমস্যা প্রথম দিকে ধরে, একটি উত্তরাধিকার ব্যাকলগ জমা হওয়ার কোনো সুযোগ পাওয়ার আগে। অবিলম্বে প্রতিটি উপলব্ধ নিয়ম সক্ষম করার বদলে নিয়ম সেটকে প্রকৃতপক্ষে উচ্চ-মূল্যের, কম-গোলমালের শ্রেণীতে ফোকাসকৃত রাখুন।
ছোট ব্যবসা। বেশিরভাগ আধুনিক ভাষা ইকোসিস্টেমে সক্ষম বিনামূল্যের স্ট্যাটিক বিশ্লেষণ টুলিং অন্তর্ভুক্ত; একটি বিচক্ষণ ডিফল্ট নিয়ম সেটসহ CI-তে এটি সক্ষম করতে সামান্য বিনিয়োগ প্রয়োজন। একসাথে যে কোনো পূর্ব-বিদ্যমান ব্যাকলগ সমাধান করার চেষ্টা করার বদলে নতুন অনুসন্ধান গেট করায় ফোকাস করুন।
এন্টারপ্রাইজ। এই মাত্রায় ইচ্ছাকৃতভাবে মিথ্যা-ইতিবাচক হার ও তীব্রতা ট্রিয়াজ ব্যবস্থাপনা অপরিহার্য হয়ে ওঠে, যেহেতু ডজন ডজন দল জুড়ে অতিরিক্ত গোলমাল উৎপাদনকারী একটি খারাপভাবে টিউন করা টুল প্রতিষ্ঠান-ব্যাপী উপেক্ষা করা হবে। স্ট্যাটিক বিশ্লেষণ টুলিং কনফিগারেশনের জন্য একজন নিবেদিত মালিকে বিনিয়োগ করুন, নিয়ম টিউনিংকে একটি একবারের সেটআপ কাজের বদলে একটি চলমান শৃঙ্খলা হিসেবে বিবেচনা করে।
সরকার। স্ট্যাটিক বিশ্লেষণ অনুসন্ধান, বিশেষত নিরাপত্তা-সম্পর্কিতগুলো, প্রায়ই সরাসরি সম্মতি ও নিরীক্ষা প্রয়োজনীয়তার সাথে প্রাসঙ্গিক। অনুসন্ধান কীভাবে ট্রিয়াজ, ঠিক, বা একটি রেকর্ডকৃত ন্যায্যতাসহ আনুষ্ঠানিকভাবে মওকুফ করা হয় তার জন্য একটি নথিভুক্ত, নিরীক্ষাযোগ্য প্রক্রিয়া বজায় রাখুন, যেহেতু এই নথিপত্র নিজেই প্রায়ই যা একজন বাহ্যিক নিরীক্ষক দেখতে চাইবেন।
উদাহরণ
এন্টারপ্রাইজ। একটি সফটওয়্যার কোম্পানির স্ট্যাটিক বিশ্লেষণ ড্যাশবোর্ড তীব্রতা-ভারযুক্ত ট্রিয়াজ ছাড়া বেশ কয়েক বছর পরে এর কোডবেস জুড়ে চল্লিশ হাজারেরও বেশি অসমাধানকৃত অনুসন্ধান সঞ্চয় করেছিল, একটি সংখ্যা এত বড় যে প্রকৌশলীরা মূলত ড্যাশবোর্ডটি দেখা বন্ধ করে দিয়েছিলেন। একটি সংশোধিত পদ্ধতি তীব্রতা দ্বারা অনুসন্ধান শ্রেণীবদ্ধ করেছিল, দুইশোর কম প্রকৃতপক্ষে সমালোচনামূলক পেয়েছিল, এবং নির্দিষ্টভাবে নতুন সমালোচনামূলক ও উচ্চ-তীব্রতার অনুসন্ধানে CI গেট করেছিল যখন নিম্ন-তীব্রতার ব্যাকলগকে স্বাভাবিক কোড রক্ষণাবেক্ষণের মাধ্যমে ধীরে ধীরে সংকুচিত হতে রেখেছিল। ছয় মাসের মধ্যে, সমালোচনামূলক অনুসন্ধান একক অঙ্কে নেমে এসেছিল, এবং, আরও গুরুত্বপূর্ণভাবে, প্রকৌশলী জরিপ উপাত্ত টুলের আউটপুটে পুনর্নবীকৃত বিশ্বাস দেখিয়েছিল এখন যে এটি একটি অভিভূতকারী, উপেক্ষিত ব্যাকলগের বদলে একটি ব্যবস্থাপনাযোগ্য, প্রকৃতপক্ষে কার্যকরী সংকেত প্রকাশ করেছিল।
সরকার। একটি প্রতিরক্ষা সংস্থার সফটওয়্যার সরবরাহ-শৃঙ্খল নিরাপত্তা নীতি যে কোনো মুক্তির আগে শূন্য অসমাধানকৃত অনুসন্ধানসহ স্ট্যাটিক বিশ্লেষণ স্ক্যানিং প্রয়োজন করেছিল, একটি নীতি যা, প্র্যাকটিসে, উন্নয়ন দলকে একটি অকার্যকর সব-অথবা-কিছুই-না গেটের অধীনে শুধু মুক্তির সময়সীমা পূরণ করতে কিছু প্রকৃত নিরাপত্তা সমস্যাসহ বিপুল সংখ্যক অনুসন্ধান দমন করতে পরিচালিত করেছিল। একটি সংশোধিত নীতির প্রয়োজন ছিল যে কোনো নির্দিষ্ট মুক্তি দ্বারা প্রবর্তিত শূন্য নতুন সমালোচনামূলক বা উচ্চ-তীব্রতার অনুসন্ধান, উত্তরাধিকার ব্যাকলগের জন্য একটি নথিভুক্ত, ট্র্যাক করা প্রতিকার পরিকল্পনা ও সময়রেখার সাথে একত্রিত, ত্রৈমাসিকভাবে একটি নিরাপত্তা শাসন বোর্ড দ্বারা পর্যালোচিত। এই ব্যবহারিক, পর্যায়ক্রমিক পদ্ধতি উভয়ই নতুন কোডে প্রকৃত নিরাপত্তা পরীক্ষা পুনরুদ্ধার করেছিল এবং আঠারো মাস ধরে উত্তরাধিকার ব্যাকলগের বিরুদ্ধে প্রকৃত, পরিমাপযোগ্য অগ্রগতি করেছিল, পূর্ববর্তী অকার্যকর নীতির বিপরীতে যা মূলত প্রকৃত সমাধানের বদলে দমন উৎপাদন করেছিল।
ব্যবসায়িক যুক্তি: প্রেরণা, ROI, এবং TCO
সুব্যবস্থাপিত স্ট্যাটিক বিশ্লেষণের রিটার্ন হলো প্রকৃত ত্রুটি ও নিরাপত্তা দুর্বলতা তারা উৎপাদনে পৌঁছানোর আগে ধরা, একই কভারেজের জন্য সমতুল্য মানুষের পর্যালোচনা প্রচেষ্টা প্রয়োজন হতো তার চেয়ে অনেক কম খরচে। উপরের প্রতিরক্ষা সংস্থা উদাহরণ এটি ভুল পাওয়ার খরচ দেখায়: একটি অকার্যকর, সব-অথবা-কিছুই-না নীতি দমন চালিয়ে প্রকৃতপক্ষে প্রকৃত নিরাপত্তা পরীক্ষা কমিয়েছিল, এর উদ্দেশ্যের বিপরীত।
মোট মালিকানা খরচে টুলিং নিজেই অন্তর্ভুক্ত, সাধারণ ভাষা ইকোসিস্টেমের জন্য প্রায়ই বিনামূল্যে বা কম-খরচের, এবং তীব্রতা ট্রিয়াজ, মিথ্যা-ইতিবাচক ব্যবস্থাপনা, এবং উত্তরাধিকার-ব্যাকলগ প্রতিকার পরিকল্পনার চলমান শৃঙ্খলা। সেই চলমান শৃঙ্খলা, টুল নিজের চেয়ে বেশি, নির্ধারণ করে একটি স্ট্যাটিক বিশ্লেষণ কর্মসূচি প্রকৃত, বিশ্বস্ত মূল্য প্রদান করে নাকি উপেক্ষিত গোলমালে অবনতি হয়।
বিরোধী প্যাটার্ন এবং ফাঁদ
- কাঁচা অনুসন্ধান গণনাকে মেট্রিক হিসেবে বিবেচনা করা: তুচ্ছ ও গুরুতর সমস্যা গুলিয়ে ফেলে এবং দমনের মাধ্যমে সহজে কারচুপি করা যায়।
- কোনো নতুন কাজ এগিয়ে যাওয়ার আগে সম্পূর্ণ ঐতিহাসিক ব্যাকলগ সমাধানের প্রয়োজন: সাধারণত অব্যবহারিক এবং প্রকৃত সমাধানের বদলে দমন চালায়।
- মিথ্যা-ইতিবাচক হার উপেক্ষা করা: একটি অব্যবস্থাপিত গোলমাল স্তর দলকে টুলের আউটপুট সম্পূর্ণভাবে টিউন আউট করতে পরিচালিত করে, প্রকৃত অনুসন্ধানসহ।
- বৈধ অনুসন্ধানের নীরব, অনথিভুক্ত দমন: টুলের সংকেত ক্ষয় করে এবং সম্মতির উদ্দেশ্যে কোনো নিরীক্ষা ট্রেইল রাখে না।
- কোনো মানুষের পর্যালোচনা ছাড়া একটি স্ট্যাটিক বিশ্লেষণ অনুসন্ধানকে একটি স্বয়ংক্রিয় রায় হিসেবে বিবেচনা করা: একটি টুল যা দেখতে পারে না এমন প্রেক্ষাপট মিস করে।
- কখনও জটিলতা ও হটস্পট উপাত্তের সাথে অনুসন্ধান ক্রস-রেফারেন্স না করা: একত্রিত প্রমাণ প্রদান করে এমন শক্তিশালী অগ্রাধিকার সংকেত মিস করে।
পরিপক্বতা মডেল
- স্তর ১, শুরু: স্ট্যাটিক বিশ্লেষণ চালানো হয় না, বা কোনো তীব্রতা ট্রিয়াজ বা প্রবণতা ট্র্যাকিং ছাড়া অনুসন্ধান অব্যবস্থাপিতভাবে জমা হয়।
- স্তর ২, উন্নয়ন: কিছু স্ট্যাটিক বিশ্লেষণ CI-তে চলে, কিন্তু তীব্রতা ট্রিয়াজ অসামঞ্জস্যপূর্ণ এবং মিথ্যা-ইতিবাচক হার অব্যবস্থাপিত।
- স্তর ৩, মানসম্মতকরণ: অনুসন্ধান তীব্রতা-ভারযুক্ত এবং CI প্রতিষ্ঠান-ব্যাপী নতুন সমালোচনামূলক ও উচ্চ-তীব্রতার অনুসন্ধানে গেট করে।
- স্তর ৪, ব্যবস্থাপনা: মিথ্যা-ইতিবাচক হার সক্রিয়ভাবে টিউন করা হয়, উত্তরাধিকার ব্যাকলগের একটি নথিভুক্ত, গতিযুক্ত প্রতিকার পরিকল্পনা আছে, এবং মওকুফ দৃশ্যমান ও নথিভুক্ত।
- স্তর ৫, সমন্বয়: স্ট্যাটিক বিশ্লেষণ অনুসন্ধান, জটিলতা উপাত্ত, এবং হটস্পট উপাত্ত নিয়মিতভাবে বিনিয়োগ অগ্রাধিকার দিতে ক্রস-রেফারেন্স করা হয়, এবং প্রতিষ্ঠান কর্মসূচিতে ফিরে খুঁজে পাওয়া নির্দিষ্ট, পরিমাপযোগ্য ত্রুটি বা নিরাপত্তা উন্নতি নির্দেশ করতে পারে।
আলোচনার জন্য ধারণা
১. আমাদের বর্তমান তীব্রতা-ভারযুক্ত প্রবণতা কী, এবং এটি উন্নত হচ্ছে নাকি খারাপ হচ্ছে? ২. আমাদের উত্তরাধিকার অনুসন্ধান ব্যাকলগ কত বড়, এবং আমাদের কি এটি কমানোর একটি ইচ্ছাকৃত পরিকল্পনা আছে? ৩. আমাদের সবচেয়ে গোলমালপূর্ণ অনুসন্ধান শ্রেণীর জন্য আমাদের অনুমিত মিথ্যা-ইতিবাচক হার কী? ৪. আমাদের দলের প্রকৌশলীরা কি বর্তমানে আমাদের স্ট্যাটিক বিশ্লেষণ আউটপুট বিশ্বাস করেন নাকি উপেক্ষা করেন? ৫. আমাদের কোডবেসে জটিলতা বা হটস্পট উপাত্তের সাথে স্ট্যাটিক বিশ্লেষণ অনুসন্ধান কোথায় একত্রিত হয়?
মূল বিষয়সমূহ
- একটি কাঁচা অনুসন্ধান গণনা নয়, একটি তীব্রতা-ভারযুক্ত প্রবণতা ট্র্যাক করুন, যা তুচ্ছ ও গুরুতর সমস্যা গুলিয়ে ফেলে।
- একটি অবাস্তব একসাথে-সবকিছু সমাধান দাবি না করে প্রতিগমন প্রতিরোধ করতে সম্পূর্ণ ঐতিহাসিক ব্যাকলগ নয়, প্রবর্তিত নতুন অনুসন্ধানে CI গেট করুন।
- সক্রিয়ভাবে মিথ্যা-ইতিবাচক হার পরিচালনা করুন; অব্যবস্থাপিত গোলমাল টুলে বিশ্বাস ধ্বংস করে এবং অনুসন্ধান সম্পূর্ণভাবে উপেক্ষা করার দিকে নিয়ে যায়।
- অনুসন্ধানকে একটি স্বয়ংক্রিয় রায় বা নীরব দমন নয়, দৃশ্যমান, নথিভুক্ত মওকুফসহ মানুষের পর্যালোচনার জন্য একটি প্রম্পট হিসেবে বিবেচনা করুন।
- একত্রিত, শক্তিশালী অগ্রাধিকারপ্রাপ্ত প্রমাণের জন্য জটিলতা ও হটস্পট উপাত্তের (বিষয় ৪.১, ৪.৩) সাথে স্ট্যাটিক বিশ্লেষণ ক্রস-রেফারেন্স করুন।
তথ্যসূত্র এবং অতিরিক্ত পাঠ
- Møller, Anders, and Michael I. Schwartzbach. Static Program Analysis. 2018.
- OWASP Foundation. Static Application Security Testing (SAST) guidance.
- Fowler, Martin. Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999.
- Feathers, Michael. Working Effectively with Legacy Code. Prentice Hall, 2004.