

Rubycritic adalah permata yang membungkus permata analisis statis seperti bau, flay dan flog untuk memberikan laporan berkualitas kode ruby Anda.
Permata ini menyediakan fitur seperti:
Tinjauan Proyek Anda: 
Indeks file proyek dengan jumlah bau masing -masing: 
Indeks bau terdeteksi: 
Saat menganalisis kode seperti berikut:
class Dirty
def awful ( x , y )
if y
@screen = widgets . map { | w | w . each { | key | key += 3 } }
end
end
endPada dasarnya mengubah sesuatu seperti ini:

Menjadi sesuatu seperti ini:

Ini menggunakan sistem kontrol sumber Anda (hanya Git, Mercurial, dan Perforce yang saat ini didukung) untuk membandingkan perubahan yang saat ini Anda tidak berkomitmen dengan komit terakhir Anda.
Peringatan : Jika kode Anda tidak seperti yang Anda harapkan setelah menjalankan rubycritic, silakan periksa simpanan sistem kontrol sumber Anda.
Lihat /docs jika Anda ingin membaca lebih lanjut tentang metrik inti kami.
Rubycritic dapat diinstal dengan perintah berikut:
$ gem install rubycriticJika Anda lebih suka menginstal rubycritic menggunakan Bundler, tambahkan baris ini ke gemfile aplikasi Anda:
gem "rubycritic" , require : falseDan kemudian mengeksekusi:
$ bundle Menjalankan rubycritic tanpa argumen akan menganalisis semua file ruby di direktori saat ini:
$ rubycritic Atau Anda dapat melewati daftar file dan direktori rubycritic . Analisis akan dicopot ke file dan direktori yang disediakan:
$ rubycritic app lib/foo.rbUntuk daftar lengkap opsi baris perintah, jalankan:
$ rubycritic --help| Bendera Perintah | Keterangan |
|---|---|
-v / --version | Menampilkan versi saat ini dan keluar |
-p / --path | Setel jalur di mana laporan akan disimpan (tmp/rubycritic secara default) |
--coverage-path | Setel jalur di mana SimpleCov akan disimpan (./coverage secara default) |
-f / --format | Laporkan bau dalam format yang diberikan 1 |
--custom-format path:classname | Memuat dan membuat instantiate kustom formatter 2 |
-s / --minimum-score | Tetapkan skor minimum (float: mis: 96.28), default: 0 |
-m / --mode-ci | Gunakan Mode CI 3 |
-b / --branch | Setel cabang untuk membandingkan |
-t / --maximum-decrease | Ambang batas untuk perbedaan skor antara dua cabang 4 |
--deduplicate-symlinks | De-duplikat Symlink berdasarkan target akhir mereka |
--suppress-ratings | Menekan Peringkat Surat |
--no-browser | Jangan buka laporan HTML dengan browser |
html (default; akan dibuka di browser)jsonconsolelint-b-b , default: 0 Anda juga dapat menggunakan file konfigurasi. Cukup buat .rubycritic.yml di jalur akar proyek Anda.
Berikut adalah satu contoh:
mode_ci :
enabled : true # default is false
branch : ' production ' # default is main
branch : ' production ' # default is main
path : ' /tmp/mycustompath ' # Set path where report will be saved (tmp/rubycritic by default)
coverage_path : ' /tmp/coverage ' # Set path where SimpleCov coverage will be saved (./coverage by default)
threshold_score : 10 # default is 0
deduplicate_symlinks : true # default is false
suppress_ratings : true # default is false
no_browser : true # default is false
formats : # Available values are: html, json, console, lint. Default value is html.
- console
minimum_score : 95 # default is 0
paths : # Files to analyse. Churn calculation is scoped to these files when using Git SCM.
- ' app/controllers/ '
- ' app/models/ 'Reek : RubyCritic menggunakan mekanisme pemuatan konfigurasi default Reek . Ini berarti bahwa jika Anda memiliki file konfigurasi Reek yang ada, Anda dapat memasukkan ini ke dalam root proyek Anda dan RubyCritic akan menghormati konfigurasi ini.flay : Kami menggunakan konfigurasi default flay .flog : Kami menggunakan konfigurasi default flog dengan beberapa penyesuaian yang lebih kecil:all : Forces flog untuk melaporkan skor di semua kelas dan metode. Tanpa opsi ini flog hanya akan memberikan hasil hingga ambang tertentu.continue : membuatnya sehingga flog tidak membatalkan ketika file ruby tidak dapat diuraikan.methods : Mengkonfigurasi flog untuk melewatkan kode di luar metode. Ini mencegah flog dari melaporkan "metode" private dan protected . Ini juga mencegah flog dari melaporkan metode rel seperti before_action dan has_many .Jika Anda suka berjaga, Anda mungkin suka penjaga-rubycritic. Secara otomatis menganalisis file ruby Anda saat dimodifikasi.
Untuk integrasi berkelanjutan, Anda dapat memberi Jenkins CI putaran. Dengan itu, Anda dapat dengan mudah membangun iklim kode Anda sendiri (miskin)!
Anda dapat menggunakan rubycritic sebagai perintah rake dalam bentuknya yang paling sederhana seperti ini:
require "rubycritic/rake_task"
RubyCritic :: RakeTask . newTugas Rake yang lebih canggih yang akan memanfaatkan semua opsi konfigurasi yang tersedia bisa terlihat seperti ini:
RubyCritic :: RakeTask . new do | task |
# Name of RubyCritic task. Defaults to :rubycritic.
task . name = 'something_special'
# Glob pattern to match source files. Defaults to FileList['.'].
task . paths = FileList [ 'vendor/**/*.rb' ]
# You can pass all the options here in that are shown by "rubycritic -h" except for
# "-p / --path" since that is set separately. Defaults to ''.
task . options = '--mode-ci --format json'
# Defaults to false
task . verbose = true
# Fail the Rake task if RubyCritic doesn't pass. Defaults to true
task . fail_on_error = true
endRubycritic akan mencoba membuka laporan yang dihasilkan dengan browser secara default. Jika Anda tidak menginginkan ini, Anda dapat mencegah perilaku ini dengan mengatur opsi yang sesuai:
RubyCritic :: RakeTask . new do | task |
task . options = '--no-browser'
endJika Anda ingin membuat beberapa tugas menyapu (misalnya, untuk konfigurasi khusus lokal & untuk CI), Anda dapat melakukannya! Jika Anda memutuskan untuk melakukan ini, Anda harus memberikan deskripsi yang lebih jelas untuk setiap tugas:
# for local
RubyCritic :: RakeTask . new ( "local" , "Run RubyCritic (local configuration)" do | task |
# ...
end
# for CI
RubyCritic :: RakeTask . new ( "ci" , "Run RubyCritic (CI configuration)" do | task |
task . options = "--mode-ci"
# ...
end Lihat Formatters
Rubycritic mendukung versi Ruby:
| Versi Ruby | Versi rubycritic terbaru |
|---|---|
| 2.4 | v4.7.0 |
| 2.5 | v4.7.0 |
| 2.6 | v4.7.0 |
| 2.7 | v4.9.x |
| 3.0 | terbaru |
| 3.1 | terbaru |
| 3.2 | terbaru |
| 3.3 | terbaru |
Rubycritic tidak harus tetap menjadi pilihan kedua untuk layanan analisis kualitas kode lainnya. Bersama -sama, kami dapat memperbaikinya dan terus membangun alat metrik kode hebat yang tersedia di ekosistem Ruby.
Bisa dibilang, Gem Better_errors hanya menjadi populer setelah menerima permintaan tarik (cukup mengagumkan) yang mengubah desain halamannya.
Demikian pula, tarik permintaan yang meningkatkan tampilan dan nuansa permata, yang mengubah perhitungan peringkat atau yang memperbaiki masalah yang ada akan paling disambut. Hanya mengomentari suatu masalah dan memberikan beberapa wawasan tentang bagaimana sesuatu seharusnya bekerja akan dihargai. Tidak ada kontribusi yang terlalu kecil.
Lihat Pedoman Kontribusi Rubycritic tentang cara melanjutkan.
Penulis awal RubyCritics adalah Guilherme Simões.
Tim inti saat ini terdiri dari:

Rubycritic dipertahankan dan didanai oleh Whitesmith. Tweet pertanyaan atau saran Anda ke @whitesmithco.