Browse Source

Fix performance of AddXmlDocumentationTransform

pull/850/head
Siegfried Pammer 8 years ago
parent
commit
d51d21513d
  1. 14
      ICSharpCode.Decompiler/CSharp/Transforms/AddXmlDocumentationTransform.cs
  2. 1
      ICSharpCode.Decompiler/Documentation/XmlDocLoader.cs

14
ICSharpCode.Decompiler/CSharp/Transforms/AddXmlDocumentationTransform.cs

@ -34,6 +34,9 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms
{ {
if (!context.Settings.ShowXmlDocumentation) if (!context.Settings.ShowXmlDocumentation)
return; return;
var xmldoc = XmlDocLoader.LoadDocumentation(context.TypeSystem.ModuleDefinition);
if (xmldoc == null)
return;
foreach (var entity in rootNode.DescendantsAndSelf.OfType<EntityDeclaration>()) { foreach (var entity in rootNode.DescendantsAndSelf.OfType<EntityDeclaration>()) {
var symbol = entity.GetSymbol(); var symbol = entity.GetSymbol();
Mono.Cecil.MemberReference mr; Mono.Cecil.MemberReference mr;
@ -47,14 +50,9 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms
default: default:
continue; continue;
} }
if (mr != null && mr.Module != null) { string doc = xmldoc.GetDocumentation(XmlDocKeyProvider.GetKey(mr));
var xmldoc = XmlDocLoader.LoadDocumentation(mr.Module); if (doc != null) {
if (xmldoc != null) { InsertXmlDocumentation(entity, new StringReader(doc));
string doc = xmldoc.GetDocumentation(XmlDocKeyProvider.GetKey(mr));
if (doc != null) {
InsertXmlDocumentation(entity, new StringReader(doc));
}
}
} }
} }
} }

1
ICSharpCode.Decompiler/Documentation/XmlDocLoader.cs

@ -62,6 +62,7 @@ namespace ICSharpCode.Decompiler.Documentation
xmlDoc = new XmlDocumentationProvider(xmlDocFile); xmlDoc = new XmlDocumentationProvider(xmlDocFile);
cache.Add(module, xmlDoc); cache.Add(module, xmlDoc);
} else { } else {
cache.Add(module, null); // add missing documentation files as well
xmlDoc = null; xmlDoc = null;
} }
} }

Loading…
Cancel
Save