'# noqa' หมายถึงอะไรในความคิดเห็นของ Python


162

# noqaขณะที่การค้นหาผ่านโครงการหลามผมพบว่าไม่กี่บรรทัดแสดงความคิดเห็นด้วย

import sys
sys.path.append(r'C:\dev')
import some_module   # noqa

อะไรnoqaหมายถึงในงูใหญ่? มันเฉพาะเจาะจงกับงูหลามเท่านั้น?


3
noqaน่าจะเป็นno quality assuranceไปได้ มันบอกให้ซอฟต์แวร์การวิเคราะห์รหัสละเว้นคำเตือน
Stevoisiak


ในหัวของฉันก็มักจะอ่านว่า "ไม่มีคำถามที่ถาม"
thrau

คำตอบ:


198

การเพิ่ม# noqaบรรทัดแสดงว่า linter (โปรแกรมที่ตรวจสอบคุณภาพรหัสโดยอัตโนมัติ) ไม่ควรตรวจสอบบรรทัดนี้ คำเตือนใด ๆ ที่อาจสร้างรหัสจะถูกละเว้น

บรรทัดนั้นอาจมีบางสิ่งที่ "ดูไม่ดี" สำหรับผู้ให้ยืม แต่นักพัฒนาเข้าใจและตั้งใจที่จะอยู่ที่นั่นด้วยเหตุผลบางประการ

สำหรับข้อมูลเพิ่มเติมโปรดดูที่เอกสาร Flake8 สำหรับการเลือกและการละเว้นการละเมิด


3
สำหรับ python linters มันเป็นคำสั่งนี้โดยปกติ แต่สำหรับ linters อื่น ๆ นั้นสามารถแตกต่างกันได้เช่น javascript w / jshint คือ: // jshint ignore:line( jshint.com/docs )
jimf

7
มันทำงานใน PyCharm ด้วย # noqaรูปแบบสั้นทั่วไป หรือแบบยาวที่เฉพาะเจาะจง# noinspection PyUnresolvedReferencesเช่น
Bob Stein

แล้วไง# noqa F0001ล่ะ
youkaichao

5
โปรดทราบว่าสำหรับ pycodestyle / pep8 # nopep8ยังสามารถใช้ซึ่งเป็น imo ชัดเจนน้อย
OozeMeister

53

noqa = NO-QA (ไม่รับประกันคุณภาพ)

โดยทั่วไปจะมีการอ้างอิงใน Python Programming เพื่อเพิกเฉยต่อคำเตือนPEP8

ในคำง่าย ๆ บรรทัดที่มี #noqa ในตอนท้ายจะถูกละเว้นโดยโปรแกรม linter และจะไม่มีการเตือนใด ๆ


15

คุณรู้อะไรไหม? แม้แต่ Guido van Rossum (ผู้สร้าง Python) ก็ถามคำถามนี้มาก่อน : D

นิรุกติศาสตร์เล็กน้อยจาก# noqa :

มันเคยเป็น "nopep8" แต่เมื่อ Flake8 และ Pep8 ต้องการ qualifier ทั่วไป @florentx แนะนำ "NoQA" เช่นเดียวกับใน "No Quality Assurance" (iirc) และติดอยู่

ประเพณีบางอย่างของ# noqa (กับเกล็ด 8 ):

  • # flake8: noqa: ไฟล์ที่มีบรรทัดนี้ถูกข้ามไป
  • บรรทัดที่มี# noqaความคิดเห็นท้าย : จะไม่ออกคำเตือน
  • # noqa: <error>เช่น# noqa: E234 ณ สิ้น : ละเว้นข้อผิดพลาดเฉพาะในบรรทัด
    • สามารถระบุรหัสข้อผิดพลาดหลายรหัสคั่นด้วยเครื่องหมายจุลภาค
    • โคลอนก่อนรายการรหัสจำเป็น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.