private void WriteMethodData(MethodDeclarationSyntax method, string summary, string summary_cleaned, JsonWriter jWriter, string repoPath)
        {
            jWriter.WriteStartObject();

            jWriter.WritePropertyName("code");
            jWriter.WriteValue(method.ToString());

            jWriter.WritePropertyName("code_tokens");
            jWriter.WriteStartArray();
            foreach (var token in method.DescendantTokens())
            {
                jWriter.WriteValue(token.ValueText);
            }
            jWriter.WriteEndArray();

            jWriter.WritePropertyName("docstring");
            jWriter.WriteValue(summary);

            jWriter.WritePropertyName("docstring_tokens");
            jWriter.WriteStartArray();
            foreach (var token in summary_cleaned
                     .Split(new[] { ' ', '\n', '.', '(', ')', ';', '\'', '"', '@' },
                            StringSplitOptions.RemoveEmptyEntries)
                     .Select(t => t.Trim()).Where(t => t.Length > 0))
            {
                jWriter.WriteValue(token);
            }
            jWriter.WriteEndArray();

            jWriter.WritePropertyName("comment_tokens");
            jWriter.WriteStartArray();
            foreach (var token in method.DescendantTrivia()
                     .Where(t => t.IsKind(SyntaxKind.SingleLineCommentTrivia) || t.IsKind(SyntaxKind.MultiLineCommentTrivia))
                     .SelectMany(t => t.ToString()
                                 .Split(new[] { ' ', '\n', '.', '(', ')', ';', '\'', '"', '@', '/' },
                                        StringSplitOptions.RemoveEmptyEntries))
                     .Select(t => t.Trim()).Where(t => t.Length > 0))
            {
                jWriter.WriteValue(token);
            }
            jWriter.WriteEndArray();

            jWriter.WritePropertyName("func_name");
            jWriter.WriteValue(method.Identifier.ToString());

            jWriter.WritePropertyName("language");
            jWriter.WriteValue("csharp");

            jWriter.WritePropertyName("lineno");
            // Roslyn does 0-based line counting.
            jWriter.WriteValue(method.SyntaxTree.GetLineSpan(method.Span).StartLinePosition.Line + 1);

            jWriter.WritePropertyName("path");
            jWriter.WriteValue(method.SyntaxTree.FilePath);

            jWriter.WritePropertyName("repo");
            jWriter.WriteValue(repoPath);

            jWriter.WriteEndObject();
        }
Beispiel #2
0
        private SyntaxTriviaList GetMethodLineSeparator(MethodDeclarationSyntax method)
        {
            var endOfLineTrivia = method.DescendantTrivia().FirstOrDefault(t => t.IsKind(SyntaxKind.EndOfLineTrivia));
            var endOfLine       = endOfLineTrivia != default(SyntaxTrivia)
                ? endOfLineTrivia
                : SyntaxFactory.CarriageReturnLineFeed;
            var lineBreak = new[] { endOfLine, endOfLine };

            return(SyntaxFactory.TriviaList(lineBreak));
        }
Beispiel #3
0
        private MethodDeclarationSyntax TranslateMethod(MethodDeclarationSyntax methodDeclaration)
        {
            foreach (var log in methodDeclaration.DescendantTrivia().ToList())
            {
                if (log.Kind() == SyntaxKind.SingleLineCommentTrivia)
                {
                    Logger.Info("Logs: \n" + log.ToString());
                }
            }

            for (int i = 0; i < methodDeclaration.AttributeLists.Count; i++)
            {
                var attributeList = methodDeclaration.AttributeLists.ToList()[i];
                AttributeListSyntax newAttributeList = AttributeTranslator.TranslateMethodAttributeList(attributeList);
                methodDeclaration = methodDeclaration.ReplaceNode(attributeList, newAttributeList);
            }

            return(AssertionTranslator.TranslateAssertions(methodDeclaration));
        }
Beispiel #4
0
 public static bool ContainsSingleLineComment(this MethodDeclarationSyntax methodDeclaration, string comment) =>
 methodDeclaration.DescendantTrivia().Any(t => t.IsKind(SyntaxKind.SingleLineCommentTrivia) && t.ToFullString() == comment);