File: Microsoft.NetCore.Analyzers\Runtime\BasicTestForEmptyStringsUsingStringLength.Fixer.vb
Web Access
Project: ..\..\..\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 System.Composition
Imports Microsoft.NetCore.Analyzers.Runtime
Imports Microsoft.CodeAnalysis
Imports Microsoft.CodeAnalysis.CodeFixes
Imports Microsoft.CodeAnalysis.VisualBasic
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
 
Namespace Microsoft.NetCore.VisualBasic.Analyzers.Runtime
    ''' <summary>
    ''' CA1820: Test for empty strings using string length
    ''' </summary>
    <ExportCodeFixProvider(LanguageNames.VisualBasic), [Shared]>
    Public NotInheritable Class BasicTestForEmptyStringsUsingStringLengthFixer
        Inherits TestForEmptyStringsUsingStringLengthFixer
        Protected Overrides Function GetExpression(node As SyntaxNode) As SyntaxNode
            Dim argumentSyntax = TryCast(node, ArgumentSyntax)
            Return If(argumentSyntax IsNot Nothing, argumentSyntax.GetExpression(), node)
        End Function
 
        Protected Overrides Function IsEqualsOperator(node As SyntaxNode) As Boolean
            Return node.IsKind(SyntaxKind.EqualsExpression)
        End Function
 
        Protected Overrides Function IsNotEqualsOperator(node As SyntaxNode) As Boolean
            Return node.IsKind(SyntaxKind.NotEqualsExpression)
        End Function
 
        Protected Overrides Function GetLeftOperand(binaryExpressionSyntax As SyntaxNode) As SyntaxNode
            Return DirectCast(binaryExpressionSyntax, BinaryExpressionSyntax).Left
        End Function
 
        Protected Overrides Function GetRightOperand(binaryExpressionSyntax As SyntaxNode) As SyntaxNode
            Return DirectCast(binaryExpressionSyntax, BinaryExpressionSyntax).Right
        End Function
 
        Protected Overrides Function IsFixableBinaryExpression(node As SyntaxNode) As Boolean
            Return (TypeOf node Is BinaryExpressionSyntax) AndAlso (IsEqualsOperator(node) Or IsNotEqualsOperator(node))
        End Function
 
        Protected Overrides Function IsFixableInvocationExpression(node As SyntaxNode) As Boolean
            Return node.IsKind(SyntaxKind.InvocationExpression)
        End Function
 
        Protected Overrides Function GetInvocationTarget(node As SyntaxNode) As SyntaxNode
            Dim invocationExpression = TryCast(node, InvocationExpressionSyntax)
            If invocationExpression IsNot Nothing Then
                Dim memberAccessExpression = TryCast(invocationExpression.Expression, MemberAccessExpressionSyntax)
                If memberAccessExpression IsNot Nothing Then
                    Return memberAccessExpression.Expression
                End If
            End If
 
            Return Nothing
        End Function
    End Class
End Namespace