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(); } }