public LocalVariableAnalyzer()
            {
                this.localVariables = PooledNameObjectDictionary <VariableDeclarationBaseSyntax> .GetInstance();

                this.firstInitializerSyntax = PooledNameObjectDictionary <IdentifierNameSyntax> .GetInstance();

                this.firstLocalVarUsageSyntax = PooledNameObjectDictionary <IdentifierNameSyntax> .GetInstance();

                this.lastRecordModifyInvocationSyntax = PooledNameObjectDictionary <IdentifierNameSyntax> .GetInstance();

                this.firstRecordChangeSyntax = PooledNameObjectDictionary <IdentifierNameSyntax> .GetInstance();
            }
 public void ReportUnusedUninitializedVars(CodeBlockAnalysisContext context)
 {
     try
     {
         PooledNameObjectDictionary <VariableDeclarationBaseSyntax> localVariables = this.localVariables;
         if ((localVariables != null ? ((uint)localVariables.Values.Count > 0U ? 1 : 0) : 1) == 0)
         {
             return;
         }
         this.ReportInitializedNotUsedNotInitializedUsedLocalVars(context);
     }
     finally
     {
         this.Dispose();
     }
 }
        private static void InitializeGlobalVariablesAnalyzer(
            SyntaxNodeAnalysisContext syntaxNodeAnalysisContext)
        {
            PooledNameObjectDictionary <VariableDeclarationBaseSyntax> instance1 = PooledNameObjectDictionary <VariableDeclarationBaseSyntax> .GetInstance();

            PooledNameObjectDictionary <IdentifierNameSyntax> instance2 = PooledNameObjectDictionary <IdentifierNameSyntax> .GetInstance();

            PooledNameObjectDictionary <IdentifierNameSyntax> instance3 = PooledNameObjectDictionary <IdentifierNameSyntax> .GetInstance();

            PooledNameObjectDictionary <IdentifierNameSyntax> instance4 = PooledNameObjectDictionary <IdentifierNameSyntax> .GetInstance();

            PooledNameObjectDictionary <IdentifierNameSyntax> instance5 = PooledNameObjectDictionary <IdentifierNameSyntax> .GetInstance();

            try
            {
                VariableInitializationUsageAnalyzer.CollectDeclaredGlobalVariables(syntaxNodeAnalysisContext, (Dictionary <string, VariableDeclarationBaseSyntax>)instance1);
                foreach (SyntaxNode descendantNode in syntaxNodeAnalysisContext.Node.DescendantNodes())
                {
                    if (descendantNode.IsKind(SyntaxKind.IdentifierName))
                    {
                        // ISSUE: variable of a compiler-generated type
                        IdentifierNameSyntax identifier = (IdentifierNameSyntax)descendantNode;
                        if (instance1.ContainsKey(identifier.Identifier.ValueText) && !identifier.Parent.IsKind(SyntaxKind.VariableDeclaration))
                        {
                            VariableInitializationUsageAnalyzer.AnalyzeGlobalVarUsage(identifier, (Dictionary <string, IdentifierNameSyntax>)instance2, (Dictionary <string, IdentifierNameSyntax>)instance3, (Dictionary <string, IdentifierNameSyntax>)instance4, (Dictionary <string, IdentifierNameSyntax>)instance5, syntaxNodeAnalysisContext, (Dictionary <string, VariableDeclarationBaseSyntax>)instance1);
                        }
                    }
                }
                VariableInitializationUsageAnalyzer.ReportInitializedNotUsedNotInitializedUsedVars(syntaxNodeAnalysisContext, (Dictionary <string, IdentifierNameSyntax>)instance3, (Dictionary <string, IdentifierNameSyntax>)instance2, (Dictionary <string, VariableDeclarationBaseSyntax>)instance1);
            }
            finally
            {
                instance1.Free();
                instance2.Free();
                instance3.Free();
                instance4.Free();
                instance5.Free();
            }
        }