AzureDevops-.Net 项目分析与 sonarQube 错误

Posted

技术标签:

【中文标题】AzureDevops-.Net 项目分析与 sonarQube 错误【英文标题】:AzureDevops- .Net project analysis with sonarQube error 【发布时间】:2020-12-26 13:45:58 【问题描述】:

我已经在我的 AKS(Azure Kubernetes 集群)上设置了我的 Sonar 服务器,并使用了 Sonar docker 镜像版本(镜像:sonarqube:7.1)。

我在 Azure Devops for .net 应用程序中有我的 CI/CD 管道,我正在使用 AzureDevops SonarScanner (声纳)。

当我运行我的管道时,我收到了这个错误:

Description : Run scanner and upload the results to the SonarQube server.
Version : 4.11.0
Author : sonarsource
Help : Version: 4.11.0. This task is not needed for Maven and Gradle projects since the scanner should be run as part of the build.
/usr/bin/dotnet /home/vsts/work/_tasks/SonarQubePrepare_15b84ca1-b62f-4a2a-a403-89b77a063157/4.11.0/dotnet-sonar-scanner-msbuild/SonarScanner.MSBuild.dll end
SonarScanner for MSBuild 4.10
Using the .NET Core version of the Scanner for MSBuild
Post-processing started.
##[error]The SonarQube MSBuild integration failed: SonarQube was unable to collect the required information about your projects.
Possible causes:

The project has not been built - the project must be built in between the begin and end steps
An unsupported version of MSBuild has been used to build the project. Currently MSBuild 14.0.25420.1 and higher are supported.
The begin, build and end steps have not all been launched from the same folder
None of the analyzed projects have a valid ProjectGuid and you have not used a solution (.sln)
The SonarQube MSBuild integration failed: SonarQube was unable to collect the required information about your projects.

我的管道如下所示:

- task: SonarQubePrepare@4
  inputs:
    SonarQube: 'SonarQube-Dev'
    scannerMode: 'MSBuild'
    projectKey: 'Test'
    projectName: 'Test'
    extraProperties: |
      # Additional properties that will be passed to the scanner, 
      # Put one key=value per line, example:
      # sonar.exclusions=**/*.bin
      sonar.projectBaseDir=/src
      sonar.sources=src  

  
- task: MSBuild@1
  inputs:
    solution: '/*.sln'
    restoreNugetPackages: true
    clean: true   
    
- task: SonarQubeAnalyze@4

【问题讨论】:

【参考方案1】:

查看错误,您正在使用 SonarQube 分析旧版 .NET Framework 应用程序,但您的 SonarQube 需要 v14.0.25420.1 或更高版本的 MSBuild。

此 MSBuild 版本是 Visual Studio 2015 更新 15.6.1 或更高版本随附的版本。因此,您的解决方案和应用程序必须至少使用 Visual Studio 2015 更新 15.6.1,或者推荐的方法是使用 Visual Studio 2019 更新 16.7.1 或更高版本。

我之所以建议使用 Visual Studio 2019,是因为微软可能很快会在 Azure DevOps 中终止对 Visual Studio 2015 的支持,目前 Visual Studio 2015 不再支持。 Visual Studio 2017 仍受支持,但其支持将于明年结束。

因此,请升级您的应用以使用 .NET Framework v4.7.2 或更高版本的目标,并使用最新更新的 Visual Studio 2017(当前为 15.9.26)或使用 Visual Studio 2019 进行开发。

【讨论】:

【参考方案2】:

我在两者之间尝试了很多东西,看起来当我使用 .NetCLIBuild 插入 MSBuild 步骤时,我的声纳分析开始工作了。

现在我的管道看起来像这样。

- task: DotNetCoreCLI@2
      inputs:
        command: 'restore'
        projects: '**/*.csproj'
        workingDirectory: '/src'
    - task: SonarQubePrepare@4
      inputs:
        SonarQube: 'SonarQube-Dev'
        scannerMode: 'MSBuild'
        projectKey: 'Wiired.Card.PauseManagement'
        projectName: 'Wiired.Card.PauseManagement'
           
    - task: DotNetCoreCLI@2
      inputs:
        command: 'build'
        projects: '**/*.sln'    
    - task: SonarQubeAnalyze@4 

问题是我的 CI/CD 管道是为了构建 docker 映像并在 AKS 集群上部署而创建的。当我添加声纳分析时,我的代码实际上没有得到构建,因为构建部分发生在我的 docker 构建步骤中。我尝试在 SonarAnalysis 步骤之前添加 MSBuild,但这不起作用,然后我尝试使用 DotNetCoreCLI@2 构建,我的管道按预期工作。

【讨论】:

请Accept it as an Answer,这对阅读此主题的其他社区成员会有所帮助。

以上是关于AzureDevops-.Net 项目分析与 sonarQube 错误的主要内容,如果未能解决你的问题,请参考以下文章

nProtect APPGuard安卓反外挂分析

so的装载与链接

Android 源码分析实战 - 动态加载修复 so 库

毕业设计So Easy:基于Java Web学生选课系统

毕业设计So Easy:基于Java Web学生选课系统

关于动态链接库的分析