Обчислити показники коду [закрито]


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 混合 carefully уважно прочитайте ліцензію - ви можете використовувати її в будь-якому середовищі, де просто не можете її продати. "Тобто, ви можете використовувати цей виконуваний файл як частину власних зусиль з розробки програмного забезпечення (комерційних чи інших), але ви не можете продавати його ..."
Наталі Адамс,

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 також може знаходити проблеми та оцінювати технічну заборгованість, що є цікавою метрикою коду (кількість спроб розробника для виправлення проблем проти кількості розробників, зіпсованих на рік для виправлення проблем ).

Усі ці показники детально описані тут .


2

Якщо ви перебуваєте в просторі .NET, розробник Express ' CodeRush забезпечує LOC, цикломатичну складність та (досить чудовий, IMHO) аналіз складності обслуговування коду в режимі реального часу.

(Вибачте за посиланням "Складність обслуговування"; воно надходить у кеш-пам'ять Google. Оригінал, схоже, не в банкоматі).


2

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

Ви також можете отримати надбудову для неї під назвою Crucible, яка полегшує перевірку рівних кодів.


2

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


2

Code Analyzer - це простий інструмент, який генерує такий тип метрик.

текст заміщення
(джерело: teel.ws )


3
Незважаючи на те, що графічний інтерфейс здається приємним, генеровані показники здаються абсолютно марними - наприклад, "Пробіли в рядку на файл"?
kizzx2




0

Щодо PHP, я вважаю, що, наприклад, phpUnderControl включає метрики через phpUnit (якщо я не помиляюся).

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


0

Якщо ви хочете провести певний аналіз тенденцій, чи насправді це означає щось вимірювати поза SLOC?

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

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

Редагувати: Ох. Просто подумав про пару інших вимірювань, які можуть бути корисними. Коментарі як відсоток SLOC та охоплення тестом. Жодного з них ви не хочете пропустити. Повернення до модернізації будь-якого з них ніколи не є таким богом, як це робити "в запалі!"

HTH.

ура,

Роб


0

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


0

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

дивіться цю статтю, яка описує її поетапно: http://www.projectcodemeter.com/cost_estimation/help/FN_monsizing.htm


0

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.