当前位置: 首页>>代码示例>>C#>>正文


C# AnalysisContext.RegisterSyntaxTreeActionInNonGenerated方法代码示例

本文整理汇总了C#中AnalysisContext.RegisterSyntaxTreeActionInNonGenerated方法的典型用法代码示例。如果您正苦于以下问题:C# AnalysisContext.RegisterSyntaxTreeActionInNonGenerated方法的具体用法?C# AnalysisContext.RegisterSyntaxTreeActionInNonGenerated怎么用?C# AnalysisContext.RegisterSyntaxTreeActionInNonGenerated使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在AnalysisContext的用法示例。


在下文中一共展示了AnalysisContext.RegisterSyntaxTreeActionInNonGenerated方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Initialize

 public override void Initialize(AnalysisContext context)
 {
     context.RegisterSyntaxTreeActionInNonGenerated(
         c => {
             foreach (var asyncOrAwaitToken in GetAsyncOrAwaitTokens(c.Tree.GetRoot())
                 .Where(token => !token.Parent.AncestorsAndSelf().OfType<IdentifierNameSyntax>().Any()))
             {
                 c.ReportDiagnostic(Diagnostic.Create(Rule, asyncOrAwaitToken.GetLocation(), asyncOrAwaitToken.ToString()));
             }
         });
 }
开发者ID:andwi,项目名称:sonarlint-vs,代码行数:11,代码来源:AsyncAwaitIdentifier.cs

示例2: Initialize

 public override void Initialize(AnalysisContext context)
 {
     context.RegisterSyntaxTreeActionInNonGenerated(
         c =>
         {
             foreach (var line in c.Tree.GetText().Lines
                 .Where(line => line.Span.Length > Maximum))
             {
                 c.ReportDiagnostic(Diagnostic.Create(Rule, c.Tree.GetLocation(line.Span), Maximum, line.Span.Length));
             }
         });
 }
开发者ID:jango2015,项目名称:sonarlint-vs,代码行数:12,代码来源:LineLength.cs

示例3: Initialize

        public override void Initialize(AnalysisContext context)
        {
            context.RegisterSyntaxTreeActionInNonGenerated(
                c =>
                {
                    var root = c.Tree.GetRoot();
                    var lines = root.GetLocation().GetLineSpan().EndLinePosition.Line + 1;

                    if (lines > Maximum)
                    {
                        c.ReportDiagnostic(Diagnostic.Create(Rule, Location.None, Maximum, lines));
                    }
                });
        }
开发者ID:andwi,项目名称:sonarlint-vs,代码行数:14,代码来源:FileLines.cs

示例4: Initialize

        public override void Initialize(AnalysisContext context)
        {
            context.RegisterSyntaxTreeActionInNonGenerated(
                c =>
                {
                    var offset = c.Tree.GetText().ToString().IndexOf('\t');
                    if (offset < 0)
                    {
                        return;
                    }

                    var location = c.Tree.GetLocation(TextSpan.FromBounds(offset, offset));
                    c.ReportDiagnostic(Diagnostic.Create(Rule, location));
                });
        }
开发者ID:Godin,项目名称:sonarlint-vs,代码行数:15,代码来源:TabCharacter.cs

示例5: Initialize

        public override void Initialize(AnalysisContext context)
        {
            context.RegisterSyntaxTreeActionInNonGenerated(
                c =>
                {
                    var lineContinuations = c.Tree.GetRoot().DescendantTokens()
                        .SelectMany(token => token.TrailingTrivia)
                        .Where(trivia => trivia.IsKind(SyntaxKind.LineContinuationTrivia));

                    foreach (var lineContinuation in lineContinuations)
                    {
                        c.ReportDiagnostic(Diagnostic.Create(Rule, lineContinuation.GetLocation()));
                    }
                });
        }
开发者ID:jakobehn,项目名称:sonarlint-vs,代码行数:15,代码来源:LineContinuation.cs

示例6: Initialize

 public override void Initialize(AnalysisContext context)
 {
     context.RegisterSyntaxTreeActionInNonGenerated(
         c =>
         {
             var root = c.Tree.GetRoot();
             foreach (var closeBraceToken in GetDescendantCloseBraceTokens(root)
                 .Where(closeBraceToken =>
                     !StartsLine(closeBraceToken) &&
                     !IsOnSameLineAsOpenBrace(closeBraceToken) &&
                     !IsInitializer(closeBraceToken.Parent)))
             {
                 c.ReportDiagnostic(Diagnostic.Create(Rule, closeBraceToken.GetLocation()));
             }
         });
 }
开发者ID:jakobehn,项目名称:sonarlint-vs,代码行数:16,代码来源:RightCurlyBraceStartsLine.cs

示例7: Initialize

        public override void Initialize(AnalysisContext context)
        {
            context.RegisterSyntaxTreeActionInNonGenerated(
                c =>
                {
                    var comments = c.Tree.GetCompilationUnitRoot().DescendantTrivia()
                        .Where(trivia => IsComment(trivia));

                    foreach (var comment in comments)
                    {
                        var text = comment.ToString();

                        foreach (var i in AllCaseInsensitiveIndexesOf(text, Word).Where(i => IsWordAt(text, i, Word.Length)))
                        {
                            var startLocation = comment.SpanStart + i;
                            var location = Location.Create(
                                c.Tree,
                                TextSpan.FromBounds(startLocation, startLocation + Word.Length));

                            c.ReportDiagnostic(Diagnostic.Create(Rule, location));
                        }
                    }
                });
        }
开发者ID:ozgurkayaist,项目名称:sonarlint-vs,代码行数:24,代码来源:CommentWordBase.cs

示例8: Initialize

        public override void Initialize(AnalysisContext context)
        {
            context.RegisterSyntaxTreeActionInNonGenerated(
                c =>
                {
                    foreach (var token in c.Tree.GetRoot().DescendantTokens())
                    {
                        Action<IEnumerable<SyntaxTrivia>> check =
                            trivias =>
                            {
                                var lastCommentedCodeLine = int.MinValue;

                                foreach (var trivia in trivias)
                                {
                                    if (!trivia.IsKind(SyntaxKind.SingleLineCommentTrivia) &&
                                        !trivia.IsKind(SyntaxKind.MultiLineCommentTrivia))
                                    {
                                        continue;
                                    }

                                    var triviaContent = GetTriviaContent(trivia);
                                    var triviaStartingLineNumber = trivia.GetLocation().GetLineSpan().StartLinePosition.Line;
                                    var triviaLines = triviaContent.Split(LineTerminators, StringSplitOptions.None);

                                    for (var triviaLineNumber = 0; triviaLineNumber < triviaLines.Length; triviaLineNumber++)
                                    {
                                        if (!IsCode(triviaLines[triviaLineNumber]))
                                        {
                                            continue;
                                        }

                                        var lineNumber = triviaStartingLineNumber + triviaLineNumber;
                                        var previousLastCommentedCodeLine = lastCommentedCodeLine;
                                        lastCommentedCodeLine = lineNumber;

                                        if (lineNumber == previousLastCommentedCodeLine + 1)
                                        {
                                            continue;
                                        }

                                        var lineSpan = c.Tree.GetText().Lines[lineNumber].Span;
                                        var commentLineSpan = lineSpan.Intersection(trivia.GetLocation().SourceSpan);

                                        var location = Location.Create(c.Tree, commentLineSpan ?? lineSpan);
                                        c.ReportDiagnostic(Diagnostic.Create(Rule, location));
                                        break;
                                    }
                                }
                            };

                        check(token.LeadingTrivia);
                        check(token.TrailingTrivia);
                    }
                });
        }
开发者ID:Azzhag,项目名称:sonarlint-vs,代码行数:55,代码来源:CommentedOutCode.cs

示例9: Initialize

        public override void Initialize(AnalysisContext context)
        {
            context.RegisterSyntaxTreeActionInNonGenerated(
                c =>
                {
                    var root = c.Tree.GetRoot();

                    var rootExpressions =
                        root
                        .DescendantNodes(e2 => !(e2 is ExpressionSyntax))
                        .Where(
                            e =>
                                e is ExpressionSyntax &&
                                !IsCompoundExpression(e));

                    var compoundExpressionsDescendants =
                        root
                        .DescendantNodes()
                        .Where(IsCompoundExpression)
                        .SelectMany(
                            e =>
                                e
                                .DescendantNodes(
                                    e2 =>
                                        e == e2 ||
                                        !(e2 is ExpressionSyntax))
                                .Where(
                                    e2 =>
                                        e2 is ExpressionSyntax &&
                                        !IsCompoundExpression(e2)));

                    var expressionsToCheck = rootExpressions.Concat(compoundExpressionsDescendants);

                    var complexExpressions =
                        expressionsToCheck
                        .Select(
                            e =>
                            new
                            {
                                Expression = e,
                                Complexity =
                                    e
                                    .DescendantNodesAndSelf(e2 => !IsCompoundExpression(e2))
                                    .Count(
                                        e2 =>
                                            e2.IsKind(SyntaxKind.ConditionalExpression) ||
                                            e2.IsKind(SyntaxKind.LogicalAndExpression) ||
                                            e2.IsKind(SyntaxKind.LogicalOrExpression))
                            })
                        .Where(e => e.Complexity > Maximum);

                    foreach (var complexExpression in complexExpressions)
                    {
                        c.ReportDiagnostic(Diagnostic.Create(Rule, complexExpression.Expression.GetLocation(), Maximum, complexExpression.Complexity));
                    }
                });
        }
开发者ID:roel4ez,项目名称:sonarlint-vs,代码行数:57,代码来源:ExpressionComplexity.cs

示例10: Initialize

        public override void Initialize(AnalysisContext context)
        {
            context.RegisterSyntaxTreeActionInNonGenerated(
                c =>
                {
                    foreach (var token in c.Tree.GetRoot().DescendantTokens())
                    {
                        Action<IEnumerable<SyntaxTrivia>> check =
                            trivias =>
                            {
                                var shouldReport = true;
                                foreach (var trivia in trivias)
                                {
                                    if (trivia.IsKind(SyntaxKind.MultiLineCommentTrivia))
                                    {
                                        CheckMultilineComment(c, trivia);
                                        shouldReport = true;
                                        continue;
                                    }

                                    if (trivia.IsKind(SyntaxKind.SingleLineCommentTrivia) && shouldReport)
                                    {
                                        var triviaContent = GetTriviaContent(trivia);
                                        if (!IsCode(triviaContent))
                                        {
                                            continue;
                                        }

                                        c.ReportDiagnostic(Diagnostic.Create(Rule, trivia.GetLocation()));
                                        shouldReport = false;
                                        continue;
                                    }
                                }
                            };

                        check(token.LeadingTrivia);
                        check(token.TrailingTrivia);
                    }
                });
        }
开发者ID:jakobehn,项目名称:sonarlint-vs,代码行数:40,代码来源:CommentedOutCode.cs


注:本文中的AnalysisContext.RegisterSyntaxTreeActionInNonGenerated方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。