সি # - নির্বাচিতভাবে পছন্দসই অপ্রচলিত সতর্কতাগুলি দমন করে


212

Obsoleteএকটি নির্দিষ্ট পদ্ধতি ব্যবহার করা হয় তবে সতর্কতা দেখানোর জন্য আমি অ্যাট্রিবিউটটি (ঠিক যেমন সহযোগী প্রোগ্রামারদের দ্বারা প্রস্তাবিত) ব্যবহার করছি।

কোডে অ্যানালাইসিসের অনুরূপ সতর্কতাটি দমন করার কোনও উপায় আছে SuppressMessageযেখানে ব্যবহারটি ন্যায়সঙ্গত?

এটির জন্য কাজ করা দরকার [Obsolete("Some message")]যার জন্য সতর্কতা 618 উত্পন্ন হয় এবং [Obsolete]কোনও বার্তা না দিয়ে প্লেইন বৈশিষ্ট্য যা সতর্কতা 612 উত্পন্ন করে।

উত্তর:


257

ব্যবহার #pragma warning disable:

using System;

class Test
{
    [Obsolete("Message")]
    static void Foo(string x)
    {
    }

    static void Main(string[] args)
    {
#pragma warning disable 0618
        // This one is okay
        Foo("Good");
#pragma warning restore 0618

        // This call is bad
        Foo("Bad");
    }
}

পরে সতর্কতা পুনরুদ্ধার করুন যাতে আপনি "খারাপ" কলগুলি মিস করবেন না।


1
এটি কেবল তখনই কাজ করে যদি আমি আমার অপ্রচলিত বৈশিষ্ট্যের সাথে কোনও বার্তা না দিই। যদিও এর মতো আমার একটি বার্তা রয়েছে: [অপ্রচলিত ("এ কারণেই এটি ব্যবহার করা উচিত নয় - পরিবর্তে এক্সওয়াইজেড ব্যবহার করুন।")]] আমি একবার বার্তাটি প্রবেশ করিয়ে দিলে, প্রাগমা সতর্কতা 612 অক্ষম করে কাজ করা বন্ধ করে দেয় এবং নির্বিশেষে আমি সতর্কতা পাচ্ছি। এর পরিবর্তে আমার কি আর একটি ত্রুটি আইডি দরকার?
অ্যালেক্স

2
এটি খুঁজে পেয়েছে - অপ্রচলিত বৈশিষ্ট্যে কোনও বার্তা উপস্থিত থাকলে সঠিক সতর্কতা নম্বরটি 618। ধন্যবাদ!
অ্যালেক্স

2
গুডো - আমি এর সাথে মেলে আমার উদাহরণটি সামঞ্জস্য করেছি।
জন স্কিটি

6
@ জর্জ: আপনি এগুলি এখানে দেখতে পারেন ।
জর্দো

3
সতর্কতা / ত্রুটি নম্বরটি প্রথম স্থানে কীভাবে পাবেন সে সম্পর্কে আমার উত্তর দেখুন ।
অ্যারন থোমা

131

অভিপ্রায় অপ্রচলিত জন্য সতর্কবার্তা অক্ষম হয় ব্যবহার , এর কনস্ট্রাক্ট দিয়ে চিহ্নিত করা আছে কিনা নির্বিশেষে [Obsolete]বা [Obsolete("Message")]। সুতরাং CS0612 এবং CS0618 উভয়ই ব্যবহার করুন :

#pragma warning disable 612, 618 

...

#pragma warning restore 612, 618 

3
এছাড়াও মনে রাখবেন যে অপ্রচলিত ব্যবহারটি এমন কোনও শ্রেণিতে থাকে যা নিজেকে অপ্রচলিত হিসাবে চিহ্নিত করা হয় তবে সতর্কতাগুলি ঘটে না।
redcalx

3
ত্রুটি হিসাবে Obsoleteচিহ্নিত হলে ক্ষেত্রেও ত্রুটি অক্ষম করার কোনও উপায় আছে ?
শিমি ওয়েইটস্যান্ডলার

2
@ শিম্মি: যদি এটি একটি ত্রুটি হিসাবে চিহ্নিত হয়, তবে আপনাকে অবশ্যই এটি ঠিক করতে হবে, ত্রুটিগুলি দমন করার উপায় নেই। এটি একটি সিনট্যাক্স সমস্যা হতে পারে, এটি এই সাইটে একটি প্রশ্ন হিসাবে পোস্ট করুন এবং আপনি অবশ্যই একটি ভাল উত্তর পাবেন।
জর্ডো

18

সতর্কতা / ত্রুটি নম্বরটি প্রথম স্থানে কীভাবে পাবেন তা এখানে রয়েছে :

  1. আপনার প্রকল্পটি পুনর্নির্মাণ করুন।
  2. আউটপুট উইন্ডোতে যান ।
  3. আপনি যে সতর্কতা / ত্রুটিটি দমন করতে চান তার রেখাটি দেখুন।
    উদাহরণ স্বরূপ:
    C:\Users\Username\Documents\Visual Studio 2010\Projects\Projectname\Classname.cs(203,7): warning CS0162: Unreachable code detected
  4. " " এর পরে নম্বর অংশটি অনুলিপি করুন CS
  5. তারপরে জন স্কিটি যেমন বলে তেমন এগিয়ে যান ।

(বেটার সবসময় এগিয়ে যেমন জন স্কিট বলছেন ...)


9

আপনি #pragmaসতর্কতা অক্ষম নির্দেশকে সন্ধান করছেন

মূলত আপনি .cs ফাইলের কল সাইটের উপরে নিম্নলিখিত কমান্ডটি যুক্ত করুন।

#pragma warning disable 612
SomeMethodCall

612 অপ্রচলিত পদ্ধতি কল করার জন্য ত্রুটি বার্তা আইডি


এটি কেবল তখনই কাজ করে যদি আমি আমার অপ্রচলিত বৈশিষ্ট্যের সাথে কোনও বার্তা না দিই। যদিও এর মতো আমার একটি বার্তা রয়েছে: [অপ্রচলিত ("এ কারণেই এটি ব্যবহার করা উচিত নয় - পরিবর্তে এক্সওয়াইজেড ব্যবহার করুন।")]] আমি একবার বার্তাটি প্রবেশ করিয়ে দিলে, প্রাগমা সতর্কতা 612 অক্ষম করে কাজ করা বন্ধ করে দেয় এবং নির্বিশেষে আমি সতর্কতা পাচ্ছি। এর পরিবর্তে আমার কি আর একটি ত্রুটি আইডি দরকার?
অ্যালেক্স

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