public async System.Threading.Tasks.Task <ActionResult> Issues() { SessionInfo sessionInfo = (SessionInfo)HttpContext.Session["SessionInfo"]; if (!sessionInfo.Connected) { return(RedirectToAction("ConnectToProject", "Project")); } else { //Preparing model and metrics object GitHubMetrics ghMetrics = new GitHubMetrics(sessionInfo.ProjectDetails.GitHubProjectName, sessionInfo.ProjectDetails.GitHubProjectOwner, sessionInfo.ProjectDetails.GitHubToken); IssuesModel model = new IssuesModel(); model.AverageIssueClosingTime = await ghMetrics.CalculateAverageIssueClosingTimeAsync(); model.ClosedIssues = await ghMetrics.CountClosedIssuesAsync(); model.OpenedIssues = await ghMetrics.CountOpenedIssuesAsync(); model.EstimatedTimeToCloseAllIssues = await ghMetrics.CalculateEstimatedTimeToCloseAllIssuesAsync(); model.ExpectedDateForClosingAllIssues = DateTime.Now + model.EstimatedTimeToCloseAllIssues; model.ClosedIssuesForMonth = await ghMetrics.CountClosedIssuesForLastSixMonthsAsync(); model.UserWithLargestIssuesClosed = null; return(View(model)); } }
public async System.Threading.Tasks.Task <ActionResult> GetBestContributorAsync() { BestUserPartialModel buPmodel = new BestUserPartialModel(); SessionInfo sessionInfo = (SessionInfo)HttpContext.Session["SessionInfo"]; GitHubMetrics ghMetrics = new GitHubMetrics(sessionInfo.ProjectDetails.GitHubProjectName, sessionInfo.ProjectDetails.GitHubProjectOwner, sessionInfo.ProjectDetails.GitHubToken); buPmodel.UserWithLargestIssuesClosed = await ghMetrics.FindUserWithLargestNumberOfClosedIssuesAsync(); return(PartialView("_BestUser", buPmodel)); }
public async System.Threading.Tasks.Task <ActionResult> CodeAnalysis() { SessionInfo sessionInfo = (SessionInfo)HttpContext.Session["SessionInfo"]; if (!sessionInfo.Connected) { return(RedirectToAction("ConnectToProject", "Project")); } else { GitHubMetrics ghMetrics = new GitHubMetrics(sessionInfo.ProjectDetails.GitHubProjectName, sessionInfo.ProjectDetails.GitHubProjectOwner, sessionInfo.ProjectDetails.GitHubToken); SonarQubeMetrics sqMetrics = new SonarQubeMetrics(sessionInfo.ProjectDetails.SonarProjectName, sessionInfo.ProjectDetails.SonarServerUrl, sessionInfo.ProjectDetails.SonarQubeToken); CodeAnalysisViewModel baVmodel = new CodeAnalysisViewModel(); baVmodel.AverageIssueEffort = sqMetrics.CalculateAverageTimeForResolvingIssue(); baVmodel.EstTimeToFixAllIssues = TimeSpan.FromSeconds(sqMetrics.CalculateTimeForClosingAllIssues().TotalSeconds / await ghMetrics.GetNumberOfActiveContributorsAsync()); baVmodel.EstTimeToFixImportantIssues = TimeSpan.FromSeconds(sqMetrics.CalculateTimeForClosingAllImportantIssues().TotalSeconds / await ghMetrics.GetNumberOfActiveContributorsAsync()); baVmodel.IssuesCountWithSeverity = sqMetrics.GetIssuesCountWithSeverity(); baVmodel.ExpectedDateForClosingAllIssues = DateTime.Now + baVmodel.EstTimeToFixAllIssues; baVmodel.CodeQuality = sqMetrics.CalculateCodeQuality(); return(View(baVmodel)); } }
public async System.Threading.Tasks.Task <ActionResult> ProjectQuality() { SessionInfo sessionInfo = (SessionInfo)HttpContext.Session["SessionInfo"]; if (!sessionInfo.Connected) { return(RedirectToAction("ConnectToProject", "Project")); } else { //calculate metrics GitHubMetrics ghMetrics = new GitHubMetrics(sessionInfo.ProjectDetails.GitHubProjectName, sessionInfo.ProjectDetails.GitHubProjectOwner, sessionInfo.ProjectDetails.GitHubToken); SonarQubeMetrics sqMetrics = new SonarQubeMetrics(sessionInfo.ProjectDetails.SonarProjectName, sessionInfo.ProjectDetails.SonarServerUrl, sessionInfo.ProjectDetails.SonarQubeToken); MixedMetrics mMetrics = new MixedMetrics(ghMetrics, sqMetrics); ProjectQualityViewModel pqModel = new ProjectQualityViewModel(); pqModel.ProjectQuality = await mMetrics.CalculateQualityFactors(); pqModel.EstimatedTimeToBetaRelease = await mMetrics.CalculateTimeToBetaRelease(); pqModel.EstimatedTimeToFullRelease = await mMetrics.CalculateTimeToFullRelease(); return(View(pqModel)); } }