Затемнення лічильників рядків коду


107

Я спробував плагін Metrics, і хоча це приємно і все, це не те, що шукає мій бос. Він вважає лінію лише однією }як лінію, і він не хоче, щоб це вважалося як "це не лінія, це вибір стилю". Мені також потрібно сформувати певну форму звіту про надані показники. Чи є для цього хороші інструменти?


1
Побічне запитання: чи це слід використовувати як показник, щоб показати, наскільки добре працюють ваші розробники програмного забезпечення? Якщо так, кількість символів / непробілів може бути кращим. Навіть все-таки це здається дійсно довільною метрикою ... Як сказав друг: "загалом більше рядків коду для вирішення проблеми не краще (або гірше), ніж менше рядків коду для вирішення тієї ж проблеми"
Sancarn

Відповіді:


93

Встановіть плагін Eclipse Metrics . Створення звіту HTML (з додатковими XML та CSV) right-click a project -> Export -> Other -> Metrics.

Ви можете налаштувати показники рядків коду, ігноруючи порожні рядки та лише для коментарів, або виключаючи Javadoc, якщо хочете. Для цього перевірте вкладку на Preferences -> Metrics -> LoC.

Це воно. Немає спеціального варіанту для виключення фігурних брекетів {}.

Плагін пропонує альтернативну метрику для LoC під назвою Кількість виписок . Ось що про це має сказати автор:

Цей показник представляє кількість операторів у методі. Я вважаю це більш надійним заходом, ніж рядки коду, оскільки останній крихкий щодо різних конвенцій форматування.

Редагувати:

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


Саме те, що я шукав і приємний експорт.
george_h

1
Поточна версія цього плагіна (3.14.1) не працює з Eclipse Luna (4.4). Дивно, але старовинний плагін Metrics від Sourceforge все ще працює ...
ejain

Багато людей повідомляють, що це вже не працює, але ніхто не подає помилку на SourceForge ...
Thomas Weller

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


263

Завжди є "груба сила":

  1. Пошук-> Файл

  2. Введіть наступне у "Містять текст" -> ^.*$. Потім поставте прапорець "Регулярне вираження"

  3. Введіть наступне у "Шаблони імен файлів" -> *.java

  4. Натисніть "Пошук"

  5. Перевірте кількість збігів на вкладці «Пошук».


11
Це робилося саме те, що я шукав. Він не виключає дужок або нічого фантазійного, але він дає відповідь, яку я шукав, У затемненні, БЕЗ плагінів. Дякую!
Лука

24
Ви також можете використовувати, \n[\s]*і він буде ігнорувати порожні рядки
Аскалонія

3
Дуже приємне рішення без необхідності іншого плагіна! +1
Стефан

2
Це працює з останнім (неоновим) затемненням, але плагін для метрики не робить
Анатолій Якимчук

2
@omerio коментарі також повинні бути введені і є необхідною частиною будь-якого вихідного коду. Не рахуючи цих спонукань, вони не були б важливими або були просто сліпим текстом - це серйозна помилка.
Аксель Амтор

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

Це допомогло мені знайти. -ім'я "* .java" | xargs cat | grep '[alnum]' | wc -l
omerio

2
повинно бутиfind . -name "*.java" | xargs cat | grep "[a-zA-Z0-9{}]" | wc -l
воїн107

8

Іншим способом було б використання іншої локальної утиліти, наприклад LocMetrics .
Тут також перелічено багато інших локальних інструментів . Інтеграція з Eclipse не завжди буде (як це було б з Metrics2 , яку ви можете перевірити, оскільки це більш нова версія, ніж 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 (логічні рядки коду) саме так, як ви описали (лише ефективні рядки). він інтегрується в затемнення як інструмент зовнішньої метрики коду , але це не в режимі реального часу, але він генерує report.actally він підраховує багато метрик вихідного коду, таких як складність, арифметична складність, жорсткі кодовані рядки, числові константи. .


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.