Вопрос

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

Это было полезно?

Решение

В моем последнем проекте я использовал ИсточникМонитор.Это хороший бесплатный инструмент для анализа метрик кода.
Вот выдержка с официального сайта 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 это просто лучший инструмент, я могу порекомендовать деревня.

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

Другие советы

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

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

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

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

NDepend для .net

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

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

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

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

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

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

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

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

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

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

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

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

(Извините за ссылку на сложность обслуживания;он попадает в кеш Google.Оригинал кажется офлайн-банкомат).

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

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

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

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

alt text
(источник: teel.ws)

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

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

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

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

Читать далее здесь о функции

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

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

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

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

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

Редактировать:Ох.Просто подумал о паре других измерений, которые могут быть полезны.Комментарии в процентах от SLOC и тестового покрытия.Ни о чем из этого вы не хотите умолчать.Возвращение для модернизации любого из них никогда не будет таким же божественным, как делать это «в самый разгар!»

ХТХ.

ваше здоровье,

Роб

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top