Количество строк кода Eclipse


107

Я пробовал плагин Metrics, и хотя он хорош и все такое, это не то, что ищет мой босс. Он считает строку только с одной }строкой, и он не хочет, чтобы это считалось «это не строка, это выбор стиля». Мне также нужно создать отчет о представленных метриках. Есть ли для этого хорошие инструменты?


1
Дополнительный вопрос: следует ли использовать это в качестве метрики, чтобы показать, насколько хорошо работают ваши разработчики программного обеспечения? В таком случае может быть лучше подсчет символов / без пробелов. Даже по-прежнему кажется, что это действительно произвольная метрика ... Как сказал друг: «в общем, больше строк кода для решения проблемы не лучше (или хуже), чем меньше строк кода для решения той же проблемы»
Санкарн

Ответы:


94

Установите плагин Eclipse Metrics . Чтобы создать отчет в формате HTML (с дополнительными XML и CSV) right-click a project -> Export -> Other -> Metrics.

Вы можете настроить метрики Строки кода, игнорируя пустые строки и строки, содержащие только комментарии, или исключив Javadoc, если хотите. Для этого проверьте вкладку на Preferences -> Metrics -> LoC.

Вот и все. Специальной опции для исключения фигурных скобок нет {}.

Плагин предлагает альтернативную метрику LoC под названием Number of Statements . Вот что говорит об этом автор:

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

Редактировать:

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


Именно то, что я искал, и приятная функция экспорта.
george_h

1
Текущая версия этого плагина (3.14.1), похоже, не работает с Eclipse Luna (4.4). Удивительно, но древний плагин Metrics от Sourceforge все еще работает ...
ejain

Многие люди сообщают, что он больше не работает, но никто не сообщает об ошибке на SourceForge ...
Томас Веллер

6
Да. Я не вижу никаких опций внизу right click a project -> Export, я установил плагин прямо с торговой площадки eclipse - версия - Eclipse Metrics 3.12.0, может ли кто-нибудь помочь мне. Спасибо!
OverrockSTAR


263

Всегда есть «грубая сила»:

  1. Поиск-> Файл

  2. Введите следующее в «Содержит текст» -> ^.*$. Затем установите флажок "Регулярное выражение".

  3. Введите следующее в «Шаблоны имен файлов» -> *.java

  4. Нажмите "Искать"

  5. Проверьте количество совпадений во вкладке «Поиск».


11
Это именно то, что я искал. Он не исключает скобок или чего-то необычного, но он дает ответ, который я искал, В eclipse, БЕЗ плагинов. Спасибо!
Люк

24
Вы также можете использовать, \n[\s]*и он также будет игнорировать пустые строки
Ascalonian

3
Очень хорошее решение без дополнительных плагинов! +1
Стефан

2
Это работает с последним (неоновым) затмением, но плагин метрик не работает
Анатолий Якимчук

2
Комментарии @omerio также должны быть набраны и являются необходимой частью любого исходного кода. Если не считать этих побуждений, они не будут иметь значения или представляют собой просто слепой текст, что является серьезной ошибкой.
Axel Amthor

23

Если в OSX или * NIX используйте

Получить все фактические строки java-кода из файлов * .java

find . -name "*.java" -exec grep "[a-zA-Z0-9{}]" {} \; | wc -l

Получить все строки из файлов * .java, включая пустые строки и комментарии

find . -name "*.java" -exec cat | wc -l

Получите информацию для каждого файла, это даст вам [путь к файлу + "," + количество строк]

find . -name "*.java" -exec wc -l {} \;

Выполняя первую команду в OSX, я получаю: grep: недопустимый диапазон символов 0
omerio

Это сработало для меня. -name "* .java" | xargs cat | grep '[alnum]' | wc -l
omerio

2
должно бытьfind . -name "*.java" | xargs cat | grep "[a-zA-Z0-9{}]" | wc -l
warrior107

8

Другой способ - использовать другую утилиту loc, например, LocMetrics .
В нем также перечислены многие другие инструменты loc . Интеграция с Eclipse не всегда будет присутствовать (как это было бы с Metrics2 , которую вы можете проверить, потому что это более новая версия, чем Metrics ), но, по крайней мере, эти инструменты могут рассуждать в терминах логических линий (вычисленных путем суммирования конечные точки с запятой и конечные фигурные скобки).
Вы также можете проверить с помощью eclipse-metrics, что они более адаптированы к вашим ожиданиям.


7

Другой инструмент - Google Analytix , который также позволит вам запускать метрики, даже если вы не можете собрать проект в случае ошибок.


Хотя на сайте говорится, что это только для более старых версий eclipse, для меня он отлично работает на Luna. Спасибо за это.
CamHart

7

Один из возможных способов подсчета строк кода в Eclipse:

используя меню «Поиск / Файл ...», выберите вкладку «Поиск файлов», укажите \ n [\ s] * для параметра «Содержит текст» (пустые строки не учитываются) и установите флажок «Регулярное выражение».

Совет шляпы: www.monblocnotes.com/node/2030


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

1

Я создал плагин Eclipse, который может считать строки исходного кода. Он поддерживает Kotlin, Java, Java Script, JSP, XML, C / C ++, C # и многие другие типы файлов.

Пожалуйста, взгляните на это. Любая обратная связь будет оценена!

репозиторий git-hub здесь


0

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


0

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

Вы должны установить его как веб-приложение, запускающее анализ из репозитория исходного кода, но оно также имеет плагин Eclipse. .

Это излишество, если вы просто хотите узнать, как много строк кода в вашем проекте. Если вы хотите отслеживать показатели во времени, сравнивать проекты, предупреждать о пожаре при превышении порогового значения и т. Д., Это прекрасно.

Раскрытие информации: у меня нет финансовых отношений с SonarSource.


0

Первое, что нужно сделать, это определить ваше определение «строки кода» (LOC). В обоих ваш вопрос

Он считает строку только с одним} как строку, и он не хочет, чтобы это считалось "это не строка, это выбор стиля"

и в ответах, например,

Вы можете настроить метрики «Строки кода», игнорируя пустые строки и строки, содержащие только комментарии, или исключив Javadoc, если хотите.

Вы можете сказать, что люди по-разному относятся к тому, что представляет собой строка кода. В частности, люди часто не могут точно сказать, действительно ли им нужно количество строк кода или количество операторов. Например, если у вас есть следующая очень длинная строка, заполненная операторами, о чем вы хотите сообщить: 1 LOC или сотни утверждений?

{ a = 1; b = 2; if (a==c) b++; /* etc. for another 1000 characters */ }

И когда кто-то спрашивает вас, что вы называете LOC, убедитесь, что вы можете ответить, даже если это просто «мое определение LOC - это определение Metrics2». В общем, для наиболее часто отформатированного кода (в отличие от моего примера) популярные инструменты будут давать довольно похожие числа, поэтому Metrics2, SonarQube и т. Д. Должны подойти, если вы используете их последовательно. Другими словами, не следует подсчитывать LOC некоторого кода с помощью одного инструмента и сравнивать это значение с более поздней версией этого кода, измеренной с помощью другого инструмента.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.