Roslyn API oder aufgrund dessen PVS-Studio das Projekt sehr lange analysiert hat

Wie viele von Ihnen haben beim Schreiben Ihres Codes Bibliotheken von Drittanbietern verwendet? Die Frage ist rhetorisch, denn ohne die Verwendung von Bibliotheken von Drittanbietern hätte sich die Entwicklung einiger Produkte sehr, sehr lange verzögert, denn um jedes Problem zu lösen, müsste man "das Rad neu erfinden". Neben den Vorteilen gibt es jedoch auch Nachteile bei der Verwendung von Bibliotheken von Drittanbietern. Einer dieser Nachteile betraf kürzlich den PVS-Studio-Analysator für C #. Aufgrund der Verwendung der SymbolFinder.FindReferencesAsync-Methode aus der Roslyn-API in der V3083-Diagnose konnte der Analysator die Analyse eines großen Projekts lange Zeit nicht abschließen.





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