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)); } }