Инструмент автоматического контроля качества кода для Ruby?

В Java мне очень не хватает поддержки инструментов. FindBugs, Checkstyle и PMD созданы для святой троицы показателей качества кода и автоматической проверки ошибок.

Есть ли что-нибудь, что будет проверять на наличие простых ошибок и / или нарушений стиля кода Ruby? Бонусные баллы, если я смогу адаптировать его для таких фреймворков, как Rails, чтобы придерживаться идиом Rails.

Вы описываете линтер.

meagar 20.03.2013 08:56

Я никогда раньше не слышал этот термин, а ссылка, на которую вы ссылаетесь, использует «инструменты, похожие на линт», и никогда не упоминает слово «линтер». Большую часть времени я слышу, как их называют «инструментами статического анализа».

Will Sargent 25.03.2013 07:59

«Линтер» и «линтинг» - это довольно общие и не требующие пояснений термины.

meagar 26.03.2013 05:58

Взгляните на PullReview (pullreview.com). У него впечатляющий набор функций, и я нахожу более полезные рекомендации по устранению проблем с безопасностью и сложностей кода.

Joshua Pinter 12.04.2015 03:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
37
4
11 082
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

Пыль похоже, что он может помочь вам найти неиспользуемый и бесполезный код, который, похоже, соответствует тому, что вам нужно.

Мне неизвестны другие подобные инструменты. Решить эту проблему в Ruby намного сложнее, чем в Java - вы заметите, что все эти java-инструменты позиционируют себя как использующие «статический анализ» кода. Статический анализ кода Ruby часто невозможен, потому что нет ничего статичного, что можно было бы проанализировать (методы часто создаются во время выполнения и т. д.)

Во всяком случае, некоторые из этих вещей в Ruby не нужны, потому что язык встроен в них. Например, вам не нужен стандарт кодирования для обеспечения того, чтобы все ваши классы были NamedLikeThis, потому что код не будет работать, если это не так.

P.S. Я имеют, чтобы добавить стандартный отказ от ответственности, что такого рода инструменты часто могут быть отвлекающим маневром. Вы можете потратить весь день на то, чтобы ваш код соответствовал тому, что, по мнению инструмента, должно быть, и в итоге получите больше ошибок, чем вы вначале. ИМХО, лучшее решение - писать код плавно, чтобы вам было легче его читать. Никакой статический анализ не будет так хорош, как человеческий читающий код, в котором четко указано, для чего он предназначен. Благодаря этой возможности рубин на световые годы опережает многие другие языки. Я лично рекомендую вам направить свои усилия на то, чтобы научиться писать более свободно и обучить свою команду таким вещам, чем тратить время на статический анализ.

Бегло писать и обучать команду - это, безусловно, цель; однако, когда идиомы меняются (например, от ENV ['RAILS_ENV'] == 'development' до Rails.env.development?), тогда такие инструменты могут быть очень полезны для предотвращения появления вредных привычек.

Will Sargent 11.09.2008 01:56
Ответ принят как подходящий

Недавно я начал искать что-то подобное для Ruby. То, с чем я столкнулся до сих пор:

Это могут быть места для начала. К сожалению, я еще не использовал ни один из трех в достаточном количестве, чтобы высказать хорошее мнение.

Думаю, этот продукт SAAS поможет вам не только в Ruby, но и на других языках. Можете использовать эту ссылку, чтобы получить 1-месячную бесплатную пробную версию. codegrip.app.link/0yxbLJ57zW

Deepak Kumbhar 18.05.2019 20:12

Сайкуро и Флог могут помочь получить общее представление о сложности кода. Вы также можете использовать такой инструмент, как rcov, чтобы посмотреть, каково ваше тестовое покрытие. Существует плагин для проектов Rails, который объединяет все эти показатели в одну задачу rake. Он называется metric_fu.

Я не отвечал на этот вопрос, когда его спросили, но написанное мной сообщение в блоге тоже может помочь. В нем я рассказываю о нескольких инструментах Ruby и, в частности, о 4 инструментах для обеспечения качества кода ...

  1. Руди
  2. Пыль
  3. Flog
  4. Сайкуро

Возможно, стоит также попробовать Полотенце и Пыль

http://devver.wordpress.com/2008/10/03/ruby-tools-roundup/

Теперь мы объединили множество инструментов в единственный инструмент контроля качества и показателей Ruby под названием Caliper. Это может хорошо соответствовать вашим потребностям. Он отслеживает различные показатели качества на протяжении всего проекта.

Caliper - улучшите свой Ruby-код

Еще один приятный инструмент, хотя на ранних стадиях, по словам автора, воняет:

http://reek.rubyforge.org/

В настоящее время reek включает очень наивные проверки на наличие следующих запахов кода:

  • Длинный метод
  • Большой класс
  • Особенность Зависть
  • Необщительное имя
  • Длинный список параметров
  • Вспомогательная функция
  • Вложенные итераторы
  • Контрольная пара
  • Дублирование
  • Элемент списка

Лично я считаю, что у него по-прежнему слишком много ложных срабатываний, но простой просмотр вывода в некоторых частях моего кода помог мне переосмыслить некоторые решения о стиле и архитектуре кода.

Также есть отлично. Я еще не пробовал, но тоже выглядит многообещающе.

Проекты, которые я недавно нашел и протестировал:

Код Климат - это инструмент SaaS, который интегрируется через git и автоматически «оценивает» ваш код. Он уведомляет вас по различным каналам о внезапном падении качества. Хороший интерфейс.

Вы можете попробовать РубоКоп. Это средство проверки стиля кода Ruby, основанное на Руководство по стилю Ruby. Он поддерживается довольно активно и основан на стандартных инструментах Ruby (например, библиотека ripper). Он хорошо работает с Ruby 1.9 и 2.0 и имеет отличную интеграцию с Emacs. Надеюсь, вы сочтете это полезным!

Другие вопросы по теме