Вычислить показатели кода

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

Ответ 1

В моем последнем проекте я использовал SourceMonitor. Это хороший бесплатный инструмент для анализа метрик кода.
Вот выдержка из официального сайта SourceMonitor:

  • Собирает метрики в быстром, одиночном передавать исходные файлы.
  • Метрики измерений для исходного кода написанные на языках С++, C, С#, VB.NET, Java, Delphi, Visual Basic (VB6) или HTML.
  • Включает уровень метода и функции метрики для С++, C, С#, VB.NET, Java и Delphi.
  • Сохраняет метрики в контрольных точках для сравнение во время программного обеспечения проектов развития.
  • Отображает и печатает показатели в таблиц и диаграмм.
  • Работает в стандартной Windows GUI или внутри ваших скриптов с использованием XML командных файлов.
  • Экспорт показателей в XML или CSV (значения, разделенные запятыми) для дальнейшая обработка другими инструментами.

Для .NET около NDepend, который является просто лучшим инструментом, я могу порекомендовать Виль.

Следующие инструменты могут выполнять анализ тенденций:

Ответ 2

Sonar - это, безусловно, инструмент, который вы должны учитывать, особенно для проектов Java. Однако он также будет обрабатывать коды PHP или C/С++, Flex и Cobol.

Вот скриншот, показывающий некоторые показатели для проекта:

alt text http://sonar.codehaus.org/wp-content/uploads/2009/05/squid-metrics.png

Обратите внимание, что вы можете попробовать инструмент, используя демонстрационный сайт http://nemo.sonarsource.org

Ответ 4

Я также искал инструмент метрики кода/плагин для моей IDE, но насколько я знаю, нет (для eclipse), которые также показывают график сложности за определенный период времени. Тем не менее, я нашел плагин метрик eclipse, он может обрабатывать:

  • McCabe Cyclomatic Complexity
  • Эфферентные муфты
  • Отсутствие сцепления в методах.
  • Линии кода в методе
  • Число полей
  • Количество уровней
  • Число мест в области видимости
  • Число параметров
  • Число заявлений
  • Взвешенные методы для каждого класса

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

В качестве дополнительной заметки плагин метрик eclipse позволяет экспортировать данные во внешний файл (ссылка идет на пример), поэтому если вы используете средство управления исходным кодом, и вы должны!, вы всегда можете экспортировать данные для конкретной сборки и хранить файл вместе с исходным кодом, тем самым у вас есть (основной) способ вернуться во времени и проверить различия.

Ответ 5

Имейте в виду, что вы измеряете то, что получаете. loc ничего не говорит о производительности или эффективности.

Оцените программиста по строкам кода, и вы получите строки кода. тот же аргумент относится и к другим метрикам.

otoh.. http://www.crap4j.org/ - очень консервативная и полезная метрика. он устанавливает сложность по отношению к охвату.

Ответ 7

Что касается инструмента NDepend, он поставляется с 82 различными метриками кода, от Number of Lines of Code, до Method Rank (популярность), Cyclomatic Complexity, Отсутствие сцепления методов, процентное покрытие (извлечено из NCover или VSTS), глубина наследования...

С помощью своей системы правил NDepend также может найти проблемы и оценки технический долг, который представляет собой интересную метрику кода (объем dev-effort to исправлять проблемы по сравнению с количеством времени, испорченного в год, чтобы проблемы не были устранены).

Все эти показатели подробно описаны здесь.

Ответ 8

Если вы находитесь в пространстве .NET, Developer Express 'CodeRush обеспечивает LOC, Cyclomatic Complexity и (довольно отличный, IMHO) Сложность обслуживания анализ кода в режиме реального времени.

(Извините за ссылку "Сложность обслуживания", она попадет в кэш Google. Оригинал кажется автономным банкоматом).

Ответ 10

Atlassian FishEye - еще один отличный инструмент для работы. Он интегрируется с вашей исходной системой управления (в настоящее время поддерживает CVS, SVN и Perforce) и анализирует все ваши файлы таким образом. Анализ довольно простой, но сам продукт является коммерческим (но очень разумным по цене, IMO).

Вы также можете получить надстройку для нее под названием Crucible, которая упрощает просмотр отзывов со стороны.

Ответ 11

Для Visual Studio.NET(по крайней мере, для С# и VB.NET) я считаю, что бесплатный StudioTools чрезвычайно полезен для показателей, Он также добавляет ряд функций, доступных в коммерческих инструментах, таких как ReSharper.

Ответ 12

Для Python pylint может предоставить некоторые показатели качества кода.

Ответ 14

Я бы порекомендовал Expression Expression для визуальной студии.

Очень просто проанализировать решение сразу, также сделать сравнение, если вы достигли прогресса;-)

Подробнее здесь о features

Ответ 15

На фронте PHP я верю, например, phpUnderControl включает метрики через phpUnit (если я не ошибаюсь).

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

Ответ 16

Если вы после некоторого анализа тенденций, действительно ли это означает что-либо, чтобы измерить за пределами SLOC?

Даже если вы просто выполняете grep для конечных полуколоний и подсчитываете количество возвращенных строк, то, что вам нужно, является согласованностью в методе измерения SLOC. Таким образом, сегодня измерение можно сравнить с измерением в прошлом месяце значимым образом.

Я не могу понять, что даст тренд McCabe Cyclometric Complexity? Я думаю, что CC следует использовать больше для моментального снимка качества, чтобы обеспечить обратную связь с разработчиками.

Изменить: Ох. Просто подумал о нескольких других измерениях, которые могут быть полезны. Комментарии в процентах от SLOC и охвата тестирования. Ни один из которых вы не хотите пропустить. Возвращаясь к модернизации, ни один из них никогда не бывает таким же богом, как и их "в разгар момента!"

НТН.

веселит,

Rob

Ответ 17

У Scitools 'Understanding есть возможность генерировать множество кодовых показателей для вас. У меня нет большого опыта работы с функциями метрики кода, но функции статического анализа в целом были хороши, и цена была очень разумной. Поддержка была превосходной.

Ответ 18

Метр кода проекта дает отчет о разностной истории развития (в формате Excel), который показывает ваши показатели прогресса кодирования в SLOC, процент времени и производительности ( оценка времени основана на циклической сложности и других показателях). Затем в Excel вы можете легко создать нужный граф.

см. эту статью, которая описывает ее шаг за шагом: http://www.projectcodemeter.com/cost_estimation/help/FN_monsizing.htm

Ответ 19

Для Java вы можете попробовать наш инструмент QualityGate, который вычисляет более 60 показателей исходного кода, отслеживает все изменения во времени, а также обеспечивает общий рейтинг для ремонтопригодности исходного кода.