2017-01-17 10 views
3

私たちはVS2015 EnterpriseでSonarLintを試しており、解決しなければショーストッパーになるかもしれない刺激的な問題があります。コアi5プロセッサー、8GBメモリー、大型SSD、Windows 7 Pro:SonarLintの抑制された警告がVS Errors画面で継続的に再現するのを防ぐ方法

同じ警告コード(例:S1444)の大量の警告があります。私は既存のコードで暮らすことができますが、将来の作業のためにそれらをキャッチしたいので、私は既存の警告を抑制したいが、コード内に厄介なプラグマを入れない。だから、エラーリスト画面でそれらを複数選択し、rt-クリックしてからをクリックしてください。 GlobalSuppressionsファイルが適切なプロジェクトに作成され、更新されました。

ただし、警告は引き続き表示されます。私は解決策をきれいにして再構築し、抑制された警告は引き続き表示されますが、まだ「アクティブ」の抑制状態(「抑制されていない」ということを推測しています)が表示されます。

これは、古い警告を排除して新しい警告が明確に公開されるようにすることはほぼ不可能であることを意味します。これは、練習の要点です。

これはバグですか、何か不足していますか?

また、rt-clickコンテキストメニューにSuppress->とそれ以外のときがあることがあります。それはどのように機能するのですか?

+0

あなたは[接続モード](http://www.sonarlint.org/visualstudio/index.html#Connected)に気付いていますか?接続モードでは、品質プロファイルからルールを削除できます。そうすれば、チーム内で標準を同期させることができます。 – janos

+0

実際にSonarQubeサーバーアプローチを使用する必要はありません。私たちのニーズには複雑すぎます。すべての警告が処理されたときに、「きれいな」画面が表示され、表示される新しい警告が明白になるように、VS Errors List画面の警告タブから抑制された警告が消えてしまいます。これは不可能ですか? –

答えて

2

あなたが直面している問題は再現できません。 ConsoleApplication (C#)を作成し、デフォルトコードを使用しました。私はすべての問題を選択し、右クリックしてを表示します。の抑制ファイルにします。私は再構築し、清掃し、VSを再始動し、警告が表示されなくなりました。

Program.csの

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ConsoleApplication14 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
     } 
    } 
} 

GlobalSuppression.cs

// This file is used by Code Analysis to maintain SuppressMessage 
// attributes that are applied to this project. 
// Project-level suppressions either have no target or are given 
// a specific target and scoped to a namespace, type, member, etc. 

[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Sonar Code Smell", "S1172:Unused method parameters should be removed", Justification = "<Pending>", Scope = "member", Target = "~M:ConsoleApplication14.Program.Main(System.String[])")] 
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Sonar Code Smell", "S1186:Methods should not be empty", Justification = "<Pending>", Scope = "member", Target = "~M:ConsoleApplication14.Program.Main(System.String[])")] 
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Sonar Code Smell", "S1118:Utility classes should not have public constructors", Justification = "<Pending>", Scope = "type", Target = "~T:ConsoleApplication14.Program")] 

私は、最新SonarLintバージョン(2.9.0.384)を使用しています。シンプルなレトロケースを作成して、何が起きているのか調べることができますか?

+0

スケーリングの問題でしょうか?私は実行可能なソースコード(コメント行と中括弧を除く)約500,000行を持つC#ソリューションで最新のNugetパッケージと一緒に2.9.0.355を使用しています。 –

+0

わかりませんが、チェックする価値があります。私はあなたのところに戻ってきます。それと同時に、小さなプロジェクトを作成して、それが小規模なプロジェクトに取り組んでいることを確認できますか?ただ確認するため。 –

+1

私ははるかに小さなソリューション(ほんの数千行だけのコード)でそれを試してみて、同じ経験を持っていました。しかし、警告を2回しか表示しなかった非常に小さなテストソリューションで試したところ、表示されなくなった後は消えてしまい、その後は再構築しても表示されませんでした。それはスケーリングの問題のようです。私はまた、大きなプロジェクト(上記)では、抑制された警告をエラーリスト画面から削除し、最終的に停止するまでそれを1つずつ実行するのは非常に遅いことに気付きました。 –

関連する問題