ভিজ্যুয়াল স্টুডিওতে "... ব্যতীত সমস্ত সতর্কতা ত্রুটি হিসাবে বিবেচনা করুন


124

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

সতর্কতা দমন করার বিকল্প রয়েছে, তবে আমরা তাদের সতর্কতা হিসাবে দেখাতে চাই, যাতে এটি কার্যকর না হয়।

দেখা যাচ্ছে যে আমরা যে আচরণটি করতে চাই তার একমাত্র উপায় হ'ল আমরা যে দুটি সতর্কতা হিসাবে চিকিত্সা করতে চাই তা বাদ দিয়ে প্রতিটি "# নির্দিষ্ট সতর্কতা" পাঠ্য বাক্সে প্রতিটি সি # সতর্কতার সংখ্যার একটি তালিকা প্রবেশ করানো।

রক্ষণাবেক্ষণের মাথা ব্যথার পাশাপাশি, এই পদ্ধতির সবচেয়ে বড় অসুবিধা হ'ল কয়েকটি সতর্কতার সংখ্যা নেই, তাই তাদের স্পষ্টভাবে উল্লেখ করা যায় না। উদাহরণস্বরূপ, "এই রেফারেন্সটি সমাধান করা যায়নি assembly

কেউ কি এটি করার আরও ভাল উপায় সম্পর্কে জানেন?


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

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

আক্ষরিক "# সতর্কতা" সতর্কতাগুলিও অনন্য। আমি প্রায়ই চান চেক ইন করার, কিন্তু আমি বিল্ড বিরতি চাই না।


আপনি কি দয়া করে আপনার বিশাল সংখ্যার তালিকায় স্পেস রাখতে পারেন? এটি লাইন মোড়কে ভরাট করে দিয়েছে।
রায়

গাওড আমি এমন জটিল বিধিগুলি ঘৃণা করি যা লোকেরা তৈরি করে, প্রায়শই নির্দিষ্ট কিছু ব্যক্তির অহংকার প্রশমিত করে so
জন লিমাজাপ

21
অপ্রচলিত সতর্কতা সম্পর্কে আমি তার বক্তব্যটি দেখছি, এটি স্বেচ্ছাচারিতা নয়।
এড এস

আমার অভিজ্ঞতায় আপনার বিল্ডে এমনকি একটি সতর্কতাও মঞ্জুরি দেওয়া প্রথম অসম্পূর্ণ / অপেক্ষা করার মতো it শীঘ্রই তাদের দশ হবে। সমস্ত সেটআপে আমার মনে আছে কোনও বিকাশকারী ভিএস-তে ত্রুটি তালিকা উইন্ডোতে 10 টি সতর্কতা কম দেখতে সক্ষম is আমি বাজি ধরতে পারি যে আপনি পাঁচটিরও বেশি সতর্কতা হিসাবে একটি দলে বিপুল সংখ্যক দেবগণ কোনও নতুনকে স্পট করতে পারবেন না - আপনার সেটআপের অর্থ এই যে তারা এই সতর্কতাটি স্পষ্ট করবে না যে পদ্ধতিটি অপ্রচলিত যা অস্বীকার করে এটি একটি সতর্কতা থাকার পুরো উদ্দেশ্য :) এই নীল আপনার অভিজ্ঞতা কি?
tymtam

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

উত্তর:


155

আপনি WarningsNotAsErrorsপ্রকল্প ফাইলটিতে একটি- ট্যাগ যুক্ত করতে পারেন ।

<PropertyGroup>
    ...
    ...
    <WarningsNotAsErrors>618,1030,1701,1702</WarningsNotAsErrors>
</PropertyGroup>

দ্রষ্টব্য: 612এবং 618উভয়ই অপ্রচলিত সম্পর্কে সতর্কবার্তা, পার্থক্যটি জানেন না তবে আমি যে প্রকল্পে কাজ করছি তা হ'ল সতর্কতা 618 এর সাথে অপ্রচলিত প্রতিবেদন করছে।


24
612 এবং 618 এর মধ্যে পার্থক্য হল অপ্রচলিতঅ্যাট্রিবিউটের মন্তব্য। কোনও মন্তব্য ছাড়াই একটি অপ্রচলিত লেখাগুলি ত্রুটি 612 উত্পন্ন করে এবং একটি মন্তব্য সহ একটি 618 উত্পন্ন করে
মার্কো স্পাতজ

@ মারকোস্প্যাটজ তারপর আমরা চিকিৎসা করতে পারে [Obsolete]যেখানে সদস্যদের messageহয় null, ত্রুটি যেমন আমরা যখন ঐ যেখানে দিন messageথাকা সতর্কবার্তা শুধুমাত্র সেট করা হয়। যদি errorপ্যারামিটারটি সেট করা trueথাকে তবে ObsoleteAttributeপরিবর্তে একটি CS0619 তৈরি করা হবে। এটি (তবে যাইহোক কে করবে ?) থাকলে messageএটি কাজ করে না বলে মনে হয় । null[Obsolete(null, true)]
জেপ্পে স্টিগ নীলসন

F # এর --warnaserror-:618,1030জন্য বিল্ড-> অন্যান্য পতাকা ক্ষেত্র ব্যবহার করুন। এই প্রকল্প বিকল্পটি এফ # প্রকল্পগুলির জন্য এখনও কার্যকর করা হয়নি। github.com/Mic Microsoft
Asik

2
"WarningsNotAsErferences" বিদ্যমান থাকা জেনে রাখা ভাল। ম্যানুয়ালি ফাইলটি সম্পাদনা না করে এটি প্রকল্প সেটিংসে উপলব্ধ হওয়া উচিত। ধন্যবাদ।
আফ্রিক্ট করুন

1
মাইক্রোসফ্ট সত্যিই এটি খারাপ করেছে (এবং 11 বছর পরে, জিনিসগুলি স্থির করে দেয় না!)। প্রকল্পের সেটিংস পরিবর্তন হয় <NoWarn>, যা বেশিরভাগ ক্ষেত্রে নিকৃষ্ট এবং ইউআইতে রাখতে ব্যর্থ হয় <WarningsNotAsErrors>। যশ।
ব্যবহারকারী 2864740

13

/ সতর্কতা / সতর্ককারী-: 618


1
আপনার সহযোগিতার জন্য ধন্যবাদ। যদিও তারা আইডিই সমস্যাটি সমাধান না করে, এগুলি এখন পর্যন্ত সবচেয়ে সহায়ক মন্তব্য comments
নীল

2
আপনি এটি কোথায় যুক্ত করবেন?
চেচো

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

এমএসবিল্ড 15.9.21 + g9802d43bc3 নিয়ে কাজ করে না: MSBUILD : error MSB1001: Unknown switch. Switch: /warnaserror-:618
পল বি

3

বা আরও নির্দিষ্টভাবে, আপনার ক্ষেত্রে:

/ সতর্কতা / সতর্কতা-: 612,1030,1701,1702

এটিতে আপনার কমা দ্বারা পৃথক করা তালিকার বাদে সমস্ত সতর্কতাগুলিকে ত্রুটি হিসাবে বিবেচনা করা উচিত


1

আপনি যে সতর্কতাগুলি ত্রুটি হিসাবে গণ্য করছেন না তা কেন চালিয়ে যেতে চান? কেন এটি পছন্দসই তা সম্পর্কে আমি বিভ্রান্ত হয়ে পড়েছি - হয় আপনি সেগুলি ঠিক করেন বা না করেন।

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

তাই বিভিন্ন সংকলক সুইচগুলি দেখতে যাওয়ার ভাল উপায় বলে মনে হচ্ছে। আপনি বিভিন্ন লক্ষ্যবস্তু দিয়ে এটি করতে পারেন - একটি লেবেলযুক্ত ডিবাগ বা মুক্তি এবং অন্যটি সতর্কতা সম্পর্কে উপযুক্ত লেবেলযুক্ত।


7
সর্বাধিক সতর্কতাগুলি আমার কোডে একটি সাধারণ বিভ্রান্তির কারণে ঘটে থাকে (উদাঃ আমি এমন একটি পরিবর্তনশীল ঘোষণা করলাম যা আমি ব্যবহার করি না)। একটি অপ্রচলিত সতর্কতা প্রায়শই ঘটে অন্য কারও কোড পরিবর্তন করার কারণে। এটি ঠিক করতে কয়েক সপ্তাহের বিকাশ লাগতে পারে। # তত্পরতা হ'ল কোডে আমি চাই একটি সতর্কতা (সম্ভবত দীর্ঘমেয়াদী স্থিরতা)।
নীল

4
অন্য কথায়, সতর্কতা রয়েছে যে আমি আমার বিল্ডটি ভাঙতে চাই না। যদি # বিভাজনটি বিল্ডটি ভেঙে দেয়, তবে আমি কখনই একটিটিকে চেক করতে পারি না Ob
নীল

@ নীল আমি আপনার কয়েকটি যুক্তির সাথে একমত, তবে আপনি ব্যবহার করেন না এমন ভেরি সরিয়ে ফেলতে বেশি সময় লাগে না এবং আপনি অবশ্যই জানতে চান যে অন্য একটি দল অপ্রচলিত কিছু তৈরি করেছে।
tymtam

@ মায়ু, আপনার মন্তব্যের জন্য ধন্যবাদ। আপনি যে কোনও ভার ব্যবহার করেন না সে সম্পর্কে আমি সম্মত। এজন্য আমার সংকলকটি এটি একটি ত্রুটি হিসাবে বিবেচনা করবে। আমি কখনই কিছু অপ্রচলিত তা জানতে চাইলে আমিও সম্মত। তবে যদি আপনার কোডটিকে অকার্যকর করে রাখে এমন কোনও কিছুকে যদি রিফ্যাক্টর করতে নিষেধের সাথে দীর্ঘ সময় লাগে তবে আপনার পছন্দগুলি 1) এই সতর্কতাটিকে একটি সতর্কতা হিসাবে বিবেচনা করুন 2) আপনার বিল্ডটিকে দীর্ঘ সময়ের জন্য ভাঙ্গা থাকতে দিন 3) সতর্কতাগুলি ত্রুটি হিসাবে বন্ধ করার মতো আরও কিছু সমাধান solution ত্রুটি হিসাবে বেশিরভাগ সতর্কতা সহ, আপনার সতর্কতা তালিকার সংক্ষিপ্ত থাকার সম্ভাবনা রয়েছে, তাই তারা কখন প্রদর্শিত হবে তা আপনি লক্ষ্য করবেন। আপনার পছন্দসই সমাধান কি?
নিল

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

1

আমি ট্রিট সতর্কতাগুলি ত্রুটি হিসাবে ব্যবহার করছি।

বিরল ক্ষেত্রে, যখন কিছু গ্রহণযোগ্য সতর্কতা প্রদর্শিত হয় (যেমন এক্সএমএল সিরিয়ালাইজেশন ক্লাসগুলিতে অপ্রচলিত সদস্যকে উল্লেখ করা বা ডকুমেন্টেশন অনুপস্থিত), তখন এটি স্পষ্টতই #pragma অক্ষম করে দমন করতে হবে (এবং একটি পরিষ্কার কোড না থাকার কারণে বিকল্প কারণ সরবরাহ করা যেতে পারে) পাশাপাশি একটি মন্তব্য হিসাবে)।

এই নির্দেশাবলীর উপস্থিতি এছাড়াও এটি খুঁজে বের করতে সক্ষম করে, কিছু প্রশ্ন থাকলে কে এই সতর্কতা লঙ্ঘনকে (সংস্করণ নিয়ন্ত্রণের "দোষ" দিয়ে) গ্রহণ করেছে accepted


3
আমি এটিও ব্যবহার করি, যদিও এটি আমার বিবরণে উল্লিখিত সমস্যাগুলি সমাধান করে না। আমি নির্দিষ্ট সতর্কতাগুলি গোপন নয়, সতর্কবার্তা হিসাবে বিবেচনা করতে চাই।
নীল

0

কেন কেবল এই নিয়মটি হ'ল না যে "যে কেউ এর ভিতরে warning১২, ১০৩০, ১ 170০১ বা ১ any০২ এর বাইরে যে কোনও সতর্কতার সাথে কোড পরীক্ষা করে, তাকে অবশ্যই হোয়াইটবোর্ডে যেতে হবে এবং একশ বার লিখতে হবে 'আমি আবার নিষিদ্ধ সতর্কতা সহ কোডটিতে চেক করব না। ' "


9
সৌভাগ্য যেটি প্রয়োগ করে ... সামগ্রিক কোডের গুণমান বাড়ানোর জন্য সতর্কতাগুলিকে ত্রুটি হিসাবে আচরণ করা একটি অত্যন্ত গুরুত্বপূর্ণ পদক্ষেপ এবং এটি ডেভসকে তাদের কোডটি ঠিকঠাক করতে বাধ্য করবে! সমস্ত শিলাবোধ অটোমেশন, ম্যানুয়াল শ্রমটি তাই 20 শতকের: ইশ!
আন্দ্রেয়াস ম্যাগনসন


2
@ ব্যবহারকারী ২6464647৪০: সম্মত, রূপালী বুলেট নেই। তবে এটি কোনও রূপালী বুলেট নয় এমন ভিত্তিতে দরকারী কিছু প্রত্যাখ্যান করা খুব সাধারণ ভুল।
আন্দ্রেয়াস ম্যাগনুসন


-4

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

যৌক্তিক সমাধানটি হ'ল হয় ১) কোডটি সংকলিত না হলে চেকিনগুলি অস্বীকার করুন (যার অর্থ যারা সতর্কতা তৈরি করেছেন তাদের এগুলি সংশোধন করতে হবে, যেহেতু কার্যত, তারা বিল্ডটি ভেঙেছে), বা ২) সতর্কতাগুলিকে সতর্কতা হিসাবে বিবেচনা করে। দুটি বিল্ড কনফিগারেশন তৈরি করুন, একটি যা সতর্কতাগুলিকে ত্রুটি হিসাবে বিবেচনা করে, কোডটি সতর্কতা-মুক্ত কিনা তা নিশ্চিত করার জন্য নিয়মিত চালানো যেতে পারে এবং অন্যটি, যা কেবল তাদেরকে সতর্কবার্তা হিসাবে বিবেচনা করে এবং অন্য কেউ যদি সতর্কবার্তা প্রবর্তন করেও আপনাকে কাজ করতে দেয়।


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