public async Task <RoslynExportProfileResponse> GetRoslynExportProfileAsync(string qualityProfileName, SonarQubeLanguage language, CancellationToken token) { EnsureIsConnected(); var request = new RoslynExportProfileRequest { QualityProfileName = qualityProfileName, LanguageKey = language.Key }; var roslynExportResult = await this.sonarqubeClient.GetRoslynExportProfileAsync(request, token); roslynExportResult.EnsureSuccess(); return(roslynExportResult.Value); }
public Language(string id, string name, string fileSuffix, SonarQubeLanguage serverLanguage) { if (string.IsNullOrWhiteSpace(id)) { throw new ArgumentNullException(nameof(id)); } if (string.IsNullOrWhiteSpace(name)) { throw new ArgumentNullException(nameof(name)); } if (string.IsNullOrWhiteSpace(fileSuffix)) { throw new ArgumentNullException(nameof(fileSuffix)); } this.Id = id; this.Name = name; this.FileSuffixAndExtension = fileSuffix; this.ServerLanguage = serverLanguage ?? throw new ArgumentNullException(nameof(serverLanguage)); }
public async Task <SonarQubeQualityProfile> GetQualityProfileAsync(string projectKey, string organizationKey, SonarQubeLanguage language, CancellationToken token) { EnsureIsConnected(); var qualityProfileRequest = new QualityProfileRequest { ProjectKey = projectKey, OrganizationKey = organizationKey }; var qualityProfilesResult = await this.sonarqubeClient.GetQualityProfilesAsync(qualityProfileRequest, token); // Special handling for the case when a project was not analyzed yet, in which case a 404 is returned if (qualityProfilesResult.StatusCode == HttpStatusCode.NotFound) { qualityProfileRequest = new QualityProfileRequest { ProjectKey = null, OrganizationKey = organizationKey }; qualityProfilesResult = await this.sonarqubeClient.GetQualityProfilesAsync(qualityProfileRequest, token); } qualityProfilesResult.EnsureSuccess(); var profilesWithGivenLanguage = qualityProfilesResult.Value.Where(x => x.Language == language.Key).ToList(); var qualityProfile = profilesWithGivenLanguage.Count > 1 ? profilesWithGivenLanguage.Single(x => x.IsDefault) : profilesWithGivenLanguage.Single(); var qualityProfileChangeLogRequest = new QualityProfileChangeLogRequest { PageSize = 1, QualityProfileKey = qualityProfile.Key }; var changeLog = await this.sonarqubeClient.GetQualityProfileChangeLogAsync(qualityProfileChangeLogRequest, token); changeLog.EnsureSuccess(); return(SonarQubeQualityProfile.FromResponse(qualityProfile, changeLog.Value.Events.Single().Date)); }
public void Language_Ctor_ArgChecks() { // Arrange var key = "k"; var name = "MyName"; var fileSuffix = "suffix"; var serverLanguage = new SonarQubeLanguage("serverKey", "serverName"); // Act + Assert // Nulls Action act = () => new Language(name, null, fileSuffix, serverLanguage); act.Should().ThrowExactly <ArgumentNullException>().And.ParamName.Should().Be("name"); act = () => new Language(null, key, fileSuffix, serverLanguage); act.Should().ThrowExactly <ArgumentNullException>().And.ParamName.Should().Be("id"); act = () => new Language(name, key, null, serverLanguage); act.Should().ThrowExactly <ArgumentNullException>().And.ParamName.Should().Be("fileSuffix"); act = () => new Language(name, key, fileSuffix, null); act.Should().ThrowExactly <ArgumentNullException>().And.ParamName.Should().Be("serverLanguage"); }
public async Task <RoslynExportProfileResponse> GetRoslynExportProfileAsync(string qualityProfileName, string organizationKey, SonarQubeLanguage language, CancellationToken token) => await InvokeRequestAsync <IGetRoslynExportProfileRequest, RoslynExportProfileResponse>( request => { request.QualityProfileName = qualityProfileName; request.LanguageKey = language.Key; request.OrganizationKey = organizationKey; }, token);
public async Task <SonarQubeQualityProfile> GetQualityProfileAsync(string projectKey, string organizationKey, SonarQubeLanguage language, CancellationToken token) { var qualityProfiles = await InvokeRequestAsync <IGetQualityProfilesRequest, SonarQubeQualityProfile[]>( request => { request.ProjectKey = projectKey; request.OrganizationKey = organizationKey; }, token); // Consider adding the language filter to the request configuration above and removing this line var profilesWithGivenLanguage = qualityProfiles.Where(x => x.Language == language.Key).ToList(); if (profilesWithGivenLanguage.Count == 0) { throw new InvalidOperationException($"The {language.PluginName} plugin is not installed on the connected SonarQube."); } var qualityProfile = profilesWithGivenLanguage.Count > 1 ? profilesWithGivenLanguage.Single(x => x.IsDefault) : profilesWithGivenLanguage.Single(); var changeLog = await InvokeRequestAsync <IGetQualityProfileChangeLogRequest, DateTime[]>( request => { request.Page = 1; request.PageSize = 1; request.QualityProfileKey = qualityProfile.Key; request.QualityProfileName = qualityProfile.Name; request.LanguageName = language.Key; request.OrganizationKey = organizationKey; }, token); var updatedDate = changeLog.Any() ? changeLog.Single() : qualityProfile.TimeStamp; return(new SonarQubeQualityProfile(qualityProfile.Key, qualityProfile.Name, qualityProfile.Language, qualityProfile.IsDefault, updatedDate)); }
public async Task <RoslynExportProfileResponse> GetRoslynExportProfileAsync(string qualityProfileName, string organizationKey, SonarQubeLanguage language, CancellationToken token) { EnsureIsConnected(); var request = this.serverVersion >= new Version(6, 6) ? new RoslynExportProfileRequestV66Plus { QualityProfileName = qualityProfileName, OrganizationKey = organizationKey, LanguageKey = language.Key } : new RoslynExportProfileRequest { QualityProfileName = qualityProfileName, OrganizationKey = organizationKey, LanguageKey = language.Key }; var roslynExportResult = await this.sonarqubeClient.GetRoslynExportProfileAsync(request, token); roslynExportResult.EnsureSuccess(); return(roslynExportResult.Value); }