/// <summary> /// Calculate metrics for Method /// </summary> /// <param name="node"></param> /// <param name="mi"></param> /// <returns></returns> public static MethodInfo FillMethodMetrics(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode node, MethodInfo mi) { mi.NL = NL.Calculate(node); mi.NLE = NLE.Calculate(node); mi.NOB = NOB.Calculate(node); mi.NOS = NOS.Calculate(node); return(mi); }
public CSharpSyntax(SyntaxTree syntaxTree, CSharpSyntaxNode csharpStatement, TextSpan span, TextSpan fullSpan) : base(syntaxTree) { Kind = SyntaxKind.CSharpSyntax; CSharpStatement = csharpStatement; FullSpan = fullSpan; Span = span; }
/// <summary> /// Gets the symbol for a particular syntax node. /// Throws an exception if the symbol is not found. /// </summary> /// /// <remarks> /// This gives a nicer message than a "null pointer exception", /// and should be used where we require a symbol to be resolved. /// </remarks> /// /// <param name="cx">The extraction context.</param> /// <param name="node">The syntax node.</param> /// <returns>The resolved symbol.</returns> public static ISymbol GetSymbol(this Context cx, Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode node) { var info = GetSymbolInfo(cx, node); if (info.Symbol == null) { throw new InternalError(node, "Could not resolve symbol"); } return(info.Symbol); }
public static SymbolInfo GetSymbolInfo(this Context cx, Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode node) => cx.Model(node).GetSymbolInfo(node);
/// <summary> /// Determines the type of a node, or null /// if the type could not be determined. /// </summary> /// <param name="cx">Extractor context.</param> /// <param name="node">The node to determine.</param> /// <returns>The type symbol of the node, or null.</returns> public static ITypeSymbol GetType(this Context cx, Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode node) { var info = GetTypeInfo(cx, node); return(cx.DisambiguateType(info.Type)); }
/// <summary> /// Determines the type of a node, or default /// if the type could not be determined. /// </summary> /// <param name="cx">Extractor context.</param> /// <param name="node">The node to determine.</param> /// <returns>The type symbol of the node, or default.</returns> public static AnnotatedTypeSymbol GetType(this Context cx, Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode node) { var info = GetTypeInfo(cx, node); return(new AnnotatedTypeSymbol(info.Type.DisambiguateType(), info.Nullability.Annotation)); }
public static TypeInfo GetTypeInfo(this Context cx, Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode node) => cx.GetModel(node).GetTypeInfo(node);
/// <summary> /// Calculating metrics to the Method /// </summary> /// <param name="node">C# syntax node</param> public static void SetMetrics(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode node) { MethodInfo mi = MainDeclaration.Instance.MethodStack.Pop(); FillFromMethodStack(FillMethodMetrics(node, mi)); }