Количество строк кода 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.