В нашей компании более 300 репозиториев Java, и я хотел бы присвоить каждому из них оценку, чтобы указать уровень качества чистого кода в проекте. Каждый проект будет подвергаться статическому анализу с использованием SonarQube — инструмента для постоянной проверки кода на качество. SonarQube определит проблемы в категориях безопасности, надежности и ремонтопригодности с различными уровнями серьезности (высокий, средний, низкий). Основываясь на количестве проблем и принимая во внимание количество строк кода как фактор нормализации, я стремлюсь подсчитать оценку для всех проектов. Это позволит разработчикам стремиться улучшить оценку, по сути геймифицируя весь процесс.
Я имею в виду следующий подход:
- Назначьте вес как серьезности, так и категории.
- Умножьте количество проблем каждой серьезности на вес.
- Рассчитать общую сумму и умножьте ее на вес категории.
- Поделите ее на количество строк кода.
Например, рассмотрим два проекта Project1 и Project2,
Код: Выделить всё
Project1 - 40000 Lines of Code
Security ( H - 4, M - 1, L - 0),
Reliability ( H - 5, M - 3, L - 2),
Maintainability - ( H - 300, M - 400, L - 800)
Project2 - 5000 Lines of Code
Security ( H - 2, M - 0, L - 0),
Reliability ( H - 2, M - 2, L - 1),
Maintainability - ( H - 100, M - 200, L - 500)
Weightage
High - 5, Medium - 3, Low - 1
Security - 40, Reliability - 20, Maintainability - 40
Project1 Score - Total Issues (1515)
Security ( 4 * 5 + 1 * 3 + 0) + Reliability ( 5 * 5 + 3 * 3 + 2 * 1) + Maintainability ( 300 * 5 + 400 * 3 + 800 * 1)
40(23) + 20(36) + 40(3500)
141640/40000 = 3.541
Project2 Score - Total Issues (807)
40(2*5+0+0)+20(2*5+2*3+1)+40(100*5+200*3+500*1)
64740/5000 = 12.948
Оценка Project1 ниже, чем у Project2, поскольку количество строк в 8 раз больше, чем у Project2, но количество проблем составляет лишь половину. Я считаю, что такая нормализация очень хороша и придает строкам кода подходящее значение, поскольку большее количество строк кода увеличивает вероятность возникновения проблем. Кроме того, исправление даже одной проблемы должно отражаться на оценке, чтобы разработчики получали положительные отзывы и могли исправить больше проблем. Давайте рассмотрим человека, который хочет улучшить результаты в проекте 2 и исправить 10 низких проблем в ремонтопригодности. Тогда счет будет...,
Код: Выделить всё
40(2*5+0+0)+20(2*5+2*3+1)+40(100*5+200*3+490*1) / 5000 = 12.868
Есть ли более эффективный метод расчета этих показателей, и не упускаю ли я какие-либо важные факторы?
Подробнее здесь:
https://stackoverflow.com/questions/790 ... f-entities