diff --git a/src/SLCore.UnitTests/Service/Analysis/ShouldUseEnterpriseCSharpAnalyzerParamsTests.cs b/src/SLCore.UnitTests/Service/Analysis/ShouldUseEnterpriseCSharpAnalyzerParamsTests.cs new file mode 100644 index 0000000000..0c3a0cd8b1 --- /dev/null +++ b/src/SLCore.UnitTests/Service/Analysis/ShouldUseEnterpriseCSharpAnalyzerParamsTests.cs @@ -0,0 +1,43 @@ +/* + * SonarLint for Visual Studio + * Copyright (C) 2016-2024 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +using Newtonsoft.Json; +using SonarLint.VisualStudio.SLCore.Service.Analysis.Models; + +namespace SonarLint.VisualStudio.SLCore.UnitTests.Service.Analysis; + +[TestClass] +public class ShouldUseEnterpriseCSharpAnalyzerParamsTests +{ + [TestMethod] + public void Serialize_AsExpected() + { + var testSubject = new ShouldUseEnterpriseCSharpAnalyzerParams("CONFIGURATION_ID"); + const string expectedString = """ + { + "configurationScopeId": "CONFIGURATION_ID" + } + """; + + var serializedString = JsonConvert.SerializeObject(testSubject, Formatting.Indented); + + serializedString.Should().Be(expectedString); + } +} diff --git a/src/SLCore.UnitTests/Service/Analysis/ShouldUseEnterpriseCSharpAnalyzerResponseTests.cs b/src/SLCore.UnitTests/Service/Analysis/ShouldUseEnterpriseCSharpAnalyzerResponseTests.cs new file mode 100644 index 0000000000..700bd68969 --- /dev/null +++ b/src/SLCore.UnitTests/Service/Analysis/ShouldUseEnterpriseCSharpAnalyzerResponseTests.cs @@ -0,0 +1,56 @@ +/* + * SonarLint for Visual Studio + * Copyright (C) 2016-2024 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + + +using Newtonsoft.Json; +using SonarLint.VisualStudio.SLCore.Service.Analysis.Models; +using SonarLint.VisualStudio.SLCore.Service.Telemetry; + +namespace SonarLint.VisualStudio.SLCore.UnitTests.Service.Analysis; + +[TestClass] +public class ShouldUseEnterpriseCSharpAnalyzerResponseTests +{ + [TestMethod] + public void Serialize_AsExpected() + { + var testSubject = new ShouldUseEnterpriseCSharpAnalyzerResponse(true); + const string expectedString = """ + { + "shouldUseEnterpriseAnalyzer": true + } + """; + + var serializedString = JsonConvert.SerializeObject(testSubject, Formatting.Indented); + + serializedString.Should().Be(expectedString); + } + + [TestMethod] + [DataRow(true)] + [DataRow(false)] + public void Deserialized_AsExpected(bool shouldUseEnterpriseAnalyzer) + { + var expected = new ShouldUseEnterpriseCSharpAnalyzerResponse(shouldUseEnterpriseAnalyzer); + var serialized = $"{{\"shouldUseEnterpriseAnalyzer\":{shouldUseEnterpriseAnalyzer.ToString().ToLower()}}}"; + + JsonConvert.DeserializeObject<ShouldUseEnterpriseCSharpAnalyzerResponse>(serialized).Should().BeEquivalentTo(expected); + } +} diff --git a/src/SLCore/Service/Analysis/IRoslynAnalyzerService.cs b/src/SLCore/Service/Analysis/IRoslynAnalyzerService.cs new file mode 100644 index 0000000000..3e81754b49 --- /dev/null +++ b/src/SLCore/Service/Analysis/IRoslynAnalyzerService.cs @@ -0,0 +1,31 @@ +/* + * SonarLint for Visual Studio + * Copyright (C) 2016-2024 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +using SonarLint.VisualStudio.SLCore.Core; +using SonarLint.VisualStudio.SLCore.Protocol; +using SonarLint.VisualStudio.SLCore.Service.Analysis.Models; + +namespace SonarLint.VisualStudio.SLCore.Service.Analysis; + +[JsonRpcClass("analysis")] +public interface IRoslynAnalyzerService : ISLCoreService +{ + Task<ShouldUseEnterpriseCSharpAnalyzerResponse> ShouldUseEnterpriseCSharpAnalyzerAsync(ShouldUseEnterpriseCSharpAnalyzerParams shouldUseEnterpriseCsharpParams); +} diff --git a/src/SLCore/Service/Analysis/Models/ShouldUseEnterpriseCSharpAnalyzerParams.cs b/src/SLCore/Service/Analysis/Models/ShouldUseEnterpriseCSharpAnalyzerParams.cs new file mode 100644 index 0000000000..46269b5a0d --- /dev/null +++ b/src/SLCore/Service/Analysis/Models/ShouldUseEnterpriseCSharpAnalyzerParams.cs @@ -0,0 +1,23 @@ +/* + * SonarLint for Visual Studio + * Copyright (C) 2016-2024 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +namespace SonarLint.VisualStudio.SLCore.Service.Analysis.Models; + +public record ShouldUseEnterpriseCSharpAnalyzerParams(string configurationScopeId); diff --git a/src/SLCore/Service/Analysis/Models/ShouldUseEnterpriseCSharpAnalyzerResponse.cs b/src/SLCore/Service/Analysis/Models/ShouldUseEnterpriseCSharpAnalyzerResponse.cs new file mode 100644 index 0000000000..f53be717bc --- /dev/null +++ b/src/SLCore/Service/Analysis/Models/ShouldUseEnterpriseCSharpAnalyzerResponse.cs @@ -0,0 +1,23 @@ +/* + * SonarLint for Visual Studio + * Copyright (C) 2016-2024 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +namespace SonarLint.VisualStudio.SLCore.Service.Analysis.Models; + +public record ShouldUseEnterpriseCSharpAnalyzerResponse(bool shouldUseEnterpriseAnalyzer);