protected override TypeMetricsReport AnalyzeType(INamedTypeDefinition type, PdbReader pdb, IEnumerable <MethodMetricsReport> methods)
 {
     return(new TypeMetricsReport
     {
         Name = type.Name(),
         FullName = type.FullName(),
         SourceLocation = SourceCodeLocating.OfType(type, pdb),
         Namespaces = type.Namespaces(),
         CompilerGenerated = type.IsGeneratedCode(),
         NumberOfFields = NumberOfFields.Of(type),
         NumberOfNonStaticPublicFields = NumberOfFields.NotStaticAndPublic(type),
         NumberOfMethods = NumberOfMethods.Of(type),
         DirectDependencies = DirectDependencies.Of(type, methods)
     });
 }
 protected override MethodMetricsReport AnalyzeMethod(IMethodDefinition method, PdbReader pdb, IMetadataHost host)
 {
     return(new MethodMetricsReport
     {
         Name = method.Name(),
         Signature = method.Signature(),
         CompilerGenerated = method.IsGeneratedCode(),
         OnlyDeclaration = method.IsOnlyDeclaration(),
         DefaultConstructor = method.IsDefaultCtor(),
         SourceLocation = SourceCodeLocating.OfMethod(method, pdb),
         CyclomaticComplexity = CyclomaticComplexityOfAst.Of(method, pdb, host),
         NumberOfStatements = NumberOfStatements.Of(method, pdb, host),
         NumberOfRealLines = NumberOfRealLines.Of(method, pdb),
         NumberOfLogicalLines = NumberOfLogicalLines.Of(method, pdb),
         TypeDependencies = TypeDependencies.Of(method)
     });
 }