You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

normalization.go 3.1 kB

3 years ago
3 years ago
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package normalization
  2. import (
  3. "code.gitea.io/gitea/modules/setting"
  4. )
  5. const MAX_LINES_RECORD = 100
  6. func Normalization(value float64, minValue float64, maxValue float64) float64 {
  7. min := int64(minValue * 100)
  8. max := int64(maxValue * 100)
  9. if min == max {
  10. return 100.0
  11. } else {
  12. return 100 * (value - minValue) / (maxValue - minValue)
  13. }
  14. }
  15. func GetRadarValue(impactValue float64, completeValue float64, livenessValue float64, projectHealthValue float64, teamHealthValue float64, growthValue float64) float64 {
  16. return setting.RadarMap.Impact*impactValue +
  17. setting.RadarMap.Completeness*completeValue +
  18. setting.RadarMap.Liveness*livenessValue +
  19. setting.RadarMap.ProjectHealth*projectHealthValue +
  20. setting.RadarMap.TeamHealth*teamHealthValue +
  21. setting.RadarMap.Growth*growthValue
  22. }
  23. func GetImpactInitValue(watch int64, star int64, fork int64, download int64, comments int64, browser int64) float64 {
  24. return setting.RadarMap.ImpactWatch*float64(watch) +
  25. setting.RadarMap.ImpactStar*float64(star) +
  26. setting.RadarMap.ImpactFork*float64(fork) +
  27. setting.RadarMap.ImpactCodeDownload*float64(download)*0.001 +
  28. setting.RadarMap.ImpactComments*float64(comments) +
  29. setting.RadarMap.ImpactBrowser*float64(browser)*0.001
  30. }
  31. func GetCompleteInitValue(issuesClosed int64, releases int64, developAge int64, dataset int64, model int64, wiki int64) float64 {
  32. return setting.RadarMap.CompletenessIssuesClosed*float64(issuesClosed) +
  33. setting.RadarMap.CompletenessReleases*float64(releases) +
  34. setting.RadarMap.CompletenessDevelopAge*float64(developAge) +
  35. setting.RadarMap.CompletenessDataset*(float64(dataset)/(1024*1024)) +
  36. setting.RadarMap.CompletenessModel*float64(model) +
  37. setting.RadarMap.CompletenessWiki*float64(wiki)
  38. }
  39. func GetLivenessInitValue(commits int64, issues int64, pr int64, release int64) float64 {
  40. return setting.RadarMap.LivenessCommit*float64(commits) +
  41. setting.RadarMap.LivenessIssue*float64(issues) +
  42. setting.RadarMap.LivenessPR*float64(pr) +
  43. setting.RadarMap.LivenessRelease*float64(release)
  44. }
  45. func GetProjectHealthInitValue(issueClosedRatio float32) float64 {
  46. return setting.RadarMap.ProjectHealthIssueCompleteRatio * float64(issueClosedRatio)
  47. }
  48. func GetTeamHealthInitValue(contributors int64, keyContributors int64, newContributors int64) float64 {
  49. return setting.RadarMap.TeamHealthContributors*float64(contributors) +
  50. setting.RadarMap.TeamHealthKeyContributors*float64(keyContributors) +
  51. setting.RadarMap.TeamHealthContributorsAdded*float64(newContributors)
  52. }
  53. func GetRepoGrowthInitValue(codeLinesGrowth int64, issueGrowth int64, commitsGrowth int64, newContributors int64, commentsGrowth int64) float64 {
  54. codeLinesKB := codeLinesGrowth / 1000
  55. if codeLinesKB > MAX_LINES_RECORD {
  56. codeLinesKB = MAX_LINES_RECORD
  57. }
  58. return setting.RadarMap.GrowthCodeLines*float64(codeLinesKB) +
  59. setting.RadarMap.GrowthIssue*float64(issueGrowth) +
  60. setting.RadarMap.GrowthCommit*float64(commitsGrowth) +
  61. setting.RadarMap.GrowthContributors*float64(newContributors) +
  62. setting.RadarMap.GrowthComments*float64(commentsGrowth)
  63. }