Как нам рассчитать совокупный балл для каждого объекта из списка объектов, а затем нормализовать его, учитывая различныеJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как нам рассчитать совокупный балл для каждого объекта из списка объектов, а затем нормализовать его, учитывая различные

Сообщение Anonymous »

В нашей компании более 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»