Open pavel-mikula-sonarsource opened 3 years ago
When we download from the server, we don't know what we're going to analyze. And we let the compiler do the pick.
Is there a functional problem with this?
The project language is not important at this stage, this XML file is generated in the begin
step anyway. It should download both (actually all three), as it currently does. And it should assign VB DLLs to VB language and C# DLLs to C# language - as it currently does for C# SE FE.
Functionally, it works. I assume the performance overhead to be minimal. It's confusing for maintenance, investigation and debugging.
<AnalyzersSettings>
<AnalyzerSettings>
<Language>cs</Language>
<RulesetPath>c:\DemoProject\.sonarqube\conf\Sonar-cs.ruleset</RulesetPath>
<DeactivatedRulesetPath>c:\DemoProject\.sonarqube\conf\Sonar-cs-none.ruleset</DeactivatedRulesetPath>
<AnalyzerPlugins>
<AnalyzerPlugin Key="csharp" Version="8.30.0.37606" StaticResourceName="SonarAnalyzer-8.30.0.37606.zip">
<AssemblyPaths>
<Path>C:\Users\Current.User\AppData\Local\Temp\.sonarqube\resources\18\Google.Protobuf.dll</Path>
<Path>C:\Users\Current.User\AppData\Local\Temp\.sonarqube\resources\18\Newtonsoft.Json.dll</Path>
<Path>C:\Users\Current.User\AppData\Local\Temp\.sonarqube\resources\18\SonarAnalyzer.CFG.dll</Path>
<Path>C:\Users\Current.User\AppData\Local\Temp\.sonarqube\resources\18\SonarAnalyzer.CSharp.dll</Path>
<Path>C:\Users\Current.User\AppData\Local\Temp\.sonarqube\resources\18\SonarAnalyzer.dll</Path>
<Path>C:\Users\Current.User\AppData\Local\Temp\.sonarqube\resources\18\THIRD-PARTY-NOTICES.txt</Path>
</AssemblyPaths>
</AnalyzerPlugin>
<AnalyzerPlugin Key="securitycsharpfrontend" Version="9.2.0-M1.13789" StaticResourceName="SonarAnalyzer.Security-9.2.0-M1.13789.zip">
<AssemblyPaths>
<Path>C:\Users\Current.User\AppData\Local\Temp\.sonarqube\resources\20\Google.Protobuf.License.txt</Path>
<Path>C:\Users\Current.User\AppData\Local\Temp\.sonarqube\resources\20\Microsoft.AspNetCore.Razor.Language.dll</Path>
<Path>C:\Users\Current.User\AppData\Local\Temp\.sonarqube\resources\20\SonarAnalyzer.Security.dll</Path>
<Path>C:\Users\Current.User\AppData\Local\Temp\.sonarqube\resources\20\System.Buffers.dll</Path>
<Path>C:\Users\Current.User\AppData\Local\Temp\.sonarqube\resources\20\System.Memory.dll</Path>
<Path>C:\Users\Current.User\AppData\Local\Temp\.sonarqube\resources\20\System.Numerics.Vectors.dll</Path>
<Path>C:\Users\Current.User\AppData\Local\Temp\.sonarqube\resources\20\System.Runtime.CompilerServices.Unsafe.dll</Path>
</AssemblyPaths>
</AnalyzerPlugin>
</AnalyzerPlugins>
<AdditionalFilePaths>
<Path>c:\DemoProject\.sonarqube\conf\cs\SonarLint.xml</Path>
</AdditionalFilePaths>
</AnalyzerSettings>
<AnalyzerSettings>
<Language>vbnet</Language>
<RulesetPath>c:\DemoProject\.sonarqube\conf\Sonar-vbnet.ruleset</RulesetPath>
<DeactivatedRulesetPath>c:\DemoProject\.sonarqube\conf\Sonar-vbnet-none.ruleset</DeactivatedRulesetPath>
<AnalyzerPlugins>
<AnalyzerPlugin Key="vbnet" Version="8.30.0.37606" StaticResourceName="SonarAnalyzer-8.30.0.37606.zip">
<AssemblyPaths>
<Path>C:\Users\Current.User\AppData\Local\Temp\.sonarqube\resources\19\Google.Protobuf.dll</Path>
<Path>C:\Users\Current.User\AppData\Local\Temp\.sonarqube\resources\19\SonarAnalyzer.dll</Path>
<Path>C:\Users\Current.User\AppData\Local\Temp\.sonarqube\resources\19\SonarAnalyzer.VisualBasic.dll</Path>
<Path>C:\Users\Current.User\AppData\Local\Temp\.sonarqube\resources\19\THIRD-PARTY-NOTICES.txt</Path>
</AssemblyPaths>
</AnalyzerPlugin>
</AnalyzerPlugins>
<AdditionalFilePaths>
<Path>c:\DemoProject\.sonarqube\conf\vbnet\SonarLint.xml</Path>
</AdditionalFilePaths>
</AnalyzerSettings>
</AnalyzersSettings>
This should be something line 1 line change (+ undefined lines of test code 😄 )
The internal configuration file
.sonarqube\conf\SonarQubeAnalysisConfig.xml
contains list of analyzer DLLs to provide to the compiler.It currently looks like the example below.
<AnalyzerSettings>
for<Language>cs</Language>
embedscsharp
,vbnet
andsecuritycsharpfrontend
<AnalyzerSettings>
for<Language>vb</Language>
embedscsharp
andvbnet
This doesn't make sense.
<Language>cs</Language>
should getcsharp
andsecuritycsharpfrontend
<Language>vb</Language>
should getvbnet
only