দমন সতর্কতা: বিনামূল্যে ভেরিয়েবলের (এবং অন্যান্য) অ্যাসাইনমেন্ট


14

ইমাস লিসপ ফাইলটি সংকলন করে বাইট করার সময় আমি কীভাবে "বিনামূল্যে ভেরিয়েবলের অ্যাসাইনমেন্টটি" দমন করতে পারি?

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

দমন করা যায় এমন সমস্ত সতর্কতা / ত্রুটির একটি তালিকা পাওয়াও ভাল।

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


1
এই সতর্কতাগুলি দমন করবেন না, তাদের ঠিক করুন। এগুলি একটি কারণে বিদ্যমান।
চন্দ্রাহীন

2
@ lunaryorn না, তারা মিথ্যা ইতিবাচক।
fommil

1
সমস্ত যথাযোগ্য সম্মানের সাথে এবং নির্দিষ্ট সতর্কতাগুলি না দেখে, আমি দ্বিমত পোষণ করব। ভুয়া ফ্রি ভেরিয়েবল সতর্কতাগুলি খুব কম, এবং যদি এমন পরিমাণে ঘটে থাকে যা আপনাকে তাদের নিঃশব্দ করতে চায় তবে আমার বিশ্বাস করা শক্ত হয় যে এগুলি সবই মিথ্যা ধনাত্মক। আমি দৃ strongly়ভাবে সন্দেহ করি যে এই সতর্কতাগুলি অনুপস্থিত defvarবা নিখোঁজদের নির্দেশ করে require
চন্দ্রাহীন

3
আমি দুঃখিত তবে আপনি কোন "লিঙ্কযুক্ত রেফারেন্সগুলি" উল্লেখ করেছেন?
চন্দ্রালগ্ন

4
আপনি যখন সিদ্ধান্ত নেন যে "সংকলকটি কেবলমাত্র ভুল", এই সতর্কতাটি নীরব করার সঠিক উপায়টি এর দ্বারা সমস্যাযুক্ত ভেরিয়েবলটি ঘোষণা করা (defvar the-variable)। এটি কেবলমাত্র সেই ভেরিয়েবলের জন্য সতর্কতাটি স্থির করে দেয়, তাই আপনি এখনও অন্যান্য ভেরিয়েবলগুলির জন্য এটি পেতে পারেন।
মালবারবা

উত্তর:


17

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

অবশ্যই, আমার কোনও সন্দেহ নেই যে আপনি কেন এটি অক্ষম করতে হবে তা আপনি জানেন তবে উত্তরটি নীচে।


উত্তর

এই (বা অন্যান্য) সতর্কতাটি অক্ষম করার জন্য আপনাকে এর মান নির্ধারণ করতে হবে byte-compile-warnings। আপনি ফাইলের শেষে নিম্নলিখিত স্নিপেট যুক্ত করে ফাইল-স্থানীয় ভেরিয়েবল হিসাবে এটি করতে পারেন।

;; Local Variables:
;; byte-compile-warnings: (not free-vars)
;; End:

আপনি বিশ্বব্যাপী এটি সেট করতে পারেন।

আপনি যে কোনও সতর্কতা দমন করতে চান তা (not free-vars)দিয়ে প্রতিস্থাপন (not free-vars callargs unresolved)করতে পারেন। অন্তর্ভুক্ত / দমন করা যায় এমন সতর্কতার সম্পূর্ণ তালিকাটি ভেরিয়েবলের ডকস্ট্রিংয়ে (নীচে) পাওয়া যায়।

byte-compile-warnings is a variable defined in `bytecomp.el'.
Its value is t

  This variable is safe as a file local variable if its value
  satisfies the predicate which is a byte-compiled expression.

Documentation:
List of warnings that the byte-compiler should issue (t for all).

Elements of the list may be:

  free-vars   references to variables not in the current lexical scope.
  unresolved  calls to unknown functions.
  callargs    function calls with args that don't match the definition.
  redefine    function name redefined from a macro to ordinary function or vice
              versa, or redefined to take a different number of arguments.
  obsolete    obsolete variables and functions.
  noruntime   functions that may not be defined at runtime (typically
              defined only under `eval-when-compile').
  cl-functions    calls to runtime functions (as distinguished from macros and
                  aliases) from the old CL package (not the newer cl-lib).
  interactive-only
          commands that normally shouldn't be called from Lisp code.
  lexical     global/dynamic variables lacking a prefix.
  make-local  calls to make-variable-buffer-local that may be incorrect.
  mapcar      mapcar called for effect.
  constants   let-binding of, or assignment to, constants/nonvariables.
  suspicious  constructs that usually don't do what the coder wanted.

If the list begins with `not', then the remaining elements specify warnings to
suppress.  For example, (not mapcar) will suppress warnings about mapcar.

নোট করুন যে ফ্লাইচেক এই পরিবর্তনশীলটির জন্য একটি বৈশ্বিক সেটিং বাইট কম্পাইলার সাবপ্রসেসের কাছে পাঠায় না। এটি স্থানীয় ভেরিয়েবলের মূল্যায়ন করে কিনা তাও আমি নিশ্চিত নই।
চন্দ্রাহীন

2
@ লুনারিওর্ন আমি মনে করি যে স্থানীয়-বর্ণ সংস্করণটি ফ্লাই চেকের সাথে কাজ করা উচিত। কমপক্ষে, বাইট-সংকলক সাধারণত ফাইল সংকলনের আগে স্থানীয় ভেরিয়েবলগুলি পড়ার যত্ন নেয়।
মালবারবা

5
@ ফোমিল দুঃখিত, আমি পৃষ্ঠপোষকতা করার অর্থ বলতে চাইনি। আমি এই অনুচ্ছেদটি লিখেছি কারণ অন্য লোকেরা যখন এই সতর্কতাটি গুগল করে তখন তারা এখানে অবতরণ করতে পারে এবং আমি তাদের জানতে চেয়েছিলাম যে এটি একটি আসল জিনিস (অবিলম্বে তাদের অক্ষম করা উচিত এমন কিছু নয়)। এটি পরিচ্ছন্নতার বিষয়ে নয়, এটি নির্ভুলতার বিষয়ে (ডিফভার ছাড়াই কোডের আলাদা অর্থ রয়েছে)। যেহেতু আপনি কেন এটি অক্ষম করতে চান তা উল্লেখ করেননি, তাই আমি বুঝতে পেরেছিলাম যে এটি উল্লেখযোগ্য ছিল যে এটি প্রথম বিকল্প নয়।
মালবারবা

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

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