Чи доступні будь-які інструменти, які обчислюють метрики коду (наприклад, кількість рядків коду, цикломатичну складність, зв'язок, згуртованість) для вашого проекту та з часом складають графік, що відображає тенденції?
Чи доступні будь-які інструменти, які обчислюють метрики коду (наприклад, кількість рядків коду, цикломатичну складність, зв'язок, згуртованість) для вашого проекту та з часом складають графік, що відображає тенденції?
Відповіді:
У своєму останньому проекті я використовував 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 .
Наступні інструменти можуть виконувати аналіз тенденцій:
Sonar - це остаточно інструмент, який ви повинні врахувати, особливо для проектів 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 metrics , він може обробляти:
І, використовуючи його, я також не пропустив варіант графіки, який ви шукаєте.
Я думаю, що якщо ви не знайдете жодного плагіна / інструменту, який би впорався з графіком з часом, ви повинні переглянути інструмент, який вам найбільше підходить, і запропонувати всю необхідну інформацію; навіть якщо надана інформація призначена лише для поточної збірки вашого проекту.
Як додаткове зауваження, плагін eclipse metrics дозволяє експортувати дані у зовнішній файл (посилання йде до прикладу), тому, якщо ви використовуєте інструмент керування джерелом, і ви повинні !, Ви завжди можете експортувати дані для певного будуйте та зберігайте файл разом із вихідним кодом, таким чином, у вас все ще є (основний) спосіб повернутися у минуле та перевірити відмінності.
майте на увазі, що ви вимірюєте, це те, що отримуєте. loc нічого не говорить про продуктивність чи ефективність.
Оцініть програміста за рядками коду, і ви отримаєте .. рядки коду. той самий аргумент стосується інших показників.
otoh .. http://www.crap4j.org/ - дуже консервативна та корисна метрика. це задає складність стосовно покриття.
NDepend, я використовую його і найкраще для цього. Перевірте це: http://www.codeproject.com/KB/dotnet/NDepend.aspx
Що стосується інструменту NDepend, він постачає 82 різні метрики коду, від кількості рядків коду, до рангу методу (популярності), цикломатичної складності, відсутності згуртованості методів, відсоткового покриття (витягнуте з NCover або VSTS), глибини спадкування .. .
Завдяки своїй системі правил, NDepend також може знаходити проблеми та оцінювати технічну заборгованість, що є цікавою метрикою коду (кількість спроб розробника для виправлення проблем проти кількості розробників, зіпсованих на рік для виправлення проблем ).
Усі ці показники детально описані тут .
Якщо ви перебуваєте в просторі .NET, розробник Express ' CodeRush забезпечує LOC, цикломатичну складність та (досить чудовий, IMHO) аналіз складності обслуговування коду в режимі реального часу.
(Вибачте за посиланням "Складність обслуговування"; воно надходить у кеш-пам'ять Google. Оригінал, схоже, не в банкоматі).
Atlassian FishEye - ще один чудовий інструмент для роботи. Він інтегрується з вашою системою керування джерелом (наразі підтримує CVS, SVN та Perforce), і таким чином аналізує всі ваші файли. Хоча аналіз є досить простим, а сам продукт є комерційним (але дуже розумною ціною, IMO).
Ви також можете отримати надбудову для неї під назвою Crucible, яка полегшує перевірку рівних кодів.
Для Visual Studio .NET (принаймні C # та VB.NET) я вважаю, що безкоштовні StudioTools надзвичайно корисні для показників. Він також додає ряд функцій, котрі містяться в комерційних інструментах, таких як ReSharper .
Code Analyzer - це простий інструмент, який генерує такий тип метрик.
(джерело: teel.ws )
Для Python pylint може надати деякі показники якості коду.
Існує також плагін метрики коду для рефлектора , якщо ви використовуєте .NET.
Я б порекомендував Code Metrics Viewer Exention для візуальної студії.
Проаналізувати рішення одразу дуже просто, також зробіть порівняння, якщо ви досягли успіху ;-)
Щодо PHP, я вважаю, що, наприклад, phpUnderControl включає метрики через phpUnit (якщо я не помиляюся).
Майте на увазі, що метрики часто мають недоліки. Наприклад, кодер, який працює над тривіальними проблемами, створить більше коду, і там він буде виглядати краще на ваших графіках, ніж кодер, який розбиває складні проблеми.
Якщо ви хочете провести певний аналіз тенденцій, чи насправді це означає щось вимірювати поза SLOC?
Навіть якщо ви просто робите grep для відстеження крапок з комою та підраховуєте кількість повернутих рядків, вам слід послідовність у техніці вимірювання SLOC. Таким чином сьогоднішнє вимірювання можна суттєво порівняти з вимірами минулого місяця.
Я не можу зрозуміти, що може дати тенденція циклометричної складності Мак-Кейба? Я думаю, що CC слід використовувати більше для створення знімка якості, щоб надати відгук розробникам.
Редагувати: Ох. Просто подумав про пару інших вимірювань, які можуть бути корисними. Коментарі як відсоток SLOC та охоплення тестом. Жодного з них ви не хочете пропустити. Повернення до модернізації будь-якого з них ніколи не є таким богом, як це робити "в запалі!"
HTH.
ура,
Роб
Розуміння Scitools дійсно має можливість генерувати багато метрик коду для вас. Я не маю багато досвіду з функціями метрики коду, але функції статичного аналізу загалом були приємними, а ціна дуже прийнятною. Підтримка була чудовою.
Вимірювач коду проекту надає диференційований звіт про історію розвитку (у форматі Excel), який показує ваші показники прогресу кодування в SLOC, час та відсоток продуктивності (оцінка часу базується на цикломатичній складності та інших показниках). Тоді в Excel ви можете легко створити потрібний графік.
дивіться цю статтю, яка описує її поетапно: http://www.projectcodemeter.com/cost_estimation/help/FN_monsizing.htm
Для Java ви можете спробувати наш інструмент, QualityGate, який обчислює понад 60 показників вихідного коду, відстежує всі зміни в часі, а також забезпечує загальну оцінку ремонтопридатності вихідного коду.