Apa arti '# noqa' dalam komentar Python?

162

Saat mencari melalui proyek Python, saya menemukan beberapa baris berkomentar # noqa.

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

Apa noqaartinya dengan Python? Apakah ini khusus untuk Python saja?

Luar biasa
sumber
3
noqakemungkinan besar singkatan no quality assurance. Ini memberi tahu perangkat lunak analisis kode untuk mengabaikan peringatan.
Stevoisiak
Di kepalaku selalu terbaca "tidak ada pertanyaan"
thrau

Jawaban:

198

Menambahkan # noqake baris menunjukkan bahwa linter (program yang secara otomatis memeriksa kualitas kode) tidak boleh memeriksa baris ini. Peringatan apa pun yang mungkin dihasilkan oleh kode akan diabaikan.

Baris itu mungkin memiliki sesuatu yang "terlihat buruk" bagi linter, tetapi pengembang mengerti dan bermaksud untuk berada di sana untuk beberapa alasan.

Untuk informasi lebih lanjut, lihat dokumentasi Flake8 untuk Memilih dan Mengabaikan Pelanggaran .

Jimf
sumber
3
untuk python linters, ini adalah pernyataan ini biasanya tetapi untuk linter lainnya dapat berbeda, yaitu javascript w / jshint adalah: // jshint ignore:line( jshint.com/docs )
jimf
7
Ini berfungsi di PyCharm juga. Bentuk pendek generik # noqa. Atau bentuk panjang khusus # noinspection PyUnresolvedReferencesmisalnya.
Bob Stein
Bagaimana dengan # noqa F0001?
youkaichao
5
Perhatikan bahwa untuk pycodestyle / pep8 # nopep8juga dapat digunakan yang sedikit lebih jelas, imo.
OozeMeister
53

noqa = NO-QA (NO Quality Assurance)

Ini umumnya disebut dalam Pemrograman Python untuk mengabaikan peringatan PEP8 .

Dengan kata sederhana, baris yang memiliki #noqa pada akhirnya akan diabaikan oleh program linter dan mereka tidak akan memunculkan peringatan.

Vishvajit Pathak
sumber
15

Kamu tahu apa? Bahkan Guido van Rossum (pencipta Python) mengajukan pertanyaan ini sebelumnya : D

Sedikit Etimologi dari# noqa :

Dulu "nopep8" tetapi ketika Flake8 dan Pep8 menginginkan kualifikasi umum @florentx menyarankan "NoQA" seperti dalam "No Quality Assurance" (iirc) dan macet.

Beberapa dasar penggunaan dari# noqa (dengan flake8 ):

  • # flake8: noqa: file yang berisi baris ini dilewati
  • baris yang berisi # noqakomentar di akhir : tidak akan mengeluarkan peringatan
  • # noqa: <error>, misalnya, # noqa: E234 di akhir : abaikan kesalahan spesifik pada suatu baris
    • beberapa kode kesalahan dapat diberikan, dipisahkan dengan koma
    • titik dua sebelum daftar kode diperlukan
YaOzI
sumber