diff --git a/ILSpy/Analyzers/AnalyzedEventTreeNode.cs b/ILSpy/Analyzers/AnalyzedEventTreeNode.cs index 51e223e3e..d628bb5a1 100644 --- a/ILSpy/Analyzers/AnalyzedEventTreeNode.cs +++ b/ILSpy/Analyzers/AnalyzedEventTreeNode.cs @@ -54,15 +54,7 @@ namespace ILSpy.Analyzers.TreeNodes if (TryFindBackingField(analyzedEvent, out var backingField)) this.Children.Add(new AnalyzedFieldTreeNode(backingField, this.SourceMember)); - foreach (var factory in Analyzers) - { - var analyzer = factory.CreateExport().Value; - if (analyzer.Show(analyzedEvent)) - { - this.Children.Add( - new AnalyzerSearchTreeNode(analyzedEvent, analyzer, factory.Metadata?.Header)); - } - } + AddAnalyzerChildren(analyzedEvent); } static bool TryFindBackingField(IEvent analyzedEvent, [NotNullWhen(true)] out IField? backingField) diff --git a/ILSpy/Analyzers/AnalyzedFieldTreeNode.cs b/ILSpy/Analyzers/AnalyzedFieldTreeNode.cs index 1994dd380..462420f5c 100644 --- a/ILSpy/Analyzers/AnalyzedFieldTreeNode.cs +++ b/ILSpy/Analyzers/AnalyzedFieldTreeNode.cs @@ -42,17 +42,6 @@ namespace ILSpy.Analyzers.TreeNodes public override object Icon => Images.Images.GetIcon(Images.Images.Field, Images.Images.GetOverlay(analyzedField.Accessibility), analyzedField.IsStatic); - protected override void LoadChildren() - { - foreach (var factory in Analyzers) - { - var analyzer = factory.CreateExport().Value; - if (analyzer.Show(analyzedField)) - { - this.Children.Add( - new AnalyzerSearchTreeNode(analyzedField, analyzer, factory.Metadata?.Header)); - } - } - } + protected override void LoadChildren() => AddAnalyzerChildren(analyzedField); } } diff --git a/ILSpy/Analyzers/AnalyzedMethodTreeNode.cs b/ILSpy/Analyzers/AnalyzedMethodTreeNode.cs index d5ba5e6c1..927917d7c 100644 --- a/ILSpy/Analyzers/AnalyzedMethodTreeNode.cs +++ b/ILSpy/Analyzers/AnalyzedMethodTreeNode.cs @@ -57,17 +57,6 @@ namespace ILSpy.Analyzers.TreeNodes method.IsExtensionMethod); } - protected override void LoadChildren() - { - foreach (var factory in Analyzers) - { - var analyzer = factory.CreateExport().Value; - if (analyzer.Show(analyzedMethod)) - { - this.Children.Add( - new AnalyzerSearchTreeNode(analyzedMethod, analyzer, factory.Metadata?.Header)); - } - } - } + protected override void LoadChildren() => AddAnalyzerChildren(analyzedMethod); } } diff --git a/ILSpy/Analyzers/AnalyzedModuleTreeNode.cs b/ILSpy/Analyzers/AnalyzedModuleTreeNode.cs index 881af7f11..e1aa6efa1 100644 --- a/ILSpy/Analyzers/AnalyzedModuleTreeNode.cs +++ b/ILSpy/Analyzers/AnalyzedModuleTreeNode.cs @@ -82,18 +82,7 @@ namespace ILSpy.Analyzers.TreeNodes } } - protected override void LoadChildren() - { - foreach (var factory in Analyzers) - { - var analyzer = factory.CreateExport().Value; - if (analyzer.Show(analyzedModule)) - { - this.Children.Add( - new AnalyzerSearchTreeNode(analyzedModule, analyzer, factory.Metadata?.Header)); - } - } - } + protected override void LoadChildren() => AddAnalyzerChildren(analyzedModule); public override bool HandleAssemblyListChanged( ICollection removedAssemblies, diff --git a/ILSpy/Analyzers/AnalyzedPropertyTreeNode.cs b/ILSpy/Analyzers/AnalyzedPropertyTreeNode.cs index 85c7dfe35..c2b600572 100644 --- a/ILSpy/Analyzers/AnalyzedPropertyTreeNode.cs +++ b/ILSpy/Analyzers/AnalyzedPropertyTreeNode.cs @@ -51,15 +51,7 @@ namespace ILSpy.Analyzers.TreeNodes if (analyzedProperty.CanSet) this.Children.Add(new AnalyzedAccessorTreeNode(analyzedProperty.Setter!, this.SourceMember, "set")); - foreach (var factory in Analyzers) - { - var analyzer = factory.CreateExport().Value; - if (analyzer.Show(analyzedProperty)) - { - this.Children.Add( - new AnalyzerSearchTreeNode(analyzedProperty, analyzer, factory.Metadata?.Header)); - } - } + AddAnalyzerChildren(analyzedProperty); } } } diff --git a/ILSpy/Analyzers/AnalyzedTypeTreeNode.cs b/ILSpy/Analyzers/AnalyzedTypeTreeNode.cs index 319bf792b..de73b48dc 100644 --- a/ILSpy/Analyzers/AnalyzedTypeTreeNode.cs +++ b/ILSpy/Analyzers/AnalyzedTypeTreeNode.cs @@ -52,17 +52,6 @@ namespace ILSpy.Analyzers.TreeNodes Images.Images.GetOverlay(type.Accessibility), type.IsStatic); } - protected override void LoadChildren() - { - foreach (var factory in Analyzers) - { - var analyzer = factory.CreateExport().Value; - if (analyzer.Show(analyzedType)) - { - this.Children.Add( - new AnalyzerSearchTreeNode(analyzedType, analyzer, factory.Metadata?.Header)); - } - } - } + protected override void LoadChildren() => AddAnalyzerChildren(analyzedType); } } diff --git a/ILSpy/Analyzers/AnalyzerEntityTreeNode.cs b/ILSpy/Analyzers/AnalyzerEntityTreeNode.cs index ed0e31a11..8a5f07881 100644 --- a/ILSpy/Analyzers/AnalyzerEntityTreeNode.cs +++ b/ILSpy/Analyzers/AnalyzerEntityTreeNode.cs @@ -67,6 +67,24 @@ namespace ILSpy.Analyzers public override object? ToolTip => Member?.ParentModule?.MetadataFile?.FileName; + /// + /// Appends one per registered analyzer that + /// applies to . Subclasses with extra rows + /// (accessors, backing fields) add those first, then call this. + /// + protected void AddAnalyzerChildren(ISymbol analyzedSymbol) + { + foreach (var factory in Analyzers) + { + var analyzer = factory.CreateExport().Value; + if (analyzer.Show(analyzedSymbol)) + { + this.Children.Add( + new AnalyzerSearchTreeNode(analyzedSymbol, analyzer, factory.Metadata?.Header)); + } + } + } + public override bool HandleAssemblyListChanged( ICollection removedAssemblies, ICollection addedAssemblies)