File: Microsoft.CodeQuality.Analyzers\Documentation\BasicAvoidUsingCrefTagsWithAPrefix.vb
Web Access
Project: src\src\sdk\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Microsoft.CodeAnalysis.VisualBasic.NetAnalyzers\Microsoft.CodeAnalysis.VisualBasic.NetAnalyzers.vbproj (Microsoft.CodeAnalysis.VisualBasic.NetAnalyzers)
' Copyright (c) Microsoft.  All Rights Reserved.  Licensed under the MIT license.  See License.txt in the project root for license information.

Imports Microsoft.CodeAnalysis
Imports Microsoft.CodeAnalysis.Diagnostics
Imports Microsoft.CodeAnalysis.VisualBasic
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Imports Microsoft.CodeQuality.Analyzers.Documentation

Namespace Microsoft.CodeQuality.VisualBasic.Analyzers.Documentation
    ''' <summary>
    ''' CA1200: Avoid using cref tags with a prefix
    ''' </summary>
    <DiagnosticAnalyzer(LanguageNames.VisualBasic)>
    Public NotInheritable Class BasicAvoidUsingCrefTagsWithAPrefixAnalyzer
        Inherits AvoidUsingCrefTagsWithAPrefixAnalyzer

        Public Overrides Sub Initialize(context As AnalysisContext)
            context.EnableConcurrentExecution()
            context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None)

            context.RegisterSyntaxNodeAction(AddressOf AnalyzeXmlAttribute, SyntaxKind.XmlAttribute)
        End Sub

        Private Shared Sub AnalyzeXmlAttribute(context As SyntaxNodeAnalysisContext)
            Dim node = DirectCast(context.Node, XmlAttributeSyntax)

            If DirectCast(node.Name, XmlNameSyntax).LocalName.Text = "cref" Then
                Dim value = TryCast(node.Value, XmlStringSyntax)

                If value IsNot Nothing Then
                    ProcessAttribute(context, value.TextTokens)
                End If
            End If
        End Sub
    End Class
End Namespace