/// <summary> /// The internal Assembler converting the <see cref="SearchIssuesResponse"/> to an enriched list of Sonar Issues. /// </summary> /// <param name="searchIssuesResponse">The list of Issues from the Sonar API.</param> /// <param name="groupADSet">The active directory information needed to get some informations.</param> /// <param name="mapper">The AutoMapper interface to create the Issues Detail <see cref="IssueDetail"/>.</param> /// <param name="sonarConnector">The link to the Sonar Services.</param> /// <returns>An enriched and filtered list of Sonar Issues.</returns> internal static List <Issue> CreateIssueSet(this SearchIssuesResponse searchIssuesResponse, GroupADSet groupADSet, IMapper mapper, ISonarConnector sonarConnector, ITfsConnector tfsConnector) { List <Issue> issueSet = new List <Issue>(); if (searchIssuesResponse?.issues == null) { return(issueSet); } issueSet.Capacity = searchIssuesResponse.issues.Count; foreach (var responseIssue in searchIssuesResponse.issues) { if (responseIssue != null) { Issue issue = new Issue() { IssueDetail = mapper.Map <IssueDetail>(responseIssue) }; issue = issue.AddChangeSet(sonarConnector); if (issue.ChangeSetDate != null && issue.ChangeSetDate?.AddDays(5) > issue.IssueDetail.creationDate) { issue = issue.AddCodeProject(tfsConnector); issue = issue.AddActiveDirectoryGroup(groupADSet); issue = issue.AddCodeLineCount(tfsConnector); issueSet.Add(issue); } } } issueSet.TrimExcess(); return(issueSet); }
private SearchIssuesResponse SetDefaultLineValueIfNoLineNumber(SearchIssuesResponse searchIssuesResponse) { if (searchIssuesResponse?.issues == null) { return(searchIssuesResponse); } var issuesWithNoLineNumber = searchIssuesResponse.issues.Where(_ => _.line == 0); foreach (var currentIssue in issuesWithNoLineNumber) { currentIssue.line = default(int); } return(searchIssuesResponse); }
public async Task <SearchIssuesResponse> GetIssuesAsync(SonarRequestGetIssues sonarSettingRequest) { if (sonarSettingRequest == null || _sonarSettings == null) { return(null); } if (sonarSettingRequest.NbIssuesPerRequest == default(int)) { sonarSettingRequest.NbIssuesPerRequest = _sonarSettings.NbIssuesPerRequestDefault; } SearchIssuesResponse searchIssuesResponse = new SearchIssuesResponse(); searchIssuesResponse.issues = new List <Issues>(); bool needToRetrieveNextIssues = true; int pageNumber = 1; while (needToRetrieveNextIssues) { List <KeyValuePair <string, string> > args = new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("ps", sonarSettingRequest.NbIssuesPerRequest.ToString()), new KeyValuePair <string, string>("assigned", "true"), new KeyValuePair <string, string>("p", pageNumber.ToString()), new KeyValuePair <string, string>("createdAfter", sonarSettingRequest.DateFrom.ToString("yyyy-MM-dd")),// "2017-10-01")); new KeyValuePair <string, string>("createdBefore", sonarSettingRequest.DateTo.ToString("yyyy-MM-dd")), new KeyValuePair <string, string>("statuses", "OPEN,REOPENED"), new KeyValuePair <string, string>("severities", "CRITICAL, MAJOR"), new KeyValuePair <string, string>("languages", "cs") }; if (sonarSettingRequest.Users != null) { args.Add(new KeyValuePair <string, string>("assignees", string.Join(",", sonarSettingRequest.Users))); } SearchIssuesResponse result = await _httpApiClient.PostAsync <SearchIssuesResponse>(args, _sonarSettings.Uri_GetIssues, _sonarSettings.Token); if (result?.issues == null) { break; } searchIssuesResponse.issues.AddRange(result.issues); needToRetrieveNextIssues = sonarSettingRequest.NbIssuesPerRequest == result.issues.Count; pageNumber++; } return(searchIssuesResponse); }
/// <summary> /// Get Sonar issues corresponding to the <see cref="SonarRequestGetIssues"/> parameters. /// </summary> /// <param name="sonarSettingRequest">The parameters used to get the issues.</param> /// <returns>A list of Sonar issues with ActiveDirectory, ChangeSet and CodeProject informations.</returns> public IssuesSonarSet GetIssuesSonar(SonarRequestGetIssues sonarSettingRequest) { if (sonarSettingRequest == null) { return(null); } _loggingService.LogInfo(this, "Parameters : DateFrom " + sonarSettingRequest.DateFrom.ToString() + ", DateTo " + sonarSettingRequest.DateFrom.ToString()); GroupADSet groupADSet = _activeDirectoryService.GetUsersByGroupAd(sonarSettingRequest.GroupAdSet); sonarSettingRequest.Users = groupADSet?.GetListOfUser(); SearchIssuesResponse searchIssuesResponse = _sonarConnector.GetIssuesAsync(sonarSettingRequest).Result; List <Issue> issueSet = searchIssuesResponse.CreateIssueSet(groupADSet, _mapper, _sonarConnector, _tfsConnector); _loggingService.LogInfo(this, issueSet.Count().ToString() + " resultats. Parameters : DateFrom " + sonarSettingRequest.DateFrom.ToString() + ", DateTo " + sonarSettingRequest.DateTo.ToString()); return(new IssuesSonarSet() { IssueSet = issueSet }); }