Skip to content

Commit 2ffeaf0

Browse files
committed
#363: Fixed OpenCover file handling (not unique tracked methods)
1 parent e1214b2 commit 2ffeaf0

File tree

4 files changed

+33
-2
lines changed

4 files changed

+33
-2
lines changed

src/Readme.txt

+1
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ CHANGELOG
6565

6666
4.6.5.0
6767

68+
* Fix: #363: Fixed OpenCover file handling (not unique tracked methods)
6869
* Fix: #371: Fixed order of metrics
6970

7071
4.6.4.0

src/ReportGenerator.Core/Parser/OpenCoverParser.cs

+20-2
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,26 @@ public ParserResult Parse(XContainer report)
7373
.Where(m => m.Attribute("skippedDueTo") == null)
7474
.ToArray();
7575
var files = report.Descendants("File").ToArray();
76-
var trackedMethods = report.Descendants("TrackedMethod")
77-
.ToDictionary(t => t.Attribute("uid").Value, t => t.Attribute("name").Value);
76+
77+
var trackedMethods = new Dictionary<string, string>();
78+
79+
foreach (var trackedMethodElement in report.Descendants("TrackedMethod"))
80+
{
81+
if (trackedMethods.ContainsKey(trackedMethodElement.Attribute("uid").Value))
82+
{
83+
Logger.WarnFormat(
84+
Resources.ErrorNotUniqueTrackedMethodUid,
85+
trackedMethodElement.Attribute("name").Value);
86+
87+
trackedMethods.Clear();
88+
89+
break;
90+
}
91+
else
92+
{
93+
trackedMethods.Add(trackedMethodElement.Attribute("uid").Value, trackedMethodElement.Attribute("name").Value);
94+
}
95+
}
7896

7997
var assemblyNames = modules
8098
.Select(m => m.Element("ModuleName").Value)

src/ReportGenerator.Core/Properties/Resources.Designer.cs

+9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/ReportGenerator.Core/Properties/Resources.resx

+3
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,9 @@
183183
<data name="ErrorInvalidDotCoverReport" xml:space="preserve">
184184
<value>The dotCover report does not contain line coverage data. Use the dotCover command line parameter '/ReportType=DetailedXML' to capture line coverage.</value>
185185
</data>
186+
<data name="ErrorNotUniqueTrackedMethodUid" xml:space="preserve">
187+
<value>The 'uid' of tracked method '{0}' is not unique. Ignoring tracked methods.</value>
188+
</data>
186189
<data name="ErrorPartCover" xml:space="preserve">
187190
<value>PartCover is no longer supported. If you want to generate coverage reports based on PartCover, please use version 3.x of ReportGenerator.</value>
188191
</data>

0 commit comments

Comments
 (0)