ArchiMetrics.CodeReview.Rules.Semantic.LockingOnWeakIdentityObjectRule.EvaluateImpl C# (CSharp) Method

EvaluateImpl() protected method

protected EvaluateImpl ( Microsoft.CodeAnalysis.SyntaxNode node, Microsoft.CodeAnalysis.SemanticModel semanticModel, Microsoft.CodeAnalysis.Solution solution ) : Task
node Microsoft.CodeAnalysis.SyntaxNode
semanticModel Microsoft.CodeAnalysis.SemanticModel
solution Microsoft.CodeAnalysis.Solution
return Task
		protected override Task<EvaluationResult> EvaluateImpl(SyntaxNode node, SemanticModel semanticModel, Solution solution)
		{
			var lockStatement = (LockStatementSyntax)node;
			var lockExpression = lockStatement.Expression as IdentifierNameSyntax;
			if (lockExpression != null)
			{
				var lockObjectSymbolInfo = semanticModel.GetSymbolInfo(lockExpression);
				var symbol = lockObjectSymbolInfo.Symbol as IFieldSymbol;
				if (symbol != null && IsWeakIdentity(symbol.Type))
				{
					return Task.FromResult(new EvaluationResult
						   {
							   Snippet = node.ToFullString()
						   });
				}
			}

			return Task.FromResult((EvaluationResult)null);
		}
LockingOnWeakIdentityObjectRule