Вычислить метрики кода [закрыто]


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

19 86

19 ответов:

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

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

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

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

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

вот скриншот, который показывает некоторые показатели по проекту:

alt текст http://sonar.codehaus.org/wp-content/uploads/2009/05/squid-metrics.png

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

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

  • цикломатическая сложность Маккейба
  • Эфферентные Муфты
  • отсутствие согласованности в методах
  • строки кода в методе
  • Количество Поля
  • Количество Уровней
  • Количество Местных Жителей В Области
  • Количество Параметров
  • Количество Утверждений
  • Взвешенные Методы Для Каждого Класса

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

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

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

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

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

NDepend, я использую его и его лучшее для этой цели. Проверить это : http://www.codeproject.com/KB/dotnet/NDepend.aspx

о инструмент вопросом, что происходит Он поставляется с 82 различными метриками кода, от количества строк кода, до ранга метода (популярности), цикломатической сложности, отсутствия когезии методов, процентного покрытия (извлеченного из NCover или VSTS), глубины наследования...

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

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

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

(извините за ссылку сложности обслуживания; это будет кэш Google. Оригинал кажется автономным банкоматом).

Анализатор Кода - это простой инструмент, который генерирует такие показатели.

alt текст http://www.codeanalyzer.teel.ws/docs/post-analysis-shot.png

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

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

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

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

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

Я бы порекомендовал Code Metrics Viewer Exention для visual studio.

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

подробнее здесь о особенности

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

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

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

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

Я действительно не вижу, что даст тенденция Циклометрической сложности Маккейба? Я думаю, что CC следует использовать больше для моментального снимка качества, чтобы обеспечить обратную связь с разработчиками.

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

НТН.

спасибо,

Роб

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

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

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

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