Ответ 1
Недавно я начал искать что-то подобное для Ruby. То, к чему я столкнулся:
Это могут быть места для начала. К сожалению, я еще не использовал ни одного из трех достаточно, чтобы предложить хорошее мнение.
Одна вещь, которую я очень скучаю по Java, - это поддержка инструмента. FindBugs, Checkstyle и PMD, сделанные для святой троицы показателей качества кода и автоматической проверки ошибок.
Есть ли что-нибудь, что будет проверять на наличие простых ошибок и/или нарушений стиля Ruby-кода? Бонусные очки, если я смогу адаптировать их для таких фреймворков, как Rails, чтобы поддерживать идиомы Rails.
Недавно я начал искать что-то подобное для Ruby. То, к чему я столкнулся:
Это могут быть места для начала. К сожалению, я еще не использовал ни одного из трех достаточно, чтобы предложить хорошее мнение.
Saikuro и Flog могут быть полезны для получения базовой идеи сложности кода. Вы также можете использовать такой инструмент, как rcov, чтобы посмотреть ваше тестовое покрытие.
Существует плагин для проектов Rails, который объединяет все эти показатели в одну задачу rake. Он называется metric_fu.
Проекты, которые я недавно нашел и протестировал:
Возможно, вы захотите попробовать RuboCop. Это проверка стиля кода Ruby, основанная на Ruby Style Guide. Он поддерживается довольно активно и основан на стандартном инструменте Ruby (например, в библиотеке ripper
). Он хорошо работает с Ruby 1.9 и 2.0 и имеет отличную интеграцию Emacs. Надеюсь, вы сочтете это полезным!
Dust похоже, что он может помочь вам найти неиспользуемый и бесполезный код, который, похоже, похож на то, что вы после того, как.
Я не знаю других подобных инструментов.
Эта проблема намного сложнее адресовать в рубине, чем в java - вы заметите, что все эти java-инструменты используют себя как "статический анализ" кода.
Статический анализ рубинового кода часто невозможен, потому что нет ничего статического, что вы можете проанализировать (методы часто создаются во время выполнения и т.д.)
Во всяком случае, некоторые из этих вещей не нужны в рубине, потому что язык их строит.
Например, вам не нужен стандарт кодирования для обеспечения того, чтобы ваши классы были NamedLikeThis
, потому что код не будет работать, если это не так.
P.S. Я должен добавить стандартное выражение об отказе от ответственности, что такие инструменты часто могут быть красной серой. Вы можете потратить весь день на то, чтобы ваш код придерживался того, что, по мнению этого инструмента, должен быть, и заканчивается большим количеством ошибок, чем вы начали.
ИМХО лучшее решение - написать свой код свободно, чтобы вы могли читать его более легко. Никакой статический анализ не будет таким же хорошим, как код чтения человека, в котором четко указано, что он должен делать. Возможность сделать это - это то, где рубин на многие годы превосходит многие другие языки. Я лично рекомендовал бы вам приложить все усилия, чтобы научиться писать более свободно, и обучать свою команду таким вещам, чем тратить время на статический анализ.
Еще один приятный инструмент, хотя на ранних этапах, по мнению автора, есть пах:
reek в настоящее время включает очень наивные проверки на наличие следующих кодовых запахов:
Лично я думаю, что у него все еще слишком много ложных срабатываний, но просто просмотр результатов в каком-то из моих кодов помог мне переосмыслить некоторые решения о стиле и архитектуре кода.
Code Climate - это инструмент SaaS, который интегрируется через git и автоматически "оценивает" ваш код. Он уведомляет вас по различным каналам, если есть резкое падение качества. Хороший интерфейс также.
Я не видел этих вопросов, когда меня спрашивали, но сообщение в блоге, которое я сделал, могло бы помочь. В нем я нахожу кучу инструментов Ruby и специально накрываю 4 инструмента качества кода...
Также может быть стоит проверить Towelie и Flay
http://devver.wordpress.com/2008/10/03/ruby-tools-roundup/
Теперь мы объединили множество инструментов в единственный инструмент контроля качества и метрики кода Ruby, называемый Caliper. Это может хорошо соответствовать вашим потребностям. Он отслеживает различные показатели качества в течение всего жизненного цикла проекта.
Существует также excellent. Я еще не пробовал, но это тоже выглядит многообещающе.