রুবোকপ লাইনলেন্থ: মন্তব্যে লাইন কীভাবে উপেক্ষা করবেন?


109

একটি রেলস 4 অ্যাপ্লিকেশন ব্যবহার করে আমি চাই যে রুবোকপ লাইনটি দীর্ঘ করতে হবে কিনা তা পরীক্ষা করার সময় মন্তব্যগুলির সাথে লাইনগুলি উপেক্ষা করুন (কেবলমাত্র একটি মন্তব্য বা লাইন কমেন্টের শেষের সাথে কিছু কোড)। এই কাজ করতে একটি উপায় আছে কি?

উত্তর:


197

প্রতি লাইন ভিত্তিতে পুলিশকে উপেক্ষা করার উপায় রয়েছে।

কনফিগারেশন ফাইলের মাধ্যমে এটি করার একটি উপায়ও রয়েছে।

রান করুন rubocop --auto-gen-configএবং এটি এমন একটি ফাইল তৈরি করবে যা আপনি অপরাধগুলি অক্ষম করতে ব্যবহার করতে পারেন।

কমান্ডটি এই বিকল্পগুলি লোড করার জন্য কী করতে হবে তার একটি ইঙ্গিত দেয়।

প্রতি লাইনের ভিত্তিতে একটি লাইনে, আপনি পুলিশগুলি সক্ষম এবং অক্ষমও করতে পারেন।

# rubocop:disable RuleByName
This is a long line 
# rubocop:enable RuleByName

আপনি আপনার কোডে একবারে একাধিক বিধিও করতে পারেন।

# rubocop:disable BlockComments, AsciiComments

একটি ইনলাইন নির্দেশিকা ব্যবহার করে, নির্দেশটি কেবলমাত্র সেই লাইনের জন্যই বৈধ হয়ে যায় এবং এটি এর মতো দেখায়:

# Thanks to @jnt30 for the comment!
method(argument) # rubocop:disable SomeRule, SomeOtherRule

আপনি এর অফিসিয়াল ম্যানুয়ালটিতে রুবকপ সম্পর্কে আরও একটি টন পড়তে পারেন ।

সমস্ত নিয়মের নামগুলি রুবোকপ কনফিগারেশন ফাইলগুলিতে সন্ধান করা সার্থক find

সাইবারউইজ বলেছেন - " rubocop -Dযখন ডকুমেন্টেশন না দেখিয়ে নিয়মের নাম প্রয়োজন তখন চালান ।" আপডেট : পতাকা ছাড়াই এটি এখন ডিফল্ট আচরণ।


1
ঠিক আছে, মন্তব্যগুলি এমন স্টাইল থেকে বিচ্যুতিটি ব্যাখ্যা করতে পারে যা দল গ্রহণ করেছে, সুতরাং এটি কোনও খারাপ জিনিস নয়, তাই না? অন্যথায় আপনি এটিকে রুবোকপ.আইএমএল ফাইলে রাখুন এবং তারপরে এটি কোনও স্বীকৃত স্টাইলের ব্যতিক্রম নয় এবং কোনও মন্তব্যের প্রয়োজন নেই। মন্তব্যে বলা হয়েছে "আমি তা করতে চেয়েছিলাম!"। এ সব নেই একটি খারাপ জিনিস।
ভিজিওফ

1
মন্তব্যগুলি কোড নয়, সুতরাং এগুলি পরীক্ষা করা অর্থহীনভাবে পৃথক এবং IMO রুবোকপটিকে সেভাবে আচরণ করা উচিত।

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

প্রকৃতপক্ষে, এমনকি #!/bin/env rubyমন্তব্য লাইনটি একটি মন্তব্য, তবুও কোড এবং শব্দার্থগতভাবে গুরুত্বপূর্ণ। মন্তব্যগুলি সর্বদা কেবল "মন্তব্য" নয়।
vgoff

1
@ উত্তরউত্তর এই উত্তরটি থেকে কি পাওয়া যাচ্ছে যে আপনি সন্ধান করছেন?
vgoff

35

নির্দিষ্ট রেখাগুলি স্বয়ংক্রিয়ভাবে উপেক্ষা করার জন্য রেজেক্স প্যাটার্নগুলি সংজ্ঞায়িত করা সম্ভব rubocop.yml, সুতরাং আপনি কোনও #অক্ষর দিয়ে শুরু হওয়া সমস্ত রেখাকে উপেক্ষা করতে পছন্দ করতে পারেন :

Metrics/LineLength:
  Max: 80
  IgnoredPatterns: ['\A#']

এটি উন্নত করা যেতে পারে যাতে "ইন্ডেন্টেড" কমেন্ট লাইনগুলি (যেমন একটি #চরিত্রের পরে হোয়াইটস্পেস )ও এড়ানো যায়, যদি এটি আপনি চান তবে।

নোট করুন যে এটি কোনও কোড দিয়ে শেষ হওয়া কোডের লাইনগুলির জন্য অ্যাকাউন্ট করে না , যদিও:

some_code(that_does_something) # This line would NOT be ignored by Rubocop.

9
হোয়াইটস্পেস থাকতে পারে এমন লাইনগুলি অন্তর্ভুক্ত করে আপনি এই IgnorePatterns: ['(\A|\s)#']
রেজিপেক্সটি

1
ধন্যবাদ @ পোস্তোভিটস একটি টাইপো রয়েছে: এটি IgnoredPatternsপরিবর্তে হওয়া উচিত IgnorePatterns(এটি 'd' অক্ষরটি হারিয়েছে)।
হোরাসিও

9

কোনও নির্দিষ্ট নিয়ম উপেক্ষা করার জন্য আপনি রুবোকপের সাথে নীচের মন্তব্যটি ব্যবহার করতে পারেন:

# rubocop:disable Metrics/LineLength
def this_could_be_a_very_long_line_that_extends_forever_into_infinity
end
# rubocop:enable Metrics/LineLength

আপনি সম্পূর্ণ ফাইলগুলিতে এগুলি যুক্ত করে এড়িয়ে যেতে পারেন .rubocop.yml:

AllCops:
  Exclude:
    - path/to/file.rb

6

আমি মনে করি যে এখানে প্রাথমিক ধারণাটি হ'ল আপনি লাইন দৈর্ঘ্য প্রয়োগ করতে চান, এন অক্ষরের পরে যা কিছু হোক না কেন। ৮০ টি অক্ষরের ডিফল্ট হ'ল পুরানো টার্মিনাল উইন্ডোগুলির জন্য কিছু কার্গো কাল্ট যা কেবলমাত্র এই সংখ্যার অক্ষর ধরে রাখতে পারে। একমাত্র বিকল্প যে আমি দেখেছি কোডে যে URL গুলি অক্ষর সীমা অতিক্রম পারে মঞ্জুরি একটি বিকল্প।

আপনি পুরো ফাইলগুলি উপেক্ষা করতে পারেন , আমার ধারণা আপনি যা খুঁজছেন তা এটি নয়।


8
আজকাল, ৮০ টি অক্ষরের পিছনে ধারণাটি টার্মিনালের জন্য এত বেশি "কার্গো কাল্ট" নয়, এর এখনও একটি যৌক্তিক কারণ রয়েছে: যে কেউ চাইলে তাদের সম্পাদক বা আইডিই উইন্ডোগুলিকে বিভক্ত করতে পারে এবং যতক্ষণ না তারা কেবল আরও বিস্তৃত হয় ৮০ টিরও বেশি অক্ষরের চেয়ে এগুলির প্রস্থ বা অভিজ্ঞতার মোড়কে পরিবর্তন করার প্রয়োজন নেই।
জেসন আন্তম্যান

2
আইএমও যদি আপনার কাছে এমন কোনও আইডিই না থাকে যা নরম মোড়কে সমর্থন করে, আপনার সরঞ্জামটি আপ টু ডেট নয়।
phoet

8
৮০ টি অক্ষরও বেশ পঠনযোগ্য, যেখানে ৪০ বা ২০০ কম তাই এটিও একটি ব্যবহারযোগ্য জিনিস
টনি লেই

# 1 "যতক্ষণ না তারা 80 টির চেয়ে বেশি বিস্তৃত হয়" 800x600 80 টি অক্ষরের চেয়েও প্রশস্ত এবং আপনার পাশাপাশি পাশাপাশি 2 80 অক্ষরের ফাইলগুলি দেখতে একই সমস্যা হয়। এটি আজেবাজে কথা এবং কেবল 1366 রেজাল্টে প্রযোজ্য। 1920+ গ্রহণের পরে, পরবর্তী যুক্তিটি হবে "আমি 3, 4 টি ফাইল বিভক্ত করতে পারি"
আন্দ্রে ফিগুয়েরেদো

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