পিএমডি এবং ফাইন্ডব্যাগগুলির মধ্যে পার্থক্য কী?


107

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

উত্তর:


151

আমি উভয় ব্যবহার করছি। আমি মনে করি তারা একে অপরের পরিপূরক

যেমনটি আপনি বলেছিলেন, পিএমডি উত্স কোডে কাজ করে এবং তাই সমস্যাগুলি খুঁজে পেয়েছে যেমন: নামকরণের নিয়ম লঙ্ঘন, কোঁকড়া ধনুর্বন্ধনীগুলির অভাব, নাল চেকের ভুল, দীর্ঘ পরামিতি তালিকা, অপ্রয়োজনীয় কন্সট্রাক্টর, স্যুইচ-এ ব্রেক ব্রেক ইত্যাদি ইত্যাদি পিএমডি আপনাকে সাইক্লোমেটিক সম্পর্কেও বলেছে জটিলতা যা আমি খুব সহায়ক খুঁজে (FindBugs Cyclomatic জটিলতা সম্পর্কে বলতে না) আপনার কোড।

ফাইন্ডব্যাগগুলি বাইটকোডে কাজ করে। এখানে কিছু সমস্যা রয়েছে যা ফাইন্ডব্যাগগুলি আবিষ্কার করে যা পিএমডি করে না: সমান () পদ্ধতিটি সাব টাইপগুলিতে ব্যর্থ হয়, ক্লোন পদ্ধতিটি বাতিল হতে পারে, বুলিয়ান মানগুলির রেফারেন্স তুলনা, অসম্ভব কাস্ট, 32 বিট ইনট 0-31 এর পরিসীমাতে নয় এমন পরিমাণে স্থানান্তরিত হয়, একটি সংগ্রহ যা নিজেই ধারণ করে, সমান পদ্ধতি সর্বদা সত্য, একটি অসীম লুপ ইত্যাদিকে দেয়

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


আপনি যখন সুনির্দিষ্ট ত্রুটি কোডটি দেখেছেন যখন কোনও সংকলন নিজেই থাকে এবং কেন এটি ফাইন্ডব্যাগ দ্বারা সম্ভাব্য বাগ চিহ্নিত করা হয়?
গীক

আচ্ছা সোনারকুবে 6.3 আর নেই ... সোনারকুবের এখন জাভা 8 প্রয়োজন এবং ফাইন্ডব্যাগস কেবল জাভা 7 কে এখনও সমর্থন করছে
মার্কাস

22

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

উদাহরণস্বরূপ, আমি লুপগুলির জন্য 2 নেস্টেড জড়িত একটি পারফরম্যান্স সমস্যার মুখোমুখি হয়েছি যার ফলস্বরূপ O (n ^ 2) চলমান সময়, যা সহজেই এড়ানো যায়। লুপের জন্য নেস্ট করা অন্যান্য ঘটনাগুলি পর্যালোচনা করতে, আমি অ্যাড-হক ক্যোয়ারী তৈরি করতে পিএমডি ব্যবহার করেছি - // ফরস্টেটমেন্ট / স্টেটমেন্ট // ফরস্টেটমেন্ট। এটি সমস্যার আরও দুটি উদাহরণ দেখিয়েছে। এটি যাইহোক সাধারণ নিয়ম নয়।


2

পিএমডি হ'ল

  • বিখ্যাত
  • শিল্পে ব্যাপকভাবে ব্যবহৃত
  • আপনি আপনার বিধিগুলি এক্সএমএল এ যুক্ত করতে পারেন
  • আপনাকে ত্রুটি স্তর এবং সতর্কতা স্তরগুলিতে বিশদ বিশ্লেষণ দেয়
  • আপনি "অনুলিপি এবং পেস্ট লাইন" জন্য আপনার কোড স্ক্যান করতে পারেন। সদৃশ কোড এটি জাভা উফ বাস্তবায়ন সম্পর্কে ভাল ধারণা দেয়।

ফাইন্ডব্যাগগুলির সাথে কথা বলে না; তারা পরিপূরক কারণ তাদের সমস্যা সেটগুলি অভিন্ন নয়।
স্টিভার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.