Exemple #1
0
        public override object VisitMethod_header([NotNull] CSharpParser.Method_headerContext context)
        {
            bool isPublic = false;

            var modifiers = context?.method_modifier();

            if (modifiers != null)
            {
                foreach (var modifier in modifiers)
                {
                    if (modifier.GetText() == Keywords.Public)
                    {
                        isPublic = true;
                    }
                }
            }

            if (GetCurrentNamespace() == _breadcrumbNamespace &&
                GetCurrentClass() == _breadcrumbDeclaration.Identifier &&
                isPublic)
            {
                var methodName = context.member_name().identifier().GetText();
                if (_methodDictionary.ContainsKey(methodName))
                {
                    _methodDictionary.Remove(methodName);
                }
            }

            VisitChildren(context);

            return(null);
        }
Exemple #2
0
        public override object VisitMethod_header([NotNull] CSharpParser.Method_headerContext context)
        {
            if (_isControllerClass.Peek())
            {
                bool isNonAction = false;
                bool isPublic    = false;

                var attributes = context?.attributes()?.attribute_section();
                if (attributes != null)
                {
                    foreach (var attributeSection in attributes)
                    {
                        foreach (var attribute in attributeSection.attribute_list().attribute())
                        {
                            if (attribute.GetText() == "NonAction")
                            {
                                isNonAction = true;
                            }
                        }
                    }
                }

                var modifiers = context?.method_modifier();
                if (modifiers != null)
                {
                    foreach (var modifier in modifiers)
                    {
                        if (modifier.GetText() == Keywords.Public)
                        {
                            isPublic = true;
                        }
                    }
                }

                if (!isNonAction && isPublic)
                {
                    // Add endpoint info to results
                    var  currentNamespace = GetCurrentNamespace();
                    var  currentClass     = GetCurrentClass();
                    var  actionName       = context.member_name().identifier().GetText();
                    bool?hasId            = false;

                    var fixedParams = context?.formal_parameter_list()?.fixed_parameters()?.fixed_parameter();
                    if (fixedParams != null)
                    {
                        foreach (var fixedParam in fixedParams)
                        {
                            if (Regex.Match(fixedParam?.type_()?.GetText(), @"^int\??$").Success &&
                                fixedParam?.identifier()?.GetText() == "id")
                            {
                                hasId = true;
                            }
                        }
                    }

                    if (!Results.NamespaceDict.ContainsKey(currentNamespace))
                    {
                        Results.AddControllerNamespace(currentNamespace);
                    }
                    if (!Results.NamespaceDict[currentNamespace].ClassDict.ContainsKey(currentClass))
                    {
                        Results.NamespaceDict[currentNamespace].AddControllerClass(
                            currentClass, GetControllerRootName(currentClass));
                    }
                    if (!Results.NamespaceDict[currentNamespace]
                        .ClassDict[currentClass]
                        .ActionDict
                        .ContainsKey(actionName))
                    {
                        Results.NamespaceDict[currentNamespace].ClassDict[currentClass].AddControllerAction(
                            actionName,
                            hasId);
                    }
                    else
                    {
                        Results.NamespaceDict[currentNamespace]
                        .ClassDict[currentClass]
                        .ActionDict[actionName]
                        .HasId |= hasId;
                    }
                }
            }

            VisitChildren(context);

            return(null);
        }