private void HandleSyntaxNode(SyntaxNodeAnalysisContext context) { var node = context.Node; var documentation = XmlCommentHelper.GetDocumentationStructure(node); if (documentation != null) { IEnumerable <ParameterSyntax> parameterList = this.GetParameters(node); if (parameterList == null) { return; } if (XmlCommentHelper.GetTopLevelElement(documentation, XmlCommentHelper.InheritdocXmlTag) != null) { // Ignore nodes with an <inheritdoc/> tag. return; } var xmlParameterNames = XmlCommentHelper.GetTopLevelElements(documentation, XmlCommentHelper.ParamTag) .Select(XmlCommentHelper.GetFirstAttributeOrDefault <XmlNameAttributeSyntax>) .Where(x => x != null) .ToImmutableArray(); foreach (var parameter in parameterList) { if (!xmlParameterNames.Any(x => x.Identifier.ToString() == parameter.Identifier.ToString())) { context.ReportDiagnostic(Diagnostic.Create(Descriptor, parameter.Identifier.GetLocation())); } } } }