Rubocop Linelength: टिप्पणियों के साथ लाइनों को कैसे अनदेखा करें?


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

आप रूबॉप के बारे में एक टन इसके आधिकारिक मैनुअल में पढ़ सकते हैं ।

सभी नियम खोजने के लिए रूबोक कॉन्फिग फाइलों में देखने लायक है

साइबरविज़ कहते हैं - " rubocop -Dजब मुझे दस्तावेज में देखने की बजाय नियम के नामों की आवश्यकता हो तो चलाएं ।" अद्यतन : यह अब ध्वज के बिना डिफ़ॉल्ट व्यवहार है।


1
ठीक है, टिप्पणियों में एक शैली से विचलन की व्याख्या हो सकती है जिसे टीम द्वारा स्वीकार किया गया है, इसलिए यह एक बुरी बात नहीं है, है ना? अन्यथा आप इसे rubocop.yml फ़ाइल में रखें, और फिर यह एक स्वीकृत शैली अपवाद नहीं है, और इसे टिप्पणी की आवश्यकता नहीं है। टिप्पणी कहती है, "मेरा मतलब था कि ऐसा करने के लिए!"। बुरी बात नहीं है।
vgoff

1
टिप्पणियाँ कोड नहीं हैं, इसलिए उनकी जाँच करना शब्दार्थ रूप से भिन्न है और IMO रूबोकॉप को इस तरह से व्यवहार करना चाहिए।
फोएट

2
टिप्पणियाँ कोड का एक हिस्सा हैं, और जब आप ई-मेल या किसी टर्मिनल पर कोड के साथ व्यवहार करते हैं। मुझे लगता है कि यह बुरा नहीं है कि आपकी टिप्पणी उसी लाइन की लंबाई का पालन नहीं करती है जिसे कोड के रूप में "टीम" द्वारा अपनाया गया है। वे प्रवाह को बाधित नहीं करना चाहिए क्योंकि वे टिप्पणी कर रहे हैं। मुझे यकीन है कि रूबोक किसी भी चीज़ के लिए टिप्पणियों की जांच नहीं करता है, अन्य निर्देशों के अलावा, शब्दार्थ (सार्थक)। यह लाइन की लंबाई और टिप्पणियों की शैली की जांच करता है। तो नहीं, यह अर्थ की तलाश नहीं है, यह केवल जाँच शैली है। छूट न दें कि "टिप्पणियां कोड नहीं हैं" होना जरूरी नहीं है।
vgoff

दरअसल, यहां तक ​​कि #!/bin/env rubyटिप्पणी लाइन भी एक टिप्पणी है, फिर भी कोड है, और शब्दार्थ महत्वपूर्ण है। टिप्पणियां हमेशा केवल "टिप्पणियां" नहीं होती हैं।
vgoff

1
@Twiek इस उत्तर से कुछ भी गायब है जिसे आप ढूंढ रहे हैं?
vgoff

35

रेगेक्स पैटर्न को स्वचालित रूप से कुछ लाइनों को अनदेखा करना संभव है rubocop.yml, इसलिए आप एक #चरित्र से शुरू होने वाली सभी लाइनों को अनदेखा करना चुन सकते हैं :

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

इसे बेहतर बनाया जा सकता है ताकि "इंडेंटेड" कमेंट लाइन्स (यानी व्हाट्सएप और उसके बाद एक #कैरेक्टर) को भी नजरअंदाज किया जा सके, अगर वह चाहे तो।

ध्यान दें कि यह कोड की पंक्तियों के लिए खाता नहीं है जो एक टिप्पणी के साथ समाप्त होते हैं, हालांकि:

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

9
आप उस regexp का विस्तार उन पंक्तियों को शामिल कर सकते हैं जिनमें IgnorePatterns: ['(\A|\s)#']
व्हाट्सएप

1
धन्यवाद @poustovitss एक टाइपो है: यह IgnoredPatternsइसके बजाय होना चाहिए IgnorePatterns(यह अक्षर 'डी' को याद कर रहा है)।
होरासियो

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

मुझे लगता है कि यहां मूल विचार यह है कि आप लाइन की लंबाई को लागू करना चाहते हैं, कोई फर्क नहीं पड़ता कि एन अक्षर के बाद क्या है। 80 वर्णों के लिए डिफ़ॉल्ट, पुराने टर्मिनल खिड़कियों के लिए कुछ कार्गो पंथ है जो केवल वर्णों की संख्या को पकड़ सकते हैं। एकमात्र विकल्प जो मैंने कोड में देखा , वह एक विकल्प है जो url की अनुमति देता है जो वर्ण सीमा से अधिक हो सकता है।

आप संपूर्ण फ़ाइलों को अनदेखा कर सकते हैं , मुझे लगता है कि आप जो खोज रहे हैं वह नहीं है।


8
इन दिनों, टर्मिनल के लिए 80 वर्णों के पीछे का विचार इतना "कार्गो पंथ" नहीं है, इसके लिए अभी भी एक तार्किक कारण है: कोई भी अपने संपादक या आईडीई खिड़कियों को विभाजित कर सकता है, हालांकि वे चाहते हैं, और जब तक वे बस व्यापक हैं 80 से अधिक वर्ण, उन्हें चौड़ाई या अनुभव को बदलने की आवश्यकता नहीं होगी।
जेसन एंटमैन

2
IMO यदि आपके पास कोई IDE नहीं है जो सॉफ्ट रैपिंग का समर्थन करता है, तो आपका टूलिंग अप टू डेट नहीं है।
फोएट

8
80 चर भी बहुत पठनीय है, जबकि 40 या 200 कम है, इसलिए यह भी एक प्रयोज्य बात है
टोनी लेह

# 1 "जब तक वे 80 वर्णों से अधिक चौड़े होते हैं" 800x600 80 वर्णों से अधिक चौड़ा होता है, और आपको वही समस्याएँ साथ-साथ दिखाई दे रही हैं 2 80 वर्ण फाइलें। यह बकवास है और केवल 1366 रेस पर लागू होता है। 1920+ के साथ, अगला तर्क "मैं 3, 4 फाइलों को विभाजित कर सकता हूं"
आंद्रे फिगयूरेडो

1
हमारे पास यह 80 पर था, फिर इसे बदलकर 120 कर दिया गया। 13 के लैपटॉप पर विभाजित स्क्रीन दृश्य में
जीथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.