如何在一个管道构建中使用 SonarQube 分析 C# 和 C++ 项目?

问题描述 投票:0回答:0

我有一个项目由 3 个 C++ 子项目和一个 C# 主项目组成,下面是我的 Yaml 文件,使用 SonarQube 在 Azure 管道中分析它。正如您在 YAML 文件中看到的那样,我使用 c++ 配置分析了所有 4 个项目,那么如何使用 c++ 配置分析前 3 个项目并使用 .NET(C#) 配置分析最后一个项目?谢谢。

这是分析日志的警告:

警告:您的项目包含无法使用您使用的扫描仪进行分析的 C# 文件。要分析 C# 或 VB.NET,您必须使用 SonarScanner for .NET 5.x 或更高版本,请参阅 SonarScanner for .NET

resources:
  repositories:
  - repository: Dependency
    type: githubenterprise
    endpoint: https://github.azc.ext.xxx.com
    name: cloud-client/Dependency

trigger: none

pool: 'Windows2022-DEV'

variables:
  buildPlatform: 'x64'
  buildConfiguration: 'Release'

steps:
- checkout: self
- checkout: Dependency

- script: |
     move Dependency/KHPLib $(Build.SourcesDirectory)

- task: NuGetToolInstaller@1


- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      Invoke-WebRequest -Uri 'https://sq.corp.xxxcloud.net/static/cpp/build-wrapper-win-x86.zip' -OutFile 'build-wrapper.zip'
      Expand-Archive -Path 'build-wrapper.zip' -DestinationPath '.'

- task: SonarQubePrepare@5
  inputs:
    SonarQube: 'https://sq.corp.xxxcloud.net'
    scannerMode: 'CLI'
    configMode: 'manual'
    cliProjectKey: 'CS_SW_WinIoT_main_KConnectionWizardWin'
    cliSources: '.'
    extraProperties: |
      sonar.cfamily.build-wrapper-output=bw-output
      sonar.java.file.suffixes=-

- task: CmdLine@2  # C++ sub project
  inputs:
    script: 'build-wrapper-win-x86\build-wrapper-win-x86-64.exe --out-dir bw-output "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\MSBuild.exe" KHPLib\src\KHPLib\KHPLib.vcxproj -t:Rebuild /p:configuration=release /p:platform=x64'

# - task: VSBuild@1
#   inputs:
#     solution: 'KHPLib\src\KHPLib\KHPLib.vcxproj'
#     platform: '$(buildPlatform)'
#     configuration: '$(buildConfiguration)'

- task: CmdLine@2  # C++ sub project
  inputs:
    script: 'build-wrapper-win-x86\build-wrapper-win-x86-64.exe --out-dir bw-output "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\MSBuild.exe" KConnectionWizardWin\src\KConnectionWizardSvc\KConnectionWizardSvc.vcxproj -t:Rebuild /p:configuration=release /p:platform=x64'

# - task: VSBuild@1
#   inputs:
#     solution: 'KConnectionWizardWin\src\KConnectionWizardSvc\KConnectionWizardSvc.vcxproj'
#     platform: '$(buildPlatform)'
#     configuration: '$(buildConfiguration)'

- task: CmdLine@2 # C++ sub project
  inputs:
    script: 'build-wrapper-win-x86\build-wrapper-win-x86-64.exe --out-dir bw-output "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\MSBuild.exe" KConnectionWizardWin\src\KConnectionWizardLauncher\KConnectionWizardLauncher.vcxproj -t:Rebuild /p:configuration=release /p:platform=x64'

# - task: VSBuild@1
#   inputs:
#     solution: 'KConnectionWizardWin\src\KConnectionWizardLauncher\KConnectionWizardLauncher.vcxproj'
#     platform: '$(buildPlatform)'
#     configuration: '$(buildConfiguration)'

- task: CmdLine@2 # C# main project
  inputs:
    script: 'build-wrapper-win-x86\build-wrapper-win-x86-64.exe --out-dir bw-output "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\MSBuild.exe" KConnectionWizardWin\KConnectionWizardWin.sln -t:Rebuild /p:configuration=release /p:platform=x64'

# - task: VSBuild@1 
#   inputs:
#     solution: 'KConnectionWizardWin\KConnectionWizardWin.sln'
#     platform: '$(buildPlatform)'
#     configuration: '$(buildConfiguration)'

- task: SonarQubeAnalyze@5

- task: SonarQubePublish@5
  inputs:
    pollingTimeoutSec: '300'

- task: sonar-buildbreaker@8
  inputs:
    SonarQube: 'https://sq.corp.hpicloud.net'

这就是我分析 .net(C#) 项目的方式:

这就是我分析 C++ 项目的方式:

c# c++ msbuild sonarqube sonarscanner
© www.soinside.com 2019 - 2024. All rights reserved.