স্ট্যাটিক কোড বিশ্লেষণ এবং কোড পর্যালোচনার মধ্যে পার্থক্য কী?


9

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


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

9
দুই কথায়? "একটি মস্তিষ্ক".
এমসাল্টাররা

উত্তর:


19

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

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


2
আমি সবসময় এই ধারণাটির মধ্যে ছিলাম যে কোড পর্যালোচনাটি এক ধরণের স্থির বিশ্লেষণ, কারণ এটি সফ্টওয়্যারটি কার্যকর না করেই স্বাস্থ্যের পরিমাপ করার একটি উপায়।
বুহব

4
@ বুহব: এটি প্রসঙ্গের জ্ঞানকে গুরুতরভাবে যুক্ত করে। কোনও কোড পর্যালোচনাকারীকে বুঝতে হবে যে কোডটি এমনটি করছে যা প্রত্যাশা করা হয়। একটি স্থিতিশীল সরঞ্জাম (সর্বোত্তমভাবে, যদি ভাষাটি কিছু সজ্জা / দৃ as়তা / চুক্তির মাধ্যমে এটির অনুমতি দেয়) আনুষ্ঠানিকভাবে সবকিছু ঠিক আছে কিনা তা পরীক্ষা করে দেখবে ... সুতরাং আপনি এটি অন্যভাবে রাখতে পারেন: স্থির বিশ্লেষণটি কোড পর্যালোচনা, সম্পাদন করা আলগোরিদিমিক্যালি।
ফ্রান্সেস্কো

শুধু যোগ করতে, লিন্ট (স্ট্যাটিক বিশ্লেষক): ডুড যার দরকার নেই !! কলেজ (পর্যালোচক): আপনিও সেভাবে করতে পারেন !!
কুশল

11

স্ট্যাটিক বিশ্লেষণ হ'ল কোনও সফ্টওয়্যার কার্যকর না করে বিশ্লেষণ করার প্রক্রিয়া। এটি খুব ভাল এবং প্রস্তাবিত, তবে আপনাকে এটি মনে রাখতে হবে

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

এই উভয় পদ্ধতিরই প্রসঙ্গের অভাবে ভুগছে: তারা জানে না যে ডাব্লু কী অর্জন করবে।

কোড পর্যালোচনা অন্য কোডার দ্বারা করা হয়, যিনি অনুমিতভাবে এটি জানেন এবং চেক করতে পারেন

  1. কোডটি সঠিক হলে
  2. যদি সফ্টওয়্যার শব্দার্থগতভাবে সঠিক হয়।

এটি অনেক বেশি ব্যয়বহুল এবং এর পুনরাবৃত্তির বিভিন্ন ডিগ্রি রয়েছে তবে এটি একটি দুর্দান্ত সহায়তা।

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

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

পিপিএস: সরঞ্জাম হিসাবে, এটি ভাষার উপর নির্ভর করে। সি এবং সি ++ বিশ্বে আপনি ভিজ্যুয়াল স্টুডিও নিজেই দেখে শুরু করতে পারেন, এতে অন্তর্নির্মিত স্ট্যাটিক বিশ্লেষণ সরঞ্জাম রয়েছে। অপেক্ষাকৃত সম্পূর্ণ তালিকা উইকিপিডিয়ায় পাওয়া যাবে।

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


2

কোড পর্যালোচনা তখন হয় যখন কোনও সিনিয়র বা ডেডিকেটেড কর্তৃপক্ষ আপনার কোড, আপনার কোডিংয়ের পদ্ধতি, কোড অনুসরণ করে মান এবং বিশেষত কোডের যুক্তি স্তরকে পরীক্ষা করে

স্থির বিশ্লেষণ হিসাবে, এটি কম্পিউটার সফ্টওয়্যার বিশ্লেষণ যা আসলে সেই সফ্টওয়্যার থেকে নির্মিত প্রোগ্রামগুলি সম্পাদন না করে সম্পাদিত হয় (এক্সিকিউটিং প্রোগ্রামগুলির উপর সঞ্চালিত বিশ্লেষণটি গতিশীল বিশ্লেষণ হিসাবে পরিচিত)

প্রযুক্তি অনুযায়ী সরঞ্জামগুলির তালিকা নীচের লিঙ্কে দেওয়া হয়েছে

স্থির বিশ্লেষণের জন্য সরঞ্জামগুলির তালিকা

সুতরাং কোড পর্যালোচনা এবং স্থির বিশ্লেষণ সম্পূর্ণ পৃথক পদ terms


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

2
@ জিমআইনটেক্সাস, আমাদের দোকানে একই। আমি বলব কোড পর্যালোচনার সর্বাধিক গুরুত্বপূর্ণ (দীর্ঘমেয়াদী) ফলাফল হ'ল জ্ঞান ছড়িয়ে দেওয়া, একীকরণের অনুশীলন এবং দলজগতের মধ্যে আর্কিটেকচারাল / ডিজাইনের দৃষ্টিভঙ্গি। এই ক্ষেত্রে, একজন সিনিয়র কোড পর্যালোচনা করা কোনও জুনিয়র স্থানীয় সেরা অনুশীলনগুলি শেখার সবচেয়ে খারাপ উপায় but তবে কে বলে যে একজন সিনিয়র কখনই ভুল করে না এবং কোনও জুনিয়র কখনই এগুলি খুঁজে পায় না?
পিয়েটার তারেক

1

কোড পর্যালোচনা আরও গুণগত মূল্যায়ন, স্থির কোড বিশ্লেষণ আরও পরিমাণগত মূল্যায়ন।

আরে, ছেলে, এই পদ্ধতিটি আরও ভাল লেখা যেতে পারে

বনাম, ফে

কর্মক্ষমতা হ্রাস। 'Wcslen (str)> 0' কনস্ট্রাক্ট ব্যবহার করে খালি স্ট্রিং সনাক্ত করতে অক্ষম। আরও কার্যকর উপায় চেক করা: str [0]! = '\ 0'।

কর্মক্ষমতা হ্রাস। স্ট্র্লেন (মাইএসটিআর.সি.আরস্ট্রি ()) ধরণের এক্সপ্রেশনটি মাই স্টার লেন্থ () হিসাবে নতুন করে লেখা যেতে পারে

কর্মক্ষমতা হ্রাস। যদি 'অর্ডার' পুনরাবৃত্ত হয় তবে বর্ধনের উপসর্গ ফর্মটি ব্যবহার করা আরও কার্যকর। পুনরাবৃত্তি ++ ++ পুনরুক্তি দিয়ে প্রতিস্থাপন করুন।

যদিও সত্যিকারের ত্রুটিগুলি (স্পষ্টতই) উপস্থিত থাকতে পারে এবং এসসিএ দ্বারা সনাক্ত করা যায়

ভুল ফর্ম্যাট। 'ফু' ফাংশনের এন আসল যুক্তিটি পরীক্ষা করে দেখুন

এক্সপ্রেশনটি দুই বার বন্ধনী দ্বারা আবদ্ধ হয়েছিল: ((এক্সপ্রেশন))। এক জোড়া বন্ধনী অপ্রয়োজনীয় বা ভুল ছাপ উপস্থিত

'মেমসেট' ফাংশনের একটি কলটি বাফারের 'ডেট.এলফেরিক্সনাম' এর তলদেশে প্রবাহিত করবে


আপনাকে অপমান করার জন্য দুঃখিত যতদূর আমার (অদৃশ্য?) মন্তব্যের উদ্দেশ্যটি ছিল - যে কোনও স্থির কোড বিশ্লেষণ থেকে আউটপুটের উদাহরণ হিসাবে আপনি যে একই মন্তব্য প্রদান করেন তা কেন আপনি জানেন না?
sq33G

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

আহ। সুতরাং ওপি-র প্রশ্নের আসল উত্তর হ'ল টুরিং মেশিনগুলি মানব-সম্পূর্ণ নয়।
sq33G

0

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

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

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


-2

কোড পর্যালোচনা খুব প্রাথমিক পর্যায়ে উত্স কোডে সমস্যাগুলি গন্ধে কার্যকর কৌশল। এই অনুশীলনের অংশ হিসাবে পারফরম্যান্স, স্কেলাবিলিটি এবং কোডিং মানগুলি চিহ্নিত ও সংশোধন করার মতো অনেক বিষয়। এটি কোডের মান উন্নত করবে।

স্ট্যাটিক বিশ্লেষণটি সাইক্লোমেট্রিক জটিলতা, রক্ষণাবেক্ষণ সূচক, উত্তরাধিকারের গভীরতা এবং শ্রেণি সংযোগগুলির মতো কোড মানের মেট্রিকগুলির বিশ্লেষণের জন্য ব্যবহৃত হয়। কোডের গুণাবলী বিশ্লেষণ করতে বাজারে বিভিন্ন সরঞ্জাম উপলব্ধ। সি # বিকাশকারী মেট্রিক প্রতিবেদন উত্পন্ন করার জন্য মাইক্রোসফ্ট ভিজ্যুয়াল স্টুডিও ব্যবহার করেন।


-3

স্থিতিশীল কোড বিশ্লেষণ স্বয়ংক্রিয় সরঞ্জাম দ্বারা সঞ্চালিত হয়, কোড প্রতিশ্রুতিবদ্ধ হওয়ার আগে লোকদের সাথে কোড পর্যালোচনা করা হয়।

কোড পর্যালোচনার জন্য সরঞ্জামগুলি:

তুলনা ছাড়াই 1.

সংস্করণ নিয়ন্ত্রণ সফ্টওয়্যার এর 2 পার্থক্য

এই সরঞ্জামগুলি সর্বদা পুরানো সংস্করণ এবং নতুন সংস্করণের মধ্যে পার্থক্য তৈরি করতে ব্যবহৃত হয়।


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