স্ট্যাটিক কোড বিশ্লেষণের আসল সুবিধাগুলি কী কী?


18

পিসি-লিন্ট বা কিউএসি -এর মতো সরঞ্জামগুলি কোনও কোড বেসে স্থির কোড বিশ্লেষণ করতে ব্যবহৃত হতে পারে।

আমার অভিজ্ঞতায় স্থিতিশীল বিশ্লেষণ প্রায়শই প্রচুর পরিমাণে শোরগোল আসে, অর্থাত্ যেগুলি সত্যিকারের বাগ নয় সেগুলি সম্পর্কে সতর্কতা কিন্তু কোনও নির্দিষ্ট নিয়মে একটি বিধি লঙ্ঘন করে। কিছু নিয়ম বন্ধ (নিয়মের ক্ষেত্রে ভাল বা কোডের বিশেষ মন্তব্যের মাধ্যমে) বন্ধ করা সত্যিকারের জটিল কাজ হতে পারে।

স্ট্যাটিক কোড বিশ্লেষণের আসল সুবিধাগুলি কী কী?

উত্তর:


17

আমি এমন জায়গায় কাজ করেছি যা কভারিটি প্রিভেন্ট নামে একটি বাণিজ্যিক স্ট্যাটিক কোড বিশ্লেষণ সিস্টেম ব্যবহার করেছিল এবং এটি আশ্চর্যজনক ছিল! এটি সত্যই পরিশীলিত এবং বুদ্ধিমান।

আমরা এটিতে প্রায় 18 জিবি ওপেন-সোর্স এবং মালিকানাধীন সি এবং সি ++ কোড ছুঁড়ে ফেলেছি এবং এটি কোড পাথগুলি সন্ধান করবে এবং দ্রুত সূক্ষ্ম বাগগুলি খুঁজে পেতে পারে যা কোনও মানুষকে চিরতরে নেমে যায় track এটি সাধারণত হাইজেনব্যাগগুলি এমন জিনিসগুলিকে চিহ্নিত করার ক্ষেত্রেও দুর্দান্ত ছিল।

এটি আমাদের কোড বেসের বিপরীতে কয়েক দিন দৌড়েছিল এবং একটি দুর্দান্ত বৈশিষ্ট্য হ'ল আমরা এটি বলতে পারি, "এটি আসলে কোনও বাগ নয়," এবং এটি ভবিষ্যতে মনে রাখবে।

গোচা হ'ল, কভারিটি সত্যিই ব্যয়বহুল। তারা ব্যয় প্রকাশ করে না, তবে আমি বুঝতে পারি যে বাণিজ্যিক প্রকল্পগুলির জন্য, এটি প্রতি বছর কয়েক হাজার ডলারে শুরু হয়। তবে এটি সম্ভবত আমাদের পুরো গুচ্ছ বিকাশকারী এবং কিউএ স্টাফ নিয়োগের হাত থেকে রক্ষা পেয়েছে, সুতরাং সামগ্রিকভাবে আমাদের পরিচালনটিকে এটি একটি ভাল কেনা বলে মনে হয়েছিল।

সেই অভিজ্ঞতা পেয়ে আমি স্থিতিশীল কোড বিশ্লেষণে বেশ অনুকূলভাবে দেখি।


2
আমি বিশ্বাস করি যে কেওএলকে কভারসিটি চার্জ করা হয়।
পল নাথান

1
কেজিএল বা টিমের আকার
স্টিংজি জ্যাক


7

কোনও নতুন ভাষা দিয়ে শুরু করার সময় কোচ থাকা ভাল। স্থির বিশ্লেষণ সরঞ্জামগুলি সম্পর্কে আমি এভাবেই ভাবি। আমি প্রচুর জাভাস্ক্রিপ্ট লিখি এবং শুরুতে আমি কয়েকটি খারাপ অভ্যাস বেছে নিয়েছিলাম কারণ মূলত আমি পূর্বের ভাষাগুলি থেকে কিছু জিনিস স্থানান্তর করছিলাম। জাভাস্ক্রিপ্টটি বেশ নমনীয় যাতে আপনি বেশ কিছু দিয়ে দূরে সরে যেতে পারেন তবে আমি যদি কিছু নির্দিষ্ট প্যাটার্ন সম্পর্কে আমার কাছে সতর্ক করে থাকি তবে আমি পরে জিনিসগুলি পুনরায় লেখার পরিবর্তে শুরু থেকেই আরও ভাল কোডিং প্যাটার্ন তুলতে পারতাম।


6

স্ট্যাটিক বিশ্লেষকরা মূলত মেশিন-সহায়ক কোড পর্যালোচনা। তারা প্রশ্নবিদ্ধ অঞ্চলগুলি নিয়মিত পরীক্ষার সময় মিস করে থাকতে পারে point

উদাহরণস্বরূপ, লেখক কি আসলেই এই শর্তসাপেক্ষে একটি কার্যনির্বাহীকরণ বোঝাতে চেয়েছিলেন?

if (x = 1) {
    ...
}

অথবা সম্ভবত কোনও উপদ্রবক লেসিকাল কাস্টিংকে বিভ্রান্ত করে:

char* number = "123";
int converted = number;

অবশ্যই স্থির বিশ্লেষকদের জন্য টুইট করা দরকার। তারপরে আবারও পুনর্বিবেচনা নিয়ন্ত্রণ, উইকিস, বাগ ট্র্যাকারস, প্রিন্ট প্রিন্টার এবং অন্যান্য সরঞ্জামগুলির জন্য কিছু সেট আপ প্রয়োজন require প্রকল্পটি যত বড়, প্রাথমিক শ্রমের জন্য তত ভাল পুরষ্কার।


5

একজন পরামর্শকের দৃষ্টিকোণ থেকে, প্রতিটি স্ট্যাটিক বিশ্লেষণ সরঞ্জামটিতে কিছু শব্দ হবে তবে সমস্ত স্ট্যাটিক বিশ্লেষককে সমানভাবে তৈরি করা হয় না। স্ট্যাটিক বিশ্লেষণ সরঞ্জামের মতো কভারিটি, ক্লকওয়ার্ক, গ্রামমেটকের ভাল বিশ্লেষণ কৌশল রয়েছে যা আরও সঠিক ফলাফল অর্জন করতে পারে। আপনি যদি আরও কিছু টিউন করেন এবং টুইট করেন তবে সাধারণত ভাল ফলাফল পাওয়া যায় (সর্বোপরি, স্ট্যাটিক বিশ্লেষককে একটি ক্ষুদ্র চিকিত্সা ডিভাইস থেকে একটি নেটওয়ার্ক অপারেটিং সিস্টেমে সমস্ত ধরণের কোডে চালাতে সক্ষম হতে হবে)। "গোলমাল" সংজ্ঞায়িত করা স্থির-যোগ্য প্রতিবেদন গঠনের জন্য আপনার মানদণ্ডের উপরও নির্ভর করে। বর্ণালীটির এক প্রান্তে, কিছু বিকাশকারী সমস্ত প্রতিবেদনগুলি চিহ্নিত করেন যা তারা "মিথ্যা" হিসাবে ঠিক করেন না (এমনকি খারাপভাবে লিখিত কোডও রয়েছে যে তাদের ঠিক করার সময় নেই) এবং অন্য প্রান্তে,

এর মধ্যে কয়েকটি সরঞ্জাম আরও বেশি কেন্দ্রীয় বিশ্লেষণকেন্দ্রিক এবং অন্যেরা ডেস্কটপকে আরও বেশি কেন্দ্রীভূত করে - যদিও তিনটিরই বৈশিষ্ট্য উভয়কেই সমর্থন করে। @ বোবি যেমন উল্লেখ করেছে, তারা অর্থ ব্যয় করেছে।


4

আমার আগের সংস্থায় আমরা প্যারাসফট দ্বারা স্থির বিশ্লেষক ব্যবহার করেছি। এবং এটি দলের মধ্যে বিশ্বাস করা হয়েছিল যে রান টাইম বাগের কমপক্ষে 60% বাগ সংকলনের আগে ধরা পড়েছিল।


2

সফটওয়্যার কোডে ম্যানুয়াল পর্যালোচনা করে স্ট্যাটিক বিশ্লেষণও সরঞ্জাম ছাড়াই করা যেতে পারে। কোডের মান উন্নত করার জন্য এটি প্রায়শই সবচেয়ে ব্যয়-কার্যকর উপায়।

দ্বিতীয় সর্বোত্তম বিকল্পটি হ'ল এক বা একাধিক উচ্চ-শেষ স্ট্যাটিক বিশ্লেষণ সরঞ্জামগুলির জন্য বিনিয়োগ করা (যেমন পূর্বে উল্লিখিত প্রচ্ছদ, বা কেএলকি ওয়ার্ক)। যেহেতু এই সরঞ্জামগুলি লিন্টের তুলনায় অনেক গভীর বিশ্লেষণ করে, উদাহরণস্বরূপ, সংকেত-থেকে-গোলমাল অনুপাতটি আরও ভাল।

উচ্চ স্তরের শব্দ স্তরটির কারণে আমি লিন্টটিকে তৃতীয় বিকল্প হিসাবে বিবেচনা করি। কোনও বিদ্যমান প্রকল্পে লিন্ট প্রয়োগ করা একটি কঠিন কাজ হতে পারে।

সাধারণ স্থিতিশীল প্রোগ্রাম বিশ্লেষণ সাম্প্রতিক বছরগুলিতে অনেক এগিয়েছে। বর্তমান স্থিতিশীল বিশ্লেষণ সরঞ্জামগুলি গভীর আন্তঃবিশ্লেষীয় বিশ্লেষণগুলি সম্পাদন করতে সক্ষম, একটি স্বয়ংক্রিয়ভাবে উদাহরণ পদ্ধতি এবং প্রাক-শর্তাবলীর জন্য সনাক্ত করতে পারে। পরবর্তী কোড রিভিউগুলির জন্যও এটি দুর্দান্ত সাহায্য হতে পারে।


1

উচ্চ মিথ্যা ধনাত্মক হারের কারণে, আপনি প্রতিটি সংকলনের জন্য স্থিতিশীল বিশ্লেষণ সরঞ্জাম ব্যবহার করতে পারবেন না (যেমন লিন্ট বা ফাইন্ডব্যাগগুলি)।

বরং একবার আপনি বাগ পেয়ে গেলে তা নির্ণয় করতে না পারার জন্য পরামর্শ দেওয়ার জন্য এটি একটি দুর্দান্ত বিবেক পরীক্ষা । সেক্ষেত্রে আপনি মিথ্যা ধনাত্মক মনোভাব উপভোগ করতে পারবেন এবং আপনি ইতিমধ্যে ত্রুটির সম্ভাব্য উত্সগুলি সংকীর্ণ করতে পারেন। উদাহরণস্বরূপ, আপনি কিছু মডিউল না চালিয়েও যদি আপনার বাগ পুনরুত্পাদন করেন তবে ফাইন্ডব্যাগগুলি তাদের জন্য যা বলেছে তা উপেক্ষা করতে পারেন। এটি বিশেষত সহায়ক যখন আপনি কোডটির কোনও অংশের দিকে তাকিয়ে দেখেন এবং এটি একটি জিনিস বলে মনে করেন , যখন সংকলকটি এটি আক্ষরিকভাবে পড়ে (যেমন জাভাতে যখন আপনার কোনও equalsপদ্ধতি থাকে যা ক্লাসের পরিবর্তে ক্লাসের ধরণ নেয় Object)।

আপনার বিকাশ প্রক্রিয়াটির অংশ হতে পারে আপনার স্থির বিশ্লেষণ সরঞ্জামগুলিও থাকতে পারে: যখন কোনও বিকাশকারী একটি কোড পর্যালোচনা পান, তাদেরও এটিতে FindBugs চালানো উচিত। সংক্ষেপে, এটি দরকারী, তবে আপনি এটি প্রায়শই সংকলক বা পাঠ্য সম্পাদক হিসাবে ব্যবহার করবেন না।


1
আমি তার বিরুদ্ধে তর্ক করব। এটি কৌতূহলোদ্দীপক এবং আমি নিশ্চিত এটি পুরানো / বড় প্রকল্পগুলির চেয়ে খারাপ, তবে শব্দের মাধ্যমে বাছাই করা এত খারাপ হয়নি। আমি প্রচুর ট্রিগারগুলি উপেক্ষা করার জন্য পিসি-লিন্ট সেট আপ করেছি যা প্রচুর মিথ্যা ইতিবাচক উত্পাদন করে এবং আরও ঘন ঘন এটি চালায় (এবং তারপরে এটি সম্পূর্ণ কম চালান)। যতক্ষণ আপনি অপেক্ষা করুন - এটি আরও খারাপ হবে!
ফ্রেডেরিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.