Roslyn API, o por la cual PVS-Studio analizó el proyecto durante mucho tiempo

¿Cuántos de ustedes han utilizado bibliotecas de terceros al escribir su código? La pregunta es retórica, porque sin el uso de librerías de terceros, el desarrollo de algunos productos se habría retrasado muchísimo tiempo, porque para solucionar cada problema habría que "reinventar la rueda". Sin embargo, además de las ventajas, también existen desventajas en el uso de bibliotecas de terceros. Uno de estos inconvenientes se refirió recientemente al analizador PVS-Studio para C #. Durante mucho tiempo, el analizador no pudo completar el análisis de un proyecto grande debido al uso del método SymbolFinder.FindReferencesAsync de la API de Roslyn en los diagnósticos V3083.





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