2015-03-13 3 views
3

Я ищу действительно потрясающее качество моего кода, чтобы начать новый проект. Я думаю, что я склонен ко многим ошибкам в области проверки кода, соблюдения конвенций Ruby/rails и безопасности.Gems, чтобы помочь в мониторинге качества кода

Я столкнулся с драгоценными камнями, такими как Rubocop и удивительным Refactor Cop, которые возвращают информацию о нарушениях конвенций и других предупреждениях.

Я также использовал guard gem для мониторинга изменений в моем коде против моих тестов.

Я также видел codeclimate, но еще не могу передать ему ресурсы.

Какие драгоценные камни рекомендуются для составления дайджеста какого кода (меня меньше интересуют рельсы/драгоценные камни/библиотеки) еще не находится под разумным покрытием для испытаний? Также немного шире - есть ли другие хорошо зарекомендовавшие себя драгоценности/проекты, которые могут помочь повысить качество моего кода.

Или, возможно, даже более широко - какие хорошие вопросы следует задавать себе при просмотре, если ваш код имеет достаточное качество/безопасность (может помочь мне настроить поиск инструментов в будущем)!

+0

Кроме того, для записи я использую git! – Huw

+1

Посмотрите на [rubycritic] (https://github.com/whitesmith/rubycritic) для отчета о качестве кода. –

ответ

7

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

sandi_meter - это тот, который я не использовал так много, но сильно поощряет меньшие методы.

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

Полный список:

gem 'traceroute' # Checks for undefined routes and unreachable actions. 
    gem 'bullet' # Checks for query optimizations. 
    gem 'rails_best_practices' # Checks for code optimization. 
    gem 'rubycritic' # Checks for code optimization. 
    gem 'sandi_meter' # Checks for compliance to Sandi Metz's rules for developers. 
    gem 'simplecov' #Enables coverage analysis of code. 
+1

Все отличные драгоценные камни очень благодарны. – Huw

+1

Я могу подтвердить, что теперь я начал использовать все это, что в совокупности дает мне фантастические отчеты, предлагая, где я могу улучшить качество моего кода. Большое спасибо – Huw

+0

Добро пожаловать! С удовольствием помогли :) –

3

Есть несколько вопросов здесь, я сделаю все возможное, чтобы решить каждый один.

Какие драгоценные камни рекомендуются для изготовления дайджеста какого кода (меня меньше интересуют рельсы/драгоценные камни/библиотеки) еще не находится под разумным покрытием для испытаний?

Если вы хотите просто измерить зону покрытия simplecov - ваш лучший вариант.

Также немного шире - есть ли другие хорошо зарекомендовавшие себя драгоценные камни/проекты, которые могли бы повысить качество моего кода.

This answer имеет отличный список других драгоценных камней, которые могут помочь автоматизировать проверку качества кода. Я бы добавил Thoughtbot's HoundCI project в качестве другого инструмента - он добавляет комментарии к вашему коду, как только вы подталкиваете его к GitHub ... sorta, как обзор кода робота. Это бесплатно для проектов с открытым исходным кодом.

Или, возможно, даже более широко - какие вопросы следует задавать себе при просмотре, если ваш код имеет достаточное качество/безопасность (может помочь мне настроить поиск инструментов в будущем)!

Мы вступаем в субъективную территорию здесь, но я хотел бы призвать вас прагматично относиться к стремлению к климату A или клиенту на 100%. Например, если вы работаете в NASA, возможно, 100% -ное покрытие тестирования имеет смысл ... но в вашем веб-приложении стремление к 100% -ному охвату тестирования может привести к написанию большого количества тестов для кода, который у вас нет (например, Самоцвет или рельсы). Я бы посоветовал вам взглянуть на Jay Fields 'Working Effectively with Unit Tests для более тонкого (и приправленного) мнения здесь.

В конечном счете, вы должны стремиться писать код легко поддерживать и изменять. Книги и беседы Боба Мартина - отличный ресурс, который можно найти на сайте his site.

+0

Thoughtbot снова! Я только что установил бурбон и аккуратно :) они быстро превратились в мой весь стек! Огромное спасибо за этот всеобъемлющий ответ - и за терпение с моим заключительным предприятием на субъективную территорию. – Huw

3

Недавно я наткнулся на awesome ruby list, который имеет все виды больших камней, но частичном хороший раздел по анализу кода и метрик, они предлагают:

анализ кода и метриками

gem 'Barkeep' # Barkeep is a fast, fun way to review code. Engineering organizations can use it to keep the bar high. 
gem 'Brakeman' # A static analysis security vulnerability scanner for Ruby on Rails applications. 
gem 'Cane' # Code quality threshold checking as part of your build. 
gem 'Coverband' # Rack middleware to help measure production code coverage. 
gem 'Flay' # Flay analyzes code for structural similarities. Differences in literal values, variable, class, method names, whitespace, programming style, braces vs do/end, etc are all ignored. Making this totally rad. 
gem 'Flog' # Flog reports the most tortured code in an easy to read pain report. The higher the score, the more pain the code is in. 
gem 'fukuzatsu' # Complexity analysis tool with a rich web fron't# nd. 
gem 'MetricFu' # A fist full of code metrics. 
gem 'Pronto' # Quick automated code review of your changes. 
gem 'rails_best_practices' # A code metric tool for rails projects. 
gem 'Reek' # Code smell detector for Ruby. 
gem 'Rubocop' # A static code analyzer, based on the community Ruby style guide. 
gem 'Rubycritic' # A Ruby code quality reporter. 
gem 'SimpleCov' # Code coverage for Ruby 1.9+ with a powerful configuration library and automatic merging of coverage across test suites. 
1

И если вы чувствуете «adventurous», попробуйте обменивать общую информацию о покрытии кода (например, simplecov) с mutation testing библиотеками, такими как Mutant.

Википедия: Мутационное тестирование (или мутационный анализ или мутация программы) используется для разработки новых программных тестов и оценки качества существующих тестов программного обеспечения. Мутационное тестирование включает в себя небольшую модификацию программы.

  • Here is a pretty good breakdown что делает Mutant Gem и как он проверяет качество ваших спецификаций.

  • Here - разговор Sferik от RaislConf2014, о том, почему Mutant намного эффективнее, чем SimpleCov.

Я говорю «авантюрный», потому что я нашел, что это почти невозможно получить покрытие на 100% (т.е. «убить» все мутации).

+1

Это звучит супер интересно! Спасибо за предложение! – Huw

Смежные вопросы