

Rubycritic - это драгоценный камень, который оборачивается вокруг статического анализа драгоценных камней, таких как Reek, Flay и Flog, чтобы предоставить качественный отчет вашего кода Ruby.
Этот драгоценный камень предоставляет такие функции, как:
Обзор вашего проекта: 
Индекс проекта файлов с их соответствующим количеством запахов: 
Индекс обнаруженных запахов: 
При анализе кода, как следующее:
class Dirty
def awful ( x , y )
if y
@screen = widgets . map { | w | w . each { | key | key += 3 } }
end
end
endЭто в основном поворачивает что -то вроде этого:

В что -то вроде этого:

Он использует вашу систему управления источником (в настоящее время поддерживается только GIT, Mercurial и Perforce) для сравнения ваших незафиксированных в настоящее время изменения с вашим последним коммитом.
ПРЕДУПРЕЖДЕНИЕ : Если ваш код не так, как вы ожидаете после запуска Rubycritic, пожалуйста, проверьте вашу систему управления источником.
Проверьте /docs если вы хотите прочитать больше о наших основных показателях.
Rubycritic может быть установлен со следующей командой:
$ gem install rubycriticЕсли вы предпочитаете установить Rubycritic с помощью Bundler, добавьте эту линию в Gemfile вашего приложения:
gem "rubycritic" , require : falseА затем выполнить:
$ bundle Запуск rubycritic без аргументов будет анализировать все файлы Ruby в текущем каталоге:
$ rubycritic В качестве альтернативы вы можете перенести rubycritic список файлов и каталогов. Анализ будет охвачен предоставленными файлами и каталогами:
$ rubycritic app lib/foo.rbДля получения полного списка вариантов командной строки.
$ rubycritic --help| Командный флаг | Описание |
|---|---|
-v / --version | Отображает текущую версию и выходит |
-p / --path | Установите путь, где будет сохранен отчет (по умолчанию TMP/Rubycritic) |
--coverage-path | Установите путь, где будет сохранен Simplecov (./coverage по умолчанию) |
-f / --format | Отчет пахнет в данном формате 1 |
--custom-format path:classname | Загрузить и создать индивидуальное форматирование (ы) 2 |
-s / --minimum-score | Установите минимальный балл (Float: Ex: 96.28), по умолчанию: 0 |
-m / --mode-ci | Используйте режим CI 3 |
-b / --branch | Установить филиал для сравнения |
-t / --maximum-decrease | Порог для разницы в оценке между двумя ветвями 4 |
--deduplicate-symlinks | Де-дублирование символиков на основе их конечной цели |
--suppress-ratings | Подавить рейтинги букв |
--no-browser | Не открывайте отчет HTML с браузером |
html (по умолчанию; откроется в браузере)jsonconsolelint-b-b , по умолчанию: 0 Вы также можете использовать файл конфигурации. Просто создайте .rubycritic.yml на корневом пути вашего проекта.
Вот один пример:
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 использует механизм загрузки конфигурации Reek . Это означает, что если у вас есть существующий файл конфигурации Reek , вы можете просто поместить это в корень проекта, а RubyCritic будет уважать эту конфигурацию.flay : Мы используем конфигурацию по умолчанию flay .flog : мы используем конфигурацию flog по умолчанию с парой небольших настроек:all : силы flog , чтобы сообщить о оценках по всем классам и методам. Без этой опции flog даст результаты только до определенного порога.continue : делает это так, чтобы flog не прервал, когда рубиновый файл не может быть проанализирован.methods : настраивает flog на пропускной код за пределами методов. Он flog отчет о «методах» private и protected . Это также flog отчеты о методах рельсов, таких как before_action , и has_many .Если вы любите охрану, вам может понравиться охрана-рубитик. Он автоматически анализирует ваши файлы Ruby по мере их изменения.
Для непрерывной интеграции вы можете дать Дженкинсу CI вращение. С ним вы можете легко построить свой собственный (бедный) код CODE!
Вы можете использовать Rubycritic в качестве команды Rake в его самой простой форме, как это:
require "rubycritic/rake_task"
RubyCritic :: RakeTask . newБолее сложная задача грабли, которая использовала бы все доступные параметры конфигурации, может выглядеть так:
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 попытается открыть сгенерированный отчет с браузером по умолчанию. Если вы не хотите этого, вы можете предотвратить такое поведение, установив параметры соответственно:
RubyCritic :: RakeTask . new do | task |
task . options = '--no-browser'
endЕсли вы хотите создать несколько граблейных задач (например, для локальной и для CI-специфической конфигурации), вы можете сделать это! Если вы решите сделать это, вы должны предоставить более четкое описание для каждой задачи:
# 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 Смотрите форматеры
Rubycritic поддерживает версии Ruby:
| Рубинская версия | Последняя рубиктическая версия |
|---|---|
| 2.4 | v4.7.0 |
| 2.5 | v4.7.0 |
| 2.6 | v4.7.0 |
| 2.7 | v4.9.x |
| 3.0 | последний |
| 3.1 | последний |
| 3.2 | последний |
| 3.3 | последний |
Rubycritic не должен оставаться вторым выбором для других услуг анализа качества кода. Вместе мы можем улучшить его и продолжать опираться на отличные метрические инструменты кода, которые доступны в экосистеме Ruby.
Возможно, драгоценный камень Better_Errors стал популярным только после получения (довольно удивительного) запроса о привлечении, который изменил дизайн его страницы.
Аналогичным образом, запросы на привлечение, которые улучшают внешний вид драгоценного камня, которые настраивают расчет рейтингов или что исправление существующих проблем будет наиболее приветствующимся. Просто комментируя проблему и дать некоторое представление о том, как что -то должно быть оценено. Никакого вклада не слишком мал.
Смотрите рекомендации Rubycritic о том, как продолжить.
Первоначальным автором RubyCritics был Guilherme Simões.
Нынешняя основная команда состоит из:

Rubycritic поддерживается и финансируется Whitesmith. Чистопите в Твиттере ваши вопросы или предложения @whitesmithco.