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

87

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

Бьорн Реппен
источник
В зависимости от языка, какой язык вы используете?
Валентин Роше,

Ответы:

67

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

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

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

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

аку
источник
SourceMonitor, похоже, предназначен только для Windows. Существует ли что-то подобное для других операционных систем (Linux, BSD, Mac)?
Mnementh
Mnementh, я разработчик Windows, я не знаю таких инструментов для ребят из FOSS. Может можно попробовать запустить SourceMonitor под эмулятором Wine?
aku
2
Теперь есть инструмент типа NDepend для C ++, CppDepend
Goosey
SourceMonitor предназначен только для некоммерческого использования.
Скотт 混合 理论
2
@Kevin 混合 理论 внимательно прочтите лицензию - вы можете использовать ее в любой среде, которую просто не можете продать. «То есть, вы можете использовать этот исполняемый файл как часть ваших собственных усилий по разработке программного обеспечения (коммерческого или иного), но вы не можете его продавать ...»
Натали Адамс
12

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

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

альтернативный текст http://sonar.codehaus.org/wp-content/uploads/2009/05/squid-metrics.png

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

Ромен Линсолас
источник
Видимо ТАК не позволит мне исправить ссылку - ссылка должна быть: nemo.sonarsource.org
Натали Адамс
8

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

  • Цикломатическая сложность Маккейба
  • Эфферентные муфты
  • Отсутствие согласованности в методах
  • Строки кода в методе
  • Количество полей
  • Количество уровней
  • Количество местных жителей в объеме
  • Количество параметров
  • Количество заявлений
  • Взвешенные методы для каждого класса

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

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

Свен
источник
4

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

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

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

Андреас Петерссон
источник
2
Оцените программиста строками комментариев, и вы получите ... строк комментариев.
EML
3

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

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

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

Патрик из команды NDepend
источник
2

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

(Извините за ссылку «Сложность обслуживания»; она попадает в кеш Google. Похоже, что оригинал - это автономный банкомат).

Moobaa
источник
2

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

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

Джек Леу
источник
2

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

Сверху вниз
источник
2

Code Analyzer - это простой инструмент, который генерирует такие метрики.

альтернативный текст
(источник: teel.ws )

Пракаш
источник
3
Хотя графический интерфейс кажется приятным, генерируемые метрики кажутся совершенно бесполезными - например, «Пробелы в строках в файле»?
kizzx2
1

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

Только чтение
источник
1

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

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

Подробнее об особенностях читайте здесь

Baljeetsingh
источник
0

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

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

До
источник
0

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

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

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

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

HTH.

ура,

Роб

Роб Уэллс
источник
0

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

Андреас BuyKX
источник
0

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

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

Бенджи
источник
0

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

Тибор Бакота - FrontEndART
источник