• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

MeindertN / RoboClerk / 16389991855

19 Jul 2025 03:12PM UTC coverage: 84.026% (+0.3%) from 83.684%
16389991855

push

github

MeindertN
fixedd cross platform tests

1590 of 1913 branches covered (83.12%)

Branch coverage included in aggregate %.

5085 of 6031 relevant lines covered (84.31%)

107.88 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

93.7
/RoboClerk/DataSources/PluginDataSources.cs
1
using Microsoft.Extensions.DependencyInjection;
2
using RoboClerk.Configuration;
3
using System;
4
using System.Collections.Generic;
5
using System.IO.Abstractions;
6

7
namespace RoboClerk
8
{
9
    public class PluginDataSources : DataSourcesBase, IDataSources
10
    {
11
        private List<IDataSourcePlugin> plugins = new List<IDataSourcePlugin>();
46✔
12

13
        private readonly IPluginLoader pluginLoader = null;
46✔
14

15
        public PluginDataSources(IConfiguration configuration, IPluginLoader pluginLoader, IFileSystem fileSystem)
16
            : base(configuration, fileSystem)
46✔
17
        {
46✔
18
            this.pluginLoader = pluginLoader;
46✔
19
            LoadPlugins();
46✔
20
        }
43✔
21

22
        private void LoadPlugins()
23
        {
46✔
24
            foreach (var val in configuration.DataSourcePlugins)
351✔
25
            {
108✔
26
                bool found = false;
108✔
27
                foreach (var dir in configuration.PluginDirs)
603✔
28
                {
192✔
29
                    var plugin = pluginLoader.LoadByName<IDataSourcePlugin>(
192✔
30
                        pluginDir: dir,
192✔
31
                        typeName: val,
192✔
32
                        configureGlobals: sc =>
192✔
33
                        {
×
34
                            sc.AddSingleton(fileSystem);
×
35
                            sc.AddSingleton(configuration);
×
36
                        });
192✔
37
                    if (plugin != null)
192✔
38
                    {
105✔
39
                        plugin.InitializePlugin(configuration);
105✔
40
                        if (plugin as IDataSourcePlugin != null)
105!
41
                        {
105✔
42
                            found = true;
105✔
43
                            var temp = plugin as IDataSourcePlugin;
105✔
44
                            temp.RefreshItems();
105✔
45
                            plugins.Add(temp);
105✔
46
                            break;
105✔
47
                        }
48
                    }
×
49
                }
87✔
50
                if(!found)
108✔
51
                {
3✔
52
                    //if we don't find a specified datasource plugin, that is reason to quit.
53
                    //otherwise data could be missing from the project and the user would not know.
54
                    throw new Exception($"Unable to find plugin {val}, please ensure the name of the plugin and plugin directories in the RoboClerk config file are correct.");
3✔
55
                }
56
            }
105✔
57
        }
43✔
58

59
        public override List<SOUPItem> GetAllSOUP()
60
        {
11✔
61
            List<SOUPItem> list = new List<SOUPItem>();
11✔
62
            foreach (var plugin in plugins)
91✔
63
            {
29✔
64
                list.AddRange(plugin.GetSOUP());
29✔
65
            }
29✔
66
            return list;
11✔
67
        }
11✔
68

69
        public override List<EliminatedSOUPItem> GetAllEliminatedSOUP()
70
        {
3✔
71
            List<EliminatedSOUPItem> list = new List<EliminatedSOUPItem>();
3✔
72
            foreach (var plugin in plugins)
27✔
73
            {
9✔
74
                list.AddRange(plugin.GetEliminatedSOUP());
9✔
75
            }
9✔
76
            return list;
3✔
77
        }
3✔
78

79
        public override List<RiskItem> GetAllRisks()
80
        {
10✔
81
            List<RiskItem> list = new List<RiskItem>();
10✔
82
            foreach (var plugin in plugins)
82✔
83
            {
26✔
84
                list.AddRange(plugin.GetRisks());
26✔
85
            }
26✔
86
            return list;
10✔
87
        }
10✔
88

89
        public override List<EliminatedRiskItem> GetAllEliminatedRisks()
90
        {
4✔
91
            List<EliminatedRiskItem> list = new List<EliminatedRiskItem>();
4✔
92
            foreach (var plugin in plugins)
36✔
93
            {
12✔
94
                list.AddRange(plugin.GetEliminatedRisks());
12✔
95
            }
12✔
96
            return list;
4✔
97
        }
4✔
98

99
        public override List<ExternalDependency> GetAllExternalDependencies()
100
        {
2✔
101
            var dependencies = new List<ExternalDependency>();
2✔
102
            foreach (var plugin in plugins)
16✔
103
            {
5✔
104
                dependencies.AddRange(plugin.GetDependencies());
5✔
105
            }
5✔
106
            return dependencies;
2✔
107
        }
2✔
108

109
        public override List<TestResult> GetAllTestResults()
110
        {
×
111
            var results = new List<TestResult>();
×
112
            foreach (var plugin in plugins)
×
113
            {
×
114
                results.AddRange(plugin.GetTestResults());
×
115
            }
×
116
            return results;
×
117
        }
×
118

119
        public override List<UnitTestItem> GetAllUnitTests()
120
        {
13✔
121
            var unitTests = new List<UnitTestItem>();
13✔
122
            foreach (var plugin in plugins)
109✔
123
            {
35✔
124
                unitTests.AddRange(plugin.GetUnitTests());
35✔
125
            }
35✔
126
            return unitTests;
13✔
127
        }
13✔
128

129
        public override List<RequirementItem> GetAllSoftwareRequirements()
130
        {
33✔
131
            List<RequirementItem> items = new List<RequirementItem>();
33✔
132
            foreach (var plugin in plugins)
229✔
133
            {
65✔
134
                items.AddRange(plugin.GetSoftwareRequirements());
65✔
135
            }
65✔
136
            return items;
33✔
137
        }
33✔
138

139
        public override List<RequirementItem> GetAllSystemRequirements()
140
        {
33✔
141
            List<RequirementItem> items = new List<RequirementItem>();
33✔
142
            foreach (var plugin in plugins)
225✔
143
            {
63✔
144
                items.AddRange(plugin.GetSystemRequirements());
63✔
145
            }
63✔
146
            return items;
33✔
147
        }
33✔
148

149
        public override List<RequirementItem> GetAllDocumentationRequirements()
150
        {
17✔
151
            List<RequirementItem> items = new List<RequirementItem>();
17✔
152
            foreach (var plugin in plugins)
141✔
153
            {
45✔
154
                items.AddRange(plugin.GetDocumentationRequirements());
45✔
155
            }
45✔
156
            return items;
17✔
157
        }
17✔
158

159
        public override List<DocContentItem> GetAllDocContents()
160
        {
16✔
161
            List<DocContentItem> items = new List<DocContentItem>();
16✔
162
            foreach (var plugin in plugins)
132✔
163
            {
42✔
164
                items.AddRange(plugin.GetDocContents());
42✔
165
            }
42✔
166
            return items;
16✔
167
        }
16✔
168

169
        public override List<EliminatedDocContentItem> GetAllEliminatedDocContents()
170
        {
3✔
171
            List<EliminatedDocContentItem> items = new List<EliminatedDocContentItem>();
3✔
172
            foreach (var plugin in plugins)
27✔
173
            {
9✔
174
                items.AddRange(plugin.GetEliminatedDocContents());
9✔
175
            }
9✔
176
            return items;
3✔
177
        }
3✔
178

179
        public override List<SoftwareSystemTestItem> GetAllSoftwareSystemTests()
180
        {
14✔
181
            List<SoftwareSystemTestItem> items = new List<SoftwareSystemTestItem>();
14✔
182
            foreach (var plugin in plugins)
118✔
183
            {
38✔
184
                items.AddRange(plugin.GetSoftwareSystemTests());
38✔
185
            }
38✔
186
            return items;
14✔
187
        }
14✔
188

189
        public override List<AnomalyItem> GetAllAnomalies()
190
        {
12✔
191
            List<AnomalyItem> items = new List<AnomalyItem>();
12✔
192
            foreach (var plugin in plugins)
100✔
193
            {
32✔
194
                items.AddRange(plugin.GetAnomalies());
32✔
195
            }
32✔
196
            return items;
12✔
197
        }
12✔
198

199
        public override List<EliminatedAnomalyItem> GetAllEliminatedAnomalies()
200
        {
3✔
201
            List<EliminatedAnomalyItem> items = new List<EliminatedAnomalyItem>();
3✔
202
            foreach (var plugin in plugins)
27✔
203
            {
9✔
204
                items.AddRange(plugin.GetEliminatedAnomalies());
9✔
205
            }
9✔
206
            return items;
3✔
207
        }
3✔
208

209
        public override List<EliminatedRequirementItem> GetAllEliminatedSystemRequirements()
210
        {
4✔
211
            List<EliminatedRequirementItem> items = new List<EliminatedRequirementItem>();
4✔
212
            foreach (var plugin in plugins)
36✔
213
            {
12✔
214
                items.AddRange(plugin.GetEliminatedSystemRequirements());
12✔
215
            }
12✔
216
            return items;
4✔
217
        }
4✔
218

219
        public override List<EliminatedRequirementItem> GetAllEliminatedSoftwareRequirements()
220
        {
4✔
221
            List<EliminatedRequirementItem> items = new List<EliminatedRequirementItem>();
4✔
222
            foreach (var plugin in plugins)
36✔
223
            {
12✔
224
                items.AddRange(plugin.GetEliminatedSoftwareRequirements());
12✔
225
            }
12✔
226
            return items;
4✔
227
        }
4✔
228

229
        public override List<EliminatedRequirementItem> GetAllEliminatedDocumentationRequirements()
230
        {
4✔
231
            List<EliminatedRequirementItem> items = new List<EliminatedRequirementItem>();
4✔
232
            foreach (var plugin in plugins)
36✔
233
            {
12✔
234
                items.AddRange(plugin.GetEliminatedDocumentationRequirements());
12✔
235
            }
12✔
236
            return items;
4✔
237
        }
4✔
238

239
        public override List<EliminatedSoftwareSystemTestItem> GetAllEliminatedSoftwareSystemTests()
240
        {
4✔
241
            List<EliminatedSoftwareSystemTestItem> items = new List<EliminatedSoftwareSystemTestItem>();
4✔
242
            foreach (var plugin in plugins)
36✔
243
            {
12✔
244
                items.AddRange(plugin.GetEliminatedSoftwareSystemTests());
12✔
245
            }
12✔
246
            return items;
4✔
247
        }
4✔
248
    }
249
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc