অব্যবহৃত কোড [বন্ধ] সন্ধান করুন


208

আমাকে একটি বড় সি # অ্যাপ্লিকেশনটির রিফ্যাক্টর করতে হবে এবং আমি প্রচুর ফাংশন পেয়েছি যা কখনই ব্যবহৃত হয় না। আমি কীভাবে অব্যবহৃত কোড যাচাই করতে পারি, তাই আমি সমস্ত অব্যবহৃত ফাংশন সরিয়ে ফেলতে পারি?




আমি অবাক হয়েছি যে এটিকে বিষয়বস্তু হিসাবে চিহ্নিত করা হয়েছে, আমি প্রশ্নটি উত্তর পেয়েছিলাম এবং প্রশ্নটি উত্তর হওয়ার 11 বছর পরে কার্যকর হয়েছে। অফ টপিক লিঙ্কটি বলে যে "... সফ্টওয়্যার সরঞ্জামগুলি সাধারণত প্রোগ্রামারদের দ্বারা ব্যবহৃত হয়; এবং এটি ..." অবশ্যই এসও এর জন্য প্রাসঙ্গিক!
শেলবিপিরের

উত্তর:


218

হ্যাঁ, রিশার্পার এটি করে। আপনার সমাধান এবং সিলেক্ট করুন "কোডের সমস্যাগুলি অনুসন্ধান করুন" এ ডান ক্লিক করুন। ফলাফলগুলির মধ্যে একটি হ'ল "অব্যবহৃত প্রতীক"। এটি আপনাকে ক্লাস, পদ্ধতি ইত্যাদি দেখায় যা ব্যবহৃত হয় না।


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

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

9
আমরা নির্ভরতা ইনজেকশন ব্যবহার করছি। ফলস্বরূপ, সমস্ত কিছু পুনরায় ভাগ করতে অভ্যস্ত দেখাচ্ছে কারণ অব্যবহৃত প্রকারগুলি এখনও stillক্যের সাথে নিবন্ধিত হচ্ছে।
মন্টগোমেরি 'মন্টি' জোন্স

11
@ user890155 এটি কারণ হবে যে পদ্ধতিটি প্রকাশ্য, গ্রন্থাগারটি বর্তমান সমাধানে না হয়ে অন্য কোনও অ্যাপ্লিকেশন দ্বারা গ্রাস করা যেতে পারে। আমি বিশ্বাস করি এটি যদি অব্যবহৃত হয় তবে এটি কেবল কোড সমস্যা হিসাবে অভ্যন্তরীণ এবং ব্যক্তিগত পদ্ধতিতে পতাকাঙ্কিত করবে।
লুকাজয়েড

3
@ ইলগার্ক নির্ভরতা ইনজেকশন সম্পর্কিত, এখানে উল্লিখিত এজেন্ট মুলদার প্লাগইনটি একবার দেখুন: ব্লগস.জেটব্রেইনস / ডটনেট / / / রিসার্পার-70-প্লাগ- ইন প্রকল্পের হোমপেজ: hmemcpy.github.com/AgentMulder এজেন্ট মুল্ডার - সমর্থন নির্ভরতা ইনজেকশন ফ্রেমওয়ার্ক যেমন অটোফ্যাক, ক্যাসেল উইন্ডসর, ইউনিটি। যেহেতু রিশ্যার্পার এই ধারকগুলি সম্পর্কে জানেন না, ক্লাসগুলি প্রায়শই অব্যবহৃত হিসাবে চিহ্নিত করা যেতে পারে, বা তাত্ক্ষণিক নয়। এজেন্ট মুল্ডার যখন এই ক্লাসগুলি ব্যবহার করা হচ্ছে তখন রিশার্পারকে বলে এবং প্রতিটি ক্লাস থেকে নিবন্ধকরণ পয়েন্টে নেভিগেশন সরবরাহ করে।
গ্রজেগোর্স স্মুলকো

29

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

একটি দুর্দান্ত সরঞ্জাম মনে আসবে:

এনডিপেন্ডেড - এই সরঞ্জামটি কেবল আশ্চর্যজনক। কুঁচকে উঠতে কিছুটা সময় লাগে এবং প্রথম 10 মিনিটের পরে আমি মনে করি বেশিরভাগ বিকাশকারী কেবল "এটি স্ক্রু!" এবং অ্যাপ্লিকেশন মুছুন। একবার আপনি এনডিপেন্ডেন্টের জন্য একটি ভাল অনুভূতি পাওয়ার পরে এটি আপনাকে কীভাবে আপনার অ্যাপ্লিকেশনগুলিতে মিলিত হয় সে সম্পর্কে আশ্চর্য অন্তর্দৃষ্টি দেয়। এটি পরীক্ষা করে দেখুন: http : //www.nd depend.com/ । সর্বাধিক গুরুত্বপূর্ণ, এই সরঞ্জামটি আপনাকে এমন পদ্ধতিগুলি দেখার অনুমতি দেবে যার কোনও সরাসরি কলার নেই। এটি আপনাকে বিপরীতটিও দেখায়, সমাবেশে যে কোনও পদ্ধতির (বা এমনকি সমাবেশগুলির মধ্যেও) সম্পূর্ণ কল ট্রি।

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


4
সতর্কতার আরেকটি শব্দ, যদি আপনার অ্যাপটি এসপিএন হয় তবে এনডিপেন্ডের সাথে আপনাকে নিজের সাইটটি প্রাক-কম্পাইল করতে হবে যাতে আপনি কোড-ব্যাকটি বিশ্লেষণ করতে পারেন এবং এনডিপাইন্ড এসপেক্স পৃষ্ঠাগুলি থেকে কলগুলি আবরণ / জানতে পারবেন না (যেমন অবজেক্টডাটাসোর্সগুলিতে পদ্ধতি কলগুলি এবং লাইক)
জাইমে

16

অন্যরা যেমন বলেছে যেমন রিশার্পার এটির পক্ষে ভাল। সতর্কতা অবলম্বন করুন, এই সরঞ্জামগুলি আপনাকে এমন কোড খুঁজে পায় না যা প্রতিবিম্ব দ্বারা ব্যবহৃত হয়, যেমন কিছু কোড প্রতিবিম্ব দ্বারা ব্যবহৃত হয় না তা জানতে পারে না used


15

নির্দেশিত জেফ হিসাবে সরঞ্জামটি এনডিপেন্ডেড অব্যক্ত পদ্ধতি, ক্ষেত্র এবং প্রকারগুলি খুঁজে পেতে সহায়তা করতে পারে।

কিছুটা বিস্তৃত করার জন্য, এনডিপেন্ডল লিনকিউ কোয়েরি (সিসিকিউএলএনকি) এর উপরে কোড রুল লেখার প্রস্তাব দিয়েছে । প্রায় 200 টি ডিফল্ট কোড বিধি প্রস্তাব করা হয়, এর মধ্যে 3 টি অব্যবহৃত / মৃত কোড সনাক্তকরণের জন্য উত্সর্গীকৃত

মূলত অব্যবহৃত পদ্ধতি সনাক্ত করার জন্য এই জাতীয় নিয়ম উদাহরণস্বরূপ:

// <Name>Dead Methods</Name>
warnif count > 0 
from m in Application.Methods where !m.MethodsCallingMe.Any()
select m

অব্যবহৃত পদ্ধতিগুলি (মৃত পদ্ধতি) সন্ধানের জন্য এনডিপেন্ডেড নিয়ম

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

এনডিপেন্ডেজ ভিজ্যুয়াল স্টুডিও 2017,2015, 2013, 2012, 2010 এ সংহত করে, সুতরাং এই নিয়মগুলি আইডিইর ভিতরে সঠিকভাবে ব্রাউজ / সম্পাদনা করা যায় । সরঞ্জামটি আপনার সিআই প্রক্রিয়াতেও সংহত করা যায় এবং এটি এমন প্রতিবেদন তৈরি করতে পারে যা নিয়ম লঙ্ঘনকারী এবং অপরাধী কোড উপাদানগুলি দেখায়। এনডিপেন্ডের একটি ভিএস টিম পরিষেবাদি এক্সটেনশনও রয়েছে

আপনি যদি এই বিধিগুলির উত্স কোডের জন্য উপরের এই 3 টি লিঙ্ককে ক্লিক করেন তবে আপনি দেখতে পাবেন যে প্রকার এবং পদ্ধতিগুলি সম্পর্কিত কিছুটি জটিল। কারণ তারা না শুধুমাত্র অব্যবহৃত ধরনের ও পদ্ধতি, কিন্তু ধরনের এবং পদ্ধতি ব্যবহার সনাক্ত এই শুধুমাত্র অব্যবহৃত মৃত ধরনের এবং পদ্ধতি (রিকার্সিভ) দ্বারা।

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

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

দাবি অস্বীকার: আমি এনডিপেন্ডেন্টের পক্ষে কাজ করি।


6

আমি আরও উল্লেখ করব যে আইওসি ওরফে ইউনিটি ব্যবহার করা এই মূল্যায়নগুলিকে বিভ্রান্তিকর করে তুলতে পারে। আমি ভুল করে থাকতে পারি তবে বেশ কয়েকটি গুরুত্বপূর্ণ ক্লাস যা ইউনিটির মাধ্যমে ইনস্ট্যান্ট করা হয় সেখানে রিসার্পার যতটা বলতে পারে তেমন কোনও ইনস্ট্যান্টেশন নেই বলে মনে হয়। আমি যদি রিশার্পার সুপারিশগুলি অনুসরণ করি তবে আমি হোজে উঠব!


4

রিশার্পার অব্যবহৃত কোড সন্ধানের দুর্দান্ত কাজ করে।

ভিএস আইডিইতে, আপনি সংজ্ঞাটিতে ডান ক্লিক করতে পারেন এবং 'সমস্ত রেফারেন্সগুলি সন্ধান করুন' চয়ন করতে পারেন, যদিও এটি কেবল সমাধানের স্তরে কাজ করে।


1

সত্য কথাটি হল যে সরঞ্জামটি আপনাকে কখনই 100% নির্দিষ্ট উত্তর দিতে পারে না, তবে কভারেজ সরঞ্জাম আপনাকে অর্থের জন্য বেশ ভাল রান দিতে পারে।

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

এ জাতীয় একটি সরঞ্জাম হ'ল এনকোভার , সোর্সফোর্জে ওপেন সোর্স পূর্ববর্তী সঙ্গে । আর একটি বিকল্প পার্টকভার

এই উত্তরটি স্ট্যাকওভারফ্লোতে দেখুন।


1

আমি এক্সটুলস কোডসমার্ট জুড়ে এসেছি ... একবার চেষ্টা করে দেখুন। পর্যালোচনা বিভাগে কোড বিশ্লেষক ব্যবহার করুন t এটি অন্যান্য সমস্যার সাথে মৃত স্থানীয় এবং বিশ্বব্যাপী ফাংশনগুলি তালিকাভুক্ত করবে।


0

এফএক্সকপ একটি কোড বিশ্লেষক ... এটি অব্যবহৃত কোড আবিষ্কারের চেয়ে অনেক বেশি কাজ করে। আমি কিছু সময়ের জন্য এফএক্সকপ ব্যবহার করেছি এবং এর প্রস্তাবনায় এতটাই হারিয়ে গিয়েছিলাম যে আমি এটি আনইনস্টল করেছিলাম।

আমি মনে করি এনডিপেন্ড আরও সম্ভাব্য প্রার্থীর মতো দেখাচ্ছে।

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