簡體   English   中英

用於StyleCop的SonarQube插件生成器不能再與SonarC#v6一起使用

[英]SonarQube plugin generator for StyleCop not working with SonarC# v6 onwards

我目前在讓StyleCop.Analyzers與SonarQube合作時遇到問題。 我正在使用SonarQube v6.7,並且已經嘗試了多個版本的SonarC#插件進行此操作。

將自定義規則導入SonarQube的推薦方法似乎是使用SonarQube Roslyn SDK工具( https://github.com/SonarSource/sonarqube-roslyn-sdk )從Roslyn分析器生成插件,在這種情況下, StyleCop.Analyers NuGet包。

對於軟件包的v1.0.0和v1.1.0-beta來說,這似乎都可以正常工作,並且在SonarQube中都顯示了規則-但是,使用最新版本的SonarC#,將無法正確掃描該項目,並且編號的C#代碼行和發現的問題為0。但是,如果您降級到插件的v5.11,則將對項目進行正確掃描,它將找到〜2k代碼行,並且盡我所能正確顯示所有StyleCop警告告訴。

在VSTS構建中,看起來好像插件正在運行,因為StyleCop警告的確出現在MSBuild階段(我的理解是SonarQube規則會覆蓋構建中的任何代碼分析規則),但它們根本沒有顯示SonarQube項目頁面上的摘要。

SQ Roslyn SDK項目表示它與v4.5或更高版本的C#插件兼容-但看起來它並未得到積極維護。

我在SonarQube日志中看不到任何錯誤,但是在VSTS中的“完成SonarQube分析”任務中有一些警告:

2018-01-03T15:07:50.0734421Z WARNING: WARN: Protobuf file not found: null\output-cs\encoding.pb
2018-01-03T15:07:50.0734783Z WARNING: WARN: Protobuf file not found: null\output-cs\metrics.pb
2018-01-03T15:07:50.0735152Z WARNING: WARN: Protobuf file not found: null\output-cs\issues.pb
2018-01-03T15:07:50.0735516Z WARNING: WARN: Protobuf file not found: null\output-cs\token-type.pb
2018-01-03T15:07:50.0735888Z WARNING: WARN: Protobuf file not found: null\output-cs\symrefs.pb
2018-01-03T15:07:50.0736289Z WARNING: WARN: Protobuf file not found: null\output-cs\token-cpd.pb

不太確定這是C#插件還是SDK工具是否有問題-其他人是否有任何類似的問題? 除了使用較舊版本的C#插件以外,還有其他解決方法嗎?

SonarQube Roslyn SDK工具仍然是將第三方Roslyn分析儀連接到SonarQube的推薦方法。 由於SonarC#插件處理生成的插件的方式沒有改變,因此最近沒有必要更改SDK。

我剛剛嘗試為StyleCop生成一個新插件,配置了質量配置文件,將其分配給項目等,分析工作按預期進行,並將StyleCop問題上載到SonarQube。 我正在使用以下版本(盡管我在本地運行分析,而不是使用VSTS): SonarQube 6.7; MSBuild v4.0.0.821的掃描儀; C#插件v6.7; StyleCop 1.0

我想我可以解釋為什么在使用SonarC#插件的v5.11而不是更高版本時出現問題。 v5.11是最后一個能夠運行Roslyn分析器本身的版本(SonarC#插件具有自己的exe,可以打開C#文件,對它們運行Roslyn分析器,然后上載問題)。 即使使用MSBuild v12,此功能也可以使用Roslyn分析器,該版本不支持在構建過程中運行Roslyn分析器。 SonarC#插件的版本6.0( https://github.com/SonarSource/sonar-csharp/releases/tag/6.0.0.2033 )中不再支持該功能。

我的猜測是問題不在於SDK或StyleCop插件。 您是否看到SonarC#分析器本身產生的任何問題或任何代碼指標? 如果不是這樣,則可能是構建更普遍的問題,而不是SDK / StyleCop特有的問題。

其他一些建議:*您是否使用VSTS的SonarQube擴展的最新版本?

  • 如果您直接使用Scanner for MSBuild從該行運行分析,它是否可以正常工作?

  • 嘗試通過在開始任務的“高級/附加設置”部分中設置/d:sonar.verbose=true來提高SonarQube任務的日志級別。

  • 您描述的輸出與“結束”步驟無法找到在構建期間創建的問題文件和protobuf文件一致。 如果您使用的是非托管構建代理,則可以嘗試查看由End任務生成的sonar-project.properties文件(該文件位於構建的.sonarqube \\ out文件夾中)。 檢查文件是否包含對* .RoslynCA.json文件的引用,以及這些文件是否存在並包含預期的Roslyn問題。 該文件還應包含* .sonar.cs.analyzer.projectOutPath條目,這些條目指向光盤上的文件夾。 protobuf文件應位於名為“ output-cs”的子文件夾中。

  • 最后,您可以按照https://groups.google.com/forum/#!topic/sonarqube/11YITqrltIk中的說明檢查MSBuild輸出中的警告。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM