Skip to content

Commit 8131a63

Browse files
authored
Ignore a false positive nuget-client assets file (#848)
1 parent d2539ce commit 8131a63

File tree

2 files changed

+21
-10
lines changed

2 files changed

+21
-10
lines changed

repos/dir.targets

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,11 @@
392392
<ProjectDirectories Include="$(ProjectDir)" />
393393
</ItemGroup>
394394

395+
<ItemGroup>
396+
<!-- This file is a resource tracked by Git, not generated by restore. Ignore false positive. -->
397+
<IgnoredProjectAssetsJsonFiles Include="$(SubmoduleDirectory)nuget-client/test/NuGet.Core.Tests/NuGet.Build.Tasks.Pack.Test/compiler/resources/project.assets.json" />
398+
</ItemGroup>
399+
395400
<WritePackageUsageData
396401
RestoredPackageFiles="@(AllRestoredPackageFiles)"
397402
TarballPrebuiltPackageFiles="@(TarballPrebuiltPackageFiles)"
@@ -401,6 +406,7 @@
401406
TargetRid="$(TargetRid)"
402407
ProjectDirectories="@(ProjectDirectories)"
403408
RootDir="$(ProjectDir)"
409+
IgnoredProjectAssetsJsonFiles="@(IgnoredProjectAssetsJsonFiles)"
404410
DataFile="$(PackageReportDataFile)"
405411
ProjectAssetsJsonArchiveFile="$(ProjectAssetsJsonArchiveFile)" />
406412
</Target>

tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks/UsageReport/WritePackageUsageData.cs

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,12 @@ public class WritePackageUsageData : Task
6464
[Required]
6565
public string RootDir { get; set; }
6666

67+
/// <summary>
68+
/// project.assets.json files to ignore, for example, because they are checked-in assets not
69+
/// generated during source-build and cause false positives.
70+
/// </summary>
71+
public string[] IgnoredProjectAssetsJsonFiles { get; set; }
72+
6773
/// <summary>
6874
/// Output usage data JSON file path.
6975
/// </summary>
@@ -132,10 +138,11 @@ public override bool Execute()
132138

133139
Log.LogMessage(MessageImportance.Low, "Finding project.assets.json files...");
134140

135-
string[] assetFiles = Directory.GetFiles(
136-
RootDir,
137-
"project.assets.json",
138-
SearchOption.AllDirectories);
141+
string[] assetFiles = Directory
142+
.GetFiles(RootDir, "project.assets.json", SearchOption.AllDirectories)
143+
.Select(path => path.Substring(RootDir.Length))
144+
.Except(IgnoredProjectAssetsJsonFiles.NullAsEmpty())
145+
.ToArray();
139146

140147
if (!string.IsNullOrEmpty(ProjectAssetsJsonArchiveFile))
141148
{
@@ -152,10 +159,9 @@ public override bool Execute()
152159
{
153160
// Only one entry can be open at a time, so don't do this during the Parallel
154161
// ForEach later.
155-
foreach (var file in assetFiles)
162+
foreach (var relativePath in assetFiles)
156163
{
157-
string relativePath = file.Substring(RootDir.Length);
158-
using (var stream = File.OpenRead(file))
164+
using (var stream = File.OpenRead(Path.Combine(RootDir, relativePath)))
159165
using (Stream entryWriter = projectAssetArchive
160166
.CreateEntry(relativePath, CompressionLevel.Optimal)
161167
.Open())
@@ -176,7 +182,7 @@ public override bool Execute()
176182
{
177183
var properties = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
178184

179-
using (var file = File.OpenRead(assetFile))
185+
using (var file = File.OpenRead(Path.Combine(RootDir, assetFile)))
180186
using (var reader = new StreamReader(file))
181187
using (var jsonReader = new JsonTextReader(reader))
182188
{
@@ -194,8 +200,7 @@ public override bool Execute()
194200
.Where(id => properties.Contains(id.Id + "/" + id.Version.OriginalVersion)))
195201
{
196202
usages.Add(Usage.Create(
197-
// Store relative path for future report generation.
198-
assetFile.Substring(RootDir.Length),
203+
assetFile,
199204
identity,
200205
possibleRids));
201206
}

0 commit comments

Comments
 (0)