การใช้แอพ Rails 4 ฉันต้องการให้ Rubocop ละเว้นบรรทัดที่มีความคิดเห็น (เป็นเพียงความคิดเห็นหรือโค้ดบางส่วนที่มีความคิดเห็นท้ายบรรทัด) เมื่อตรวจสอบว่าบรรทัดยาวหรือไม่ มีวิธีทำไหม?
การใช้แอพ Rails 4 ฉันต้องการให้ Rubocop ละเว้นบรรทัดที่มีความคิดเห็น (เป็นเพียงความคิดเห็นหรือโค้ดบางส่วนที่มีความคิดเห็นท้ายบรรทัด) เมื่อตรวจสอบว่าบรรทัดยาวหรือไม่ มีวิธีทำไหม?
คำตอบ:
มีวิธีที่จะละเว้นตำรวจตามบรรทัด
นอกจากนี้ยังมีวิธีการทำผ่านไฟล์กำหนดค่า
วิ่ง 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 ได้ในคู่มืออย่างเป็นทางการคู่มืออย่างเป็นทางการ
หากต้องการค้นหาชื่อกฎทั้งหมดควรดูในไฟล์กำหนดค่า rubocop
ไซเบอร์วิซกล่าวว่า - "เรียกใช้rubocop -D
เมื่อฉันต้องการชื่อกฎแทนที่จะดูในเอกสารประกอบ" อัปเดต : ตอนนี้เป็นพฤติกรรมเริ่มต้นที่ไม่มีแฟล็ก
#!/bin/env ruby
บรรทัดความคิดเห็นก็เป็นความคิดเห็น แต่ก็เป็นรหัสและมีความสำคัญทางความหมาย ความคิดเห็นไม่ได้มี แต่ "ความคิดเห็น" เสมอไป
เป็นไปได้ที่จะกำหนดรูปแบบ regex เพื่อละเว้นบางบรรทัดโดยอัตโนมัติrubocop.yml
ดังนั้นคุณสามารถเลือกที่จะละเว้นบรรทัดทั้งหมดที่ขึ้นต้นด้วย#
อักขระ:
Metrics/LineLength:
Max: 80
IgnoredPatterns: ['\A#']
สิ่งนี้สามารถปรับปรุงได้เพื่อให้บรรทัดความคิดเห็น "เยื้อง" (เช่นช่องว่างตามด้วย #
อักขระ) จะถูกละเว้นหากนั่นคือสิ่งที่คุณต้องการ
โปรดทราบว่าสิ่งนี้ไม่ได้คำนึงถึงบรรทัดของรหัสที่ลงท้ายด้วยความคิดเห็นแม้ว่า:
some_code(that_does_something) # This line would NOT be ignored by Rubocop.
IgnorePatterns: ['(\A|\s)#']
IgnoredPatterns
แทนIgnorePatterns
(ไม่มีตัวอักษร 'd')
คุณสามารถใช้ความคิดเห็นต่อไปนี้กับ rubocop เพื่อละเว้นกฎเฉพาะ:
# 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
ฉันคิดว่าแนวคิดพื้นฐานตรงนี้คือคุณต้องการบังคับใช้ความยาวบรรทัดไม่ว่าอะไรจะอยู่หลัง n อักขระ ค่าดีฟอลต์คือ 80 อักขระคือลัทธิขนส่งสินค้าสำหรับหน้าต่างเทอร์มินัลเก่าที่สามารถเก็บอักขระจำนวนนั้น ตัวเลือกเดียวที่ฉันเห็นในรหัสคือตัวเลือกในการอนุญาต URL ที่อาจเกินขีด จำกัด อักขระ
คุณสามารถเพิกเฉยต่อไฟล์ทั้งหมดฉันเดาว่านั่นไม่ใช่สิ่งที่คุณกำลังมองหา