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); } }
public override string GetDeclaration(MemberReference mreference) { if (mreference is AttachedEventReference || mreference is AttachedPropertyReference) { return(slashDocMemberFormatter.GetDeclaration(mreference)); } return(DocCommentId.GetDocCommentId(mreference.Resolve())); }
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)); }
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); }
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); }
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 {} }
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); }
public virtual void WriteLine(IMemberDefinition member, bool isHidden) { Writer.WriteLine(DocCommentId.GetDocCommentId(member)); Writer.Flush(); }
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(); }
static void AssertDocumentID(string docId, IMemberDefinition member) { Assert.AreEqual(docId, DocCommentId.GetDocCommentId(member)); }
public override string GetDeclaration(TypeReference tref) { return(DocCommentId.GetDocCommentId(tref.Resolve())); }
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(); }
public override string GetDeclaration(MemberReference mreference) { return(DocCommentId.GetDocCommentId(mreference.Resolve())); }