SonarCloud에서 C#과 C++ 프로젝트를 동시에 분석하기 위한 GitHub 워크플로

SonarCloud라고 아시는 분들도 있을텐데 정적 코드 분석기인 SonarQube의 서비스형 버전입니다. SonarQube/Cloud 분석은 GitHub Actions CI로 자동화할 수 있습니다.

분석을 수행하려면 SonarScanner라는 물건이 필요한데, C#/VB용 프로젝트는 SonarScanner for .NET(혹은 SonarScanner for MSBuild)이라고 물건이 따로 있습니다. 그리고 C/C++를 분석하려면 Build Wrapper라는 물건이 필요한데, 이 두가지를 같이 사용해서 C++ 프로젝트와 C# 프로젝트를 동시에 분석할 수 있었습니다.

핵심은 dotnet restore를 사용하여 닷넷 프로젝트를 먼저 복원하는 것입니다. 복원을 하지 않으면 (당연히) 빌드가 실패하고, 그렇다고 솔루션 단위로 복원을 해버리면 C++ 프로젝트에서 빌드가 실패합니다. 그래서 닷넷 프로젝트만을 복원하기 위해서 dotnet restore를 사용하는 것입니다.

이 워크플로가 작동하려면 dotnet-sonarscanner를 프로젝트(솔루션) 단위 도구로써 설치해야 합니다. 이는 아래 명령으로 수행할 수 있습니다.

dotnet new tool-manifest
dotnet tool install dotnet-sonarscanner

이 워크플로는 SonarCloud용이지만 약간의 수정으로 SonarQube용으로 사용할 수도 있습니다.

3개의 좋아요