
bellybutton adalah mesin serat yang dapat disesuaikan, mudah dikonfigurasikan untuk Python.
Alat-alat seperti Pylint dan Flake8 menyediakan, out-of-the-box, berbagai aturan untuk menegakkan praktik terbaik Python, memastikan kepatuhan PEP-8, dan menghindari sumber serangga yang sering. Namun, banyak proyek memiliki kandidat khusus proyek untuk analisis statis, seperti panduan gaya internal, bidang fungsionalitas yang sudah usang, atau sumber kesalahan yang umum. Ini terutama berlaku untuk proyek -proyek tersebut dengan banyak kontributor atau dengan basis kode besar atau warisan.
bellybutton memungkinkan aturan berbaris kustom untuk ditentukan berdasarkan per proyek dan terdeteksi sebagai bagian dari proses normal, pengujian dan penyebaran Anda dan, lebih lanjut, membuat menentukan aturan ini sangat mudah diakses, sangat menurunkan biaya adopsi.
Cobalah bellybutton jika:
bellybutton dapat diinstal melalui:
pip install bellybuttonSetelah diinstal, berjalan
bellybutton init Di direktori root proyek Anda akan membuat file konfigurasi .bellybutton.yml dengan aturan contoh bagi Anda untuk mulai beradaptasi. bellybutton juga akan mencoba memberikan pengaturan aturan tambahan berdasarkan struktur direktori proyek Anda.
Setelah Anda mengkonfigurasi bellybutton untuk proyek Anda, berjalan
bellybutton lint akan meletakkan proyek terhadap aturan yang ditentukan dalam .bellybutton.yml Anda. Selain itu, berjalan
bellybutton lint --modified-only akan, jika menggunakan git, hanya serpai file -file yang berbeda dari origin/master .
Untuk menambahkan bellybutton ke pipa CI Anda, lihat konfigurasi TOX repositori ini dan .travis.yml sebagai contoh.
Aturan dalam pola pasokan bellybutton yang harus ditangkap dan menyebabkan berjarak gagal. Aturan sebagaimana ditentukan dalam konfigurasi .bellybutton.yml Anda harus terdiri dari:
description deskripsi, mengungkapkan arti aturanexpr ekspresi, menentukan pola yang harus ditangkap - baik sebagai ekspresi astpath atau sebagai ekspresi reguler ( !regex ... ). Selain itu, kunci yang digunakan untuk aturan dalam pemetaan rules berfungsi sebagai namanya.
Aturan juga mungkin terdiri dari:
settings Pengaturan yang menentukan file mana aturan harus ditegakkan, serta apakah itu dapat diabaikan melalui # bb: ignore komentarexample kode python yang akan dicocokkan oleh aturaninstead sepotong kode alternatif, untuk membimbing pengembang dalam memperbaiki kesalahan serat mereka. example ini dan instead klausa diperiksa saat run-time untuk memastikan bahwa masing-masing adalah dan tidak cocok dengan expr aturan.
Sebagai contoh, aturan untuk berbaris untuk panggilan fungsi yang sudah usang menggunakan ekspresi astpath mungkin terlihat seperti:
DeprecatedFnCall :
description : ` deprecated_fn ` will be deprecated in v9.1.2. Please use `new_fn` instead.
expr : //Call[func/Name/@id='deprecated_fn']
example : " deprecated_fn(*values) "
instead : " new_fn(values) " !settings node Tentukan:
included di mana aturan harus dijalankan, menggunakan notasi globalexcluded pada aturan mana yang tidak dapat dijalankan (bahkan saat mencocokkan jalur included )allow_ignore yang menentukan apakah aturan dapat diabaikan, memberikan garis yang cocok dengan aturan memiliki # bb: ignore komentar. Selain itu, pada tingkat root .bellybutton.yml , pengaturan default_settings dapat ditentukan yang akan digunakan oleh aturan tanpa pengaturan eksplisit. Setiap aturan harus memiliki parameter settings atau dapat kembali pada default_settings .
Sebagai contoh, simpul !settings
my_module_settings : !settings
included :
- ~+/my_package/my_module.py
excluded : []
allow_ignore : no Lihatlah .bellybutton.yml repositori ini sebagai contoh file konfigurasi bellybutton , dan readme astpath untuk contoh -contoh jenis pola yang dapat Anda letakkan untuk menggunakan bellybutton .
bellybutton dalam rilis alpha dan, dengan demikian, kehilangan beberapa fitur utama, dokumentasi, dan cakupan uji penuh. Lebih lanjut, bellybutton tidak dioptimalkan untuk kinerja pada basis kode yang sangat besar dan mungkin berisi bug yang melanggar. Harap laporkan setiap bug yang ditemui.
!chain dan !verbal belum diterapkan