কোড বিশ্লেষণ কী?
কোড বিশ্লেষণ (পূর্বে FxCop) একটি স্ট্যাটিক বিশ্লেষণ সরঞ্জাম যা সাধারণ নিদর্শনগুলির জন্য অনুসন্ধান করে যা উত্স কোডটিতে কিছু ভুল বলে ইঙ্গিত দিতে পারে। উদাহরণস্বরূপ, যদি প্রয়োগ IDisposable
করা কোনও শ্রেণীর উদাহরণ যদি সঠিকভাবে নিষ্পত্তি না হয় তবে কোড বিশ্লেষণটি একটি সতর্কতা নির্গত করবে:
private void DoSomething()
{
var connection = new SqlConnection(...);
this.ChangeSomeData(connection);
}
এটি পূর্ববর্তী কোডের সঠিক প্রয়োগ:
private void DoSomething()
{
using (var connection = new SqlConnection(...))
{
this.ChangeSomeData(connection);
}
}
যে কোনও স্থিতিশীল বিশ্লেষণ সরঞ্জাম হিসাবে, কোড বিশ্লেষণটি ম্যানুয়ালি খুঁজে বের করার জন্য জটিল (বা কেবল বিরক্তিকর) নিদর্শনগুলি সন্ধান করার উদ্দেশ্যে তৈরি করা হয়েছে। উদাহরণস্বরূপ, পূর্ববর্তী উদাহরণে, কোনও বিকাশকারী তিনি প্রয়োগগুলি ব্যবহার করেন কিনা তা পরীক্ষা করা IDisposable
(বা এটি বাস্তবায়নকারী সমস্ত নেট নেট ফ্রেমওয়ার্ক ক্লাস মনে রাখে) তা পরীক্ষা করা বেশ বিরক্তিকর হতে পারে ।
কোন প্রকল্পগুলি যোগ্যতা অর্জন করে?
যদিও মিথ্যা positives সাপেক্ষে, কোন স্ট্যাটিক বিশ্লেষণ সরঞ্জাম হিসাবে, এটা সাধারণত ব্যবহার না করেই ব্যবসা-জটিল কোডের জন্য শূন্য সতর্কবার্তা লক্ষ্য উপকারী সাম্প্রেশনের । ভিজ্যুয়াল স্টুডিওর মধ্যে, কোড বিশ্লেষণটি সংকলন-সময় চালানোর জন্য কনফিগার করা যেতে পারে; যদি প্রকল্প সেটিংসেও উল্লেখ করা হয় যে সতর্কতাগুলিকে ত্রুটি হিসাবে বিবেচনা করা উচিত, কোড বিশ্লেষণের বিধি লঙ্ঘন কারও নজরে থাকবে না।
যেহেতু স্থির বিশ্লেষণ মাঝারি বা বড় প্রকল্পগুলির জন্য কিছুটা সময় নিতে পারে, তাই প্রায়শই এটি বিকাশকারীর মেশিন থেকে টিএফএস বিল্ড সার্ভারে স্থানান্তর করা ভাল ধারণা। প্রি- কমিটের সময় কোড বিশ্লেষণ চালানো কোনও ভাল ধারণা নয় (স্টাইলকপের বিপরীতে), সতর্কতা পাওয়া গেলে এটি বিল্ড চালিয়ে যেতে এবং এটি ব্যর্থ করতে পারে।
অ-ব্যবসা-সমালোচনামূলক কোডের জন্য কোড বিশ্লেষণ ভিজ্যুয়াল স্টুডিও বা কমান্ড লাইন থেকে ম্যানুয়ালি চালানো যেতে পারে । আপনার প্রয়োজন অনুসারে প্রকল্পের বৈশিষ্ট্যগুলিতে চেক এবং সতর্কতাগুলি সূক্ষ্ম-দানাযুক্ত হতে পারে। উদাহরণস্বরূপ, বিশ্বায়নের সতর্কতাগুলি বন্ধ করা যেতে পারে যদি আপনার প্রকল্পটি স্থানীয়করণের উদ্দেশ্যে না হয়।
স্টাইলকপের মতো এটিও সিদ্ধান্ত নেওয়া জরুরি যে প্রকল্পের শুরু থেকেই কোড বিশ্লেষণ থেকে শূন্য সতর্কতা লক্ষ্য করা হবে কিনা। এটি একটি বিদ্যমান প্রকল্পে পরিচয় করিয়ে দেওয়া খুব বেদনাদায়ক হতে পারে।
এটি স্টাইলকপ থেকে আলাদা?
নোট করুন যে কোড বিশ্লেষণ স্টাইলকপের মতো জিনিস নয় । প্রথম পার্থক্যটি হ'ল কোড বিশ্লেষণটি সংকলিত সমাবেশে কাজ করে, অন্যদিকে স্টাইলকপ উত্সটির সাথে কাজ করে। দ্বিতীয় (এবং সবচেয়ে গুরুত্বপূর্ণ) পার্থক্যটি হ'ল কোড বিশ্লেষণটি প্যাটারদের অনুসন্ধান করে যা কোনও বাগ নির্দেশ করতে পারে, অন্যদিকে স্টাইলকপ কেবল স্টাইলের নিয়মগুলি কার্যকর করে চলেছে your আপনার দল দ্বারা ব্যবহৃত একটি সাধারণ কনভেনশন।
কোড বিশ্লেষণটি প্রাথমিকভাবে যারা খুব ভাল ভাষা জানেন না তাদের ক্ষেত্রেও দরকারী , কারণ এটি প্রায়শই "আহা!" মুহূর্ত। উদাহরণস্বরূপ, CA2105: অ্যারে ক্ষেত্রগুলি কেবল কোনওটি আবিষ্কারের দিকে নিয়ে যেতে পারে যে অ্যারে কেবল পঠনযোগ্য হিসাবে চিহ্নিত করা হলেও এটি একে অপরিবর্তনীয় করে না, কারণ অ্যারের মধ্যে থাকা উপাদানগুলিকে পরিবর্তন করতে কোনও কিছুই নিষেধ করে না। স্টাইলকপ আবিষ্কারগুলিতে নেতৃত্ব দেয় না: ক্ষেত্রগুলি একটি ছোট হাতের অক্ষর দিয়ে শুরু হয় বা স্থানীয় কলগুলির উপসর্গ করা উচিত তা জেনে আকর্ষণীয় কিছু নেই this
।
কোড বিশ্লেষণ এবং স্টাইলকপ উভয় দ্বারা কিছু বিধি প্রয়োগ করা হয়েছে (যেমন CA1707: সনাক্তকারীগুলিতে SA1310 বনাম আন্ডারস্কোর থাকতে হবে না: ক্ষেত্রের নামগুলিতে আন্ডারস্কোর থাকতে হবে না ), এই দুটি সরঞ্জাম পরিপূরক এবং পাশাপাশি পাশাপাশি ব্যবহৃত হয়।
আমরা ইতিমধ্যে কোড পর্যালোচনা আছে
কোড রিভিউগুলির উপস্থিতি কোড বিশ্লেষণ এড়ানোর কোনও কারণ নয়। উভয় কোড বিশ্লেষণ এবং StyleCop স্বয়ংক্রিয়ভাবে জিনিসপত্র খুঁজে নেওয়ার এ চমৎকার আগে একটি কোড পর্যালোচনা। কোড পর্যালোচনা পিনপয়েন্টিং শৈলীর সমস্যা বা সমস্যাযুক্ত নিদর্শনগুলি ব্যয় করার চেয়ে খারাপ আর কিছুই নেই যা স্বয়ংক্রিয়ভাবে পাওয়া যেতে পারে। আকর্ষণীয় স্টাফ জন্য কোড পর্যালোচনা রাখুন।
আর একটি দিক হ'ল মানব পর্যালোচক কোড বিশ্লেষণের দ্বারা পাওয়া সমস্যাগুলি সনাক্ত করতে অগত্যা ভাল নয়। উদাহরণস্বরূপ, শ্রেণি প্রয়োগকারী একটি উদাহরণ IDisposable
এক জায়গায় তৈরি করা যেতে পারে এবং তারপরে অন্য কোনও স্থানে নিষ্পত্তি করা যেতে পারে। এটি কোনও পর্যালোচককে এটি পেতে কিছুটা সময় নেবে, যখন এটি স্থির বিশ্লেষণ সরঞ্জামটি আবিষ্কার করতে কয়েক মিলি সেকেন্ড সময় নেয়।