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(); }
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)); }
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)); }
public static bool ContainsSingleLineComment(this MethodDeclarationSyntax methodDeclaration, string comment) => methodDeclaration.DescendantTrivia().Any(t => t.IsKind(SyntaxKind.SingleLineCommentTrivia) && t.ToFullString() == comment);