示例#1
0
            private void ProcessMethodAttributes([NotNull] MethodDefinition method)
            {
                var attributes      = TrimAttributes(method);
                var isPublicVisible = method.IsPublicVisible();

                // ReSharper disable once AssignNullToNotNullAttribute
                TrimAttributes(method.MethodReturnType);

                var id = DocCommentId.GetDocCommentId(method);

                Debug.Assert(id != null, "id != null");
                var content = new XElement("member", new XAttribute("name", id));

                foreach (var attribute in attributes)
                {
                    AddAttributeDocumentation(content, attribute);
                }

                ProcessParameterAttributes(method, content, isPublicVisible);

                // ReSharper disable once PossibleNullReferenceException
                foreach (var parameter in method.GenericParameters)
                {
                    // ReSharper disable once AssignNullToNotNullAttribute
                    TrimAttributes(parameter);
                }

                if (isPublicVisible && content.HasElements)
                {
                    _root.Add(content);
                }
            }
示例#2
0
 public override string GetDeclaration(MemberReference mreference)
 {
     if (mreference is AttachedEventReference || mreference is AttachedPropertyReference)
     {
         return(slashDocMemberFormatter.GetDeclaration(mreference));
     }
     return(DocCommentId.GetDocCommentId(mreference.Resolve()));
 }
示例#3
0
    MemberNullability GetOrCreate(MemberReference member, Func <XElement, MemberNullability> createNew)
    {
        var module       = member.Module;
        var assemblyName = module.Assembly.Name.Name;

        var key = DocCommentId.GetDocCommentId((IMemberDefinition)member);

        if (!cache.TryGetValue(assemblyName, out var assemblyCache))
        {
            assemblyCache = new AssemblyCache(module.FileName);
            cache.Add(assemblyName, assemblyCache);
        }

        return(assemblyCache.GetOrCreate(key, createNew));
    }
示例#4
0
        public virtual FrameworkTypeEntry ProcessType(TypeDefinition type)
        {
            var entry = types.FirstOrDefault(t => t.Name.Equals(type.FullName));

            if (entry == null)
            {
                var docid = DocCommentId.GetDocCommentId(type);
                entry = new FrameworkTypeEntry(this)
                {
                    Id = docid, Name = type.FullName, Namespace = type.Namespace
                };
                types.Add(entry);
            }
            return(entry);
        }
示例#5
0
            private void AddAttributeDocumentation([NotNull] XElement content, [NotNull] CustomAttribute attribute)
            {
                // ReSharper disable once PossibleNullReferenceException
                var constructor = attribute.Constructor.Resolve();

                var id = DocCommentId.GetDocCommentId(constructor);

                // ReSharper disable once AssignNullToNotNullAttribute
                var element = new XElement("attribute", new XAttribute("ctor", id));

                // ReSharper disable once PossibleNullReferenceException
                foreach (var argument in attribute.ConstructorArguments)
                {
                    element.Add(new XElement("argument", argument.Value?.ToString()));
                }

                content.Add(element);
            }
示例#6
0
        public virtual FrameworkTypeEntry ProcessType(TypeDefinition type)
        {
            FrameworkTypeEntry entry;

            if (!typeMap.TryGetValue(Str(type.FullName), out entry))
            {
                var    docid   = DocCommentId.GetDocCommentId(type);
                string nstouse = GetNamespace(type);
                entry = new FrameworkTypeEntry(this)
                {
                    Id = Str(docid), Name = Str(type.FullName), Namespace = nstouse
                };
                types.Add(entry);

                typeMap.Add(Str(entry.Name), entry);
            }
            return(entry);
        }
        public virtual void ProcessMember(MemberReference member)
        {
            var resolvedMember = member.Resolve();

            if (resolvedMember != null)
            {
                var docid = DocCommentId.GetDocCommentId(resolvedMember);
                members.Add(docid);
            }
            else
            {
                members.Add(member.FullName);
            }

            // this is for lookup purposes
            try {
                memberscsharpsig.Add(formatter.GetDeclaration(member));
            }
            catch {}
        }
示例#8
0
            private void ProcessAttributes([NotNull] IMemberDefinition member, bool isPublic)
            {
                var attributes = TrimAttributes(member);

                if (!isPublic || !attributes.Any())
                {
                    return;
                }


                var id = DocCommentId.GetDocCommentId(member);
                // ReSharper disable once AssignNullToNotNullAttribute
                var content = new XElement("member", new XAttribute("name", id));

                foreach (var attribute in attributes)
                {
                    // ReSharper disable once PossibleNullReferenceException
                    // ReSharper disable once AssignNullToNotNullAttribute
                    content.Add(new XElement("attribute", new XAttribute("ctor", DocCommentId.GetDocCommentId(attribute.Constructor.Resolve()))));
                }

                _root.Add(content);
            }
示例#9
0
 public virtual void WriteLine(IMemberDefinition member, bool isHidden)
 {
     Writer.WriteLine(DocCommentId.GetDocCommentId(member));
     Writer.Flush();
 }
示例#10
0
        public override void WriteLine(IMemberDefinition member, bool isHidden)
        {
            string xmlDocId      = DocCommentId.GetDocCommentId(member);
            string refType       = string.Empty;
            string declType      = string.Empty;
            string constValue    = string.Empty;
            string strPrivileges = string.Empty;
            string strFeatures   = string.Empty;
            string sinceTizen    = string.Empty;
            bool   isStatic      = false;

            XmlNode xmlNode = _asmDoc.GetMemberNode(xmlDocId);

            if (xmlNode != null)
            {
                List <string> privileges = new List <string>();
                List <string> features   = new List <string>();

                foreach (XmlNode childNode in xmlNode)
                {
                    if (childNode.Name == "privilege")
                    {
                        privileges.AddRange(Regex.Split(childNode.InnerText.Trim(), @"\s+"));
                    }
                    else if (childNode.Name == "feature")
                    {
                        features.AddRange(Regex.Split(childNode.InnerText.Trim(), @"\s+"));
                    }
                    else if (childNode.Name == "since_tizen")
                    {
                        sinceTizen = childNode.InnerText.Trim();
                    }
                }

                if (privileges.Count > 0)
                {
                    privileges.Sort();
                    strPrivileges = string.Join(' ', privileges.ToArray());
                }

                if (features.Count > 0)
                {
                    features.Sort();
                    strFeatures = string.Join(' ', features.ToArray());
                }
            }

            var typeDef = member as TypeDefinition;

            if (typeDef != null)
            {
                refType = typeDef.BaseType?.FullName;
            }

            var methodDef = member as MethodDefinition;

            if (methodDef != null)
            {
                refType  = methodDef.ReturnType.FullName;
                isStatic = methodDef.IsStatic;
            }

            var eventDef = member as EventDefinition;

            if (eventDef != null)
            {
                refType = eventDef.EventType.FullName;
            }

            var propDef = member as PropertyDefinition;

            if (propDef != null)
            {
                refType = propDef.PropertyType.FullName;
            }

            var fieldDef = member as FieldDefinition;

            if (fieldDef != null)
            {
                refType    = fieldDef.FieldType.FullName;
                constValue = fieldDef.Constant?.ToString();
                isStatic   = fieldDef.IsStatic;
            }

            declType = member.DeclaringType?.FullName;

            Writer.WriteLine(string.Format("\"{0}\",{1},{2},{3},{4},{5},{6},{7},{8},{9}",
                                           xmlDocId, refType, declType, constValue,
                                           isStatic ? "static" : string.Empty,
                                           isHidden ? "hidden" : string.Empty,
                                           IsObsoleteMember(member) ? "obsolete" : string.Empty,
                                           sinceTizen, strPrivileges, strFeatures));
            Writer.Flush();
        }
示例#11
0
 static void AssertDocumentID(string docId, IMemberDefinition member)
 {
     Assert.AreEqual(docId, DocCommentId.GetDocCommentId(member));
 }
示例#12
0
 public override string GetDeclaration(TypeReference tref)
 {
     return(DocCommentId.GetDocCommentId(tref.Resolve()));
 }
示例#13
0
        public override void WriteLine(IMemberDefinition member, bool isHidden)
        {
            string docId         = DocCommentId.GetDocCommentId(member);
            string baseType      = string.Empty;
            string declType      = string.Empty;
            string declNamespace = string.Empty;
            string retType       = string.Empty;
            string constValue    = string.Empty;
            bool   isStatic      = false;

            var typeDef = member as TypeDefinition;

            if (typeDef != null)
            {
                baseType      = typeDef.BaseType?.FullName;
                declNamespace = typeDef.Namespace;
            }

            if (member.DeclaringType != null)
            {
                declType      = member.DeclaringType.FullName;
                declNamespace = member.DeclaringType.Namespace;
            }

            var methodDef = member as MethodDefinition;

            if (methodDef != null)
            {
                retType  = methodDef.ReturnType.FullName;
                isStatic = methodDef.IsStatic;
            }

            var eventDef = member as EventDefinition;

            if (eventDef != null)
            {
                retType = eventDef.EventType.FullName;
            }

            var propDef = member as PropertyDefinition;

            if (propDef != null)
            {
                retType = propDef.PropertyType.FullName;
            }

            var fieldDef = member as FieldDefinition;

            if (fieldDef != null)
            {
                retType    = fieldDef.FieldType.FullName;
                constValue = fieldDef.Constant?.ToString();
                isStatic   = fieldDef.IsStatic;
            }

            string        sinceTizen = string.Empty;
            List <string> privileges = new List <string>();
            List <string> features   = new List <string>();

            XmlNode xmlNode = _asmDoc.GetMemberNode(docId);

            if (xmlNode != null)
            {
                foreach (XmlNode childNode in xmlNode)
                {
                    if (childNode.Name == "privilege")
                    {
                        privileges.AddRange(Regex.Split(childNode.InnerText.Trim(), @"\s+"));
                    }
                    else if (childNode.Name == "feature")
                    {
                        features.AddRange(Regex.Split(childNode.InnerText.Trim(), @"\s+"));
                    }
                    else if (childNode.Name == "since_tizen")
                    {
                        sinceTizen = childNode.InnerText.Trim();
                    }
                }
                privileges.Sort();
                features.Sort();
            }

            if (!_isFirstMember)
            {
                Writer.WriteLine(",");
            }
            _isFirstMember = false;

            Writer.WriteLine("  {");
            Writer.WriteLine("    \"DocId\": \"{0}\",", docId);
            Writer.WriteLine("    \"Info\": {");
            Writer.WriteLine("      \"Signature\": \"{0}\",", member.FullName);
            if (!string.IsNullOrEmpty(baseType))
            {
                Writer.WriteLine("      \"BaseType\": \"{0}\",", baseType);
            }
            if (!string.IsNullOrEmpty(declType))
            {
                Writer.WriteLine("      \"DeclaringType\": \"{0}\",", declType);
            }
            if (!string.IsNullOrEmpty(declNamespace))
            {
                Writer.WriteLine("      \"Namespace\": \"{0}\",", declNamespace);
            }
            if (!string.IsNullOrEmpty(retType))
            {
                Writer.WriteLine("      \"ReturnType\": \"{0}\",", retType);
            }
            if (!string.IsNullOrEmpty(constValue))
            {
                Writer.WriteLine("      \"Constant\": \"{0}\",", constValue);
            }
            Writer.WriteLine("      \"IsStatic\": {0},", isStatic ? "true" : "false");
            Writer.WriteLine("      \"IsHidden\": {0},", isHidden ? "true" : "false");
            Writer.WriteLine("      \"IsObsolete\": {0},", IsObsoleteMember(member) ? "true" : "false");
            if (string.IsNullOrEmpty(sinceTizen))
            {
                sinceTizen = "none";
            }
            Writer.WriteLine("      \"Since\": \"{0}\"{1}", sinceTizen, (privileges.Count + features.Count > 0) ? "," : string.Empty);
            if (privileges.Count > 0)
            {
                Writer.WriteLine("      \"Privileges\": [");
                for (var i = 0; i < privileges.Count; i++)
                {
                    Writer.WriteLine("        \"{0}\"{1}", privileges[i], i < privileges.Count - 1 ? "," : string.Empty);
                }
                Writer.WriteLine("      ]{0}", features.Count > 0 ? "," : string.Empty);
            }
            if (features.Count > 0)
            {
                Writer.WriteLine("      \"Features\": [");
                for (var i = 0; i < features.Count; i++)
                {
                    Writer.WriteLine("        \"{0}\"{1}", features[i], i < features.Count - 1 ? "," : string.Empty);
                }
                Writer.WriteLine("      ]");
            }
            Writer.WriteLine("    }");
            Writer.Write("  }");

            Writer.Flush();
        }
示例#14
0
 public override string GetDeclaration(MemberReference mreference)
 {
     return(DocCommentId.GetDocCommentId(mreference.Resolve()));
 }