Roslyn API、またはそのためPVS-Studioが非常に長い間プロジェクトを分析しました

コードを書くときにサードパーティのライブラリを使用したことのある人は何人いますか?サードパーティのライブラリを使用しないと、一部の製品の開発が非常に長い間遅れていたため、問題は修辞的です。各問題を解決するには、「車輪の再発明」が必要になるためです。ただし、利点に加えて、サードパーティのライブラリを使用することにも欠点があります。これらの欠点の1つは、C#用のPVS-Studioアナライザーに最近触れました。 V3083診断でRoslynAPIのSymbolFinder.FindReferencesAsyncメソッドを使用したため、長い間、アナライザーは大規模なプロジェクトの分析を完了できませんでした。





PVS-Studio, , . , , . ! . Alarm! Alarm! ! , . , 3 C# . V3083. , . V3083 C# . , :





public class IncorrectEventUse
{
  public event EventHandler EventOne;  
  protected void InvokeEventTwice(object o, Eventers args)
  {
    if (EventOne != null)
    {
      EventOne(o, args);        
      EventOne.Invoke(o, args);
    }
  }
}

      
      



V3083 EventOne InvokeEventTwice. . , V3083 :





  • ;





  • , ;





  • , .





- .





- . V3083 , ( : Visual Studio, Rider, SonarQube), . , . Roslyn API SymbolFinder.FindReferencesAsync, V3083, " ".





: , , . . , - . , , . 100 % V3083.





V3083

, , , . , , open-source ( 90 ). open-source ? " ", , . V3083. , , – V3083 . . SymbolFinder.FindReferencesAsync V3083 9 %. - , , :





, , - V3083.





, Roslyn API, ! . , SymbolFinder.FindReferencesAsync, Microsoft.CodeAnalysis.FindSymbols.SymbolFinder, .





, . ! , , : , . .





PVS-Studio, .





V3083 , 7.12 SymbolFinder.FindReferencesAsync.





, C# , V3083. , , . 50, .





, : Valery Komarov. Roslyn API: Why PVS-Studio Was Analyzing the Project So Long.








All Articles