Exemple #1
0
        internal void Analyze(FileModel fileModel)
        {
            List <ClassDeclarationSyntax> classDeclarationSyntaxes = SyntaxTree
                                                                     .GetRoot()
                                                                     .DescendantNodes()
                                                                     .OfType <ClassDeclarationSyntax>()
                                                                     .ToList();

            foreach (ClassDeclarationSyntax classDeclarationSyntax in classDeclarationSyntaxes)
            {
                ClassModel classModel = new ClassModel
                {
                    Name = classDeclarationSyntax.Identifier.ValueText,
                    Fqn  = SemanticModel.GetDeclaredSymbol(classDeclarationSyntax).ToString()
                };

                INamedTypeSymbol namedTypeSymbol =
                    SemanticModel.GetDeclaredSymbol(classDeclarationSyntax) as INamedTypeSymbol;

                classModel.BaseType        = namedTypeSymbol.BaseType.ToString();
                classModel.Accessibility   = namedTypeSymbol.DeclaredAccessibility.ToString();
                classModel.Abstract        = namedTypeSymbol.IsAbstract;
                classModel.Sealed          = namedTypeSymbol.IsSealed;
                classModel.Static          = namedTypeSymbol.IsStatic;
                classModel.Md5             = BuildMD5(classDeclarationSyntax.GetText().ToString());
                classModel.FirstLineNumber =
                    classDeclarationSyntax.GetLocation().GetLineSpan().StartLinePosition.Line + 1;
                classModel.LastLineNumber =
                    classDeclarationSyntax.GetLocation().GetLineSpan().EndLinePosition.Line + 1;

                foreach (INamedTypeSymbol interfaceTypeSymbol in namedTypeSymbol.Interfaces)
                {
                    classModel.ImplementedInterfaces.Add(interfaceTypeSymbol.ToString());
                }

                _fieldAnalyzer.Analyze(classDeclarationSyntax, classModel);
                _methodAnalyzer.Analyze(classDeclarationSyntax, classModel);
                _constructorAnalyzer.Analyze(classDeclarationSyntax, classModel);

                fileModel.Classes.Add(classModel);
            }
        }
        internal void Analyze(FileModel fileModel)
        {
            List <InterfaceDeclarationSyntax> interfaceDeclarationSyntaxes = SyntaxTree
                                                                             .GetRoot()
                                                                             .DescendantNodes()
                                                                             .OfType <InterfaceDeclarationSyntax>()
                                                                             .ToList();

            foreach (InterfaceDeclarationSyntax interfaceDeclarationSyntax in interfaceDeclarationSyntaxes)
            {
                InterfaceModel interfaceModel = new InterfaceModel
                {
                    Name = interfaceDeclarationSyntax.Identifier.ValueText,
                    Fqn  = SemanticModel.GetDeclaredSymbol(interfaceDeclarationSyntax).ToString(),
                    Md5  = BuildMD5(interfaceDeclarationSyntax.GetText().ToString())
                };

                INamedTypeSymbol namedTypeSymbol =
                    SemanticModel.GetDeclaredSymbol(interfaceDeclarationSyntax) as INamedTypeSymbol;

                foreach (INamedTypeSymbol interfaceTypeSymbol in namedTypeSymbol.Interfaces)
                {
                    interfaceModel.ImplementedInterfaces.Add(interfaceTypeSymbol.ToString());
                }

                interfaceModel.Accessibility   = namedTypeSymbol.DeclaredAccessibility.ToString();
                interfaceModel.FirstLineNumber =
                    interfaceDeclarationSyntax.GetLocation().GetLineSpan().StartLinePosition.Line + 1;
                interfaceModel.LastLineNumber =
                    interfaceDeclarationSyntax.GetLocation().GetLineSpan().EndLinePosition.Line + 1;

                _constructorAnalyzer.Analyze(interfaceDeclarationSyntax, interfaceModel);

                fileModel.Interfaces.Add(interfaceModel);
            }
        }