예제 #1
0
        private void SyntaxNodeConstructorLengthAnalysis(SyntaxNodeAnalysisContext context)
        {
            var node = (ConstructorDeclarationSyntax)context.Node;

            var paramWithTokens = node.ParameterList.ChildNodesAndTokens().AggregateParamsWithTokens();

            if (paramWithTokens.Count() < 4)
            {
                return;
            }

            var areParamsTrailingEndOfTheLine = true;

            foreach (var elem in paramWithTokens)
            {
                if (_triviaHelper.IsParamIsAfterNewLine(elem))
                {
                    areParamsTrailingEndOfTheLine = false;
                    break;
                }
            }

            if (!areParamsTrailingEndOfTheLine)
            {
                context.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptions.Descriptions["ConstructorParamLength"], node.GetLocation()));
            }
        }
        private async Task <Document> SeperateByNewLinesAsync(Document document, ConstructorDeclarationSyntax declaration, CancellationToken c)
        {
            var editor = await DocumentEditor.CreateAsync(document, c);

            var leadingTrivia    = _triviaHelper.GenerateLeadingTriviaForNewLine(declaration);
            var paramsWithTokens = declaration.ParameterList.ChildNodesAndTokens().AggregateParamsWithTokens();

            foreach (var elem in paramsWithTokens)
            {
                var param = elem.Parameter;

                if (_triviaHelper.IsParamIsAfterNewLine(elem))
                {
                    editor.ReplaceNode(param, param.WithLeadingTrivia(leadingTrivia));
                }
            }

            return(editor.GetChangedDocument());
        }