API Roslyn, ou à cause de laquelle PVS-Studio a analysé le projet pendant très longtemps

Combien d'entre vous ont utilisé des bibliothèques tierces lors de l'écriture de votre code? La question est rhétorique, car sans l'utilisation de bibliothèques tierces, le développement de certains produits aurait été retardé pendant très, très longtemps, car pour résoudre chaque problème, il faudrait «réinventer la roue». Cependant, en plus des avantages, l'utilisation de bibliothèques tierces présente également des inconvénients. L'un de ces inconvénients a récemment touché l'analyseur PVS-Studio pour C #. Pendant longtemps, l'analyseur n'a pas pu terminer l'analyse d'un grand projet en raison de l'utilisation de la méthode SymbolFinder.FindReferencesAsync de l'API Roslyn dans les diagnostics 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