/// <summary> /// This method walks the control flow graph counting edges and nodes. Cyclomatic complexity is then calculated from the two values. /// </summary> private static int CalcCyclomaticComplexity(ICSharpFunctionDeclaration declaration) { ICSharpControlFlowGraf graf = CSharpControlFlowBuilder.Build(declaration); HashSet <IControlFlowRib> ribs = GetRibs(graf); int nodes = GetNodesCount(ribs); return(ribs.Count - nodes + 2); }
private static HashSet <IControlFlowRib> GetRibs(ICSharpControlFlowGraf graf) { var ribs = new HashSet <IControlFlowRib>(); foreach (ICSharpControlFlowElement element in graf.AllElements) { foreach (IControlFlowRib rib in element.Exits) { ribs.Add(rib); } foreach (IControlFlowRib rib in element.Entries) { ribs.Add(rib); } } return(ribs); }
private static HashSet<IControlFlowRib> GetRibs(ICSharpControlFlowGraf graf) { var ribs = new HashSet<IControlFlowRib>(); foreach(ICSharpControlFlowElement element in graf.AllElements) { foreach(IControlFlowRib rib in element.Exits) ribs.Add(rib); foreach(IControlFlowRib rib in element.Entries) ribs.Add(rib); } return ribs; }