Excluding files
To analyze Git repositories you need to import the Git repository issue provider:
build.cake
#addin nuget:?package=Cake.Issues&version=5.7.0
#addin nuget:?package=Cake.Issues.GitRepository&version=5.7.0
Note
In addition to the Git repository issue provider the Cake.Issues
core addin needs to be added.
Build.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net9.0</TargetFramework>
<RunWorkingDirectory>$(MSBuildProjectDirectory)</RunWorkingDirectory>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Cake.Frosting" Version="5.0.0" />
<PackageReference Include="Cake.Frosting.Issues.GitRepository" Version="5.7.0" />
</ItemGroup>
</Project>
The following example shows how to exclude files from repository analysis using glob patterns.
build.cake
Task("Analyze-Repo-With-Exclusions")
.Does(() =>
{
// Read issues.
var repoRootPath = MakeAbsolute(Directory("./"));
var settings =
new GitRepositoryIssuesSettings
{
CheckBinaryFilesTrackedByLfs = true,
CheckFilesPathLength = true,
MaxFilePathLength = 260
};
// Exclude temporary files from all checks
settings.FilesToExclude.Add("*.tmp");
settings.FilesToExclude.Add("temp/**");
// Exclude specific binary files from LFS tracking checks
settings.FilesToExcludeFromBinaryFilesLfsCheck.Add("*.dll");
settings.FilesToExcludeFromBinaryFilesLfsCheck.Add("bin/**");
settings.FilesToExcludeFromBinaryFilesLfsCheck.Add("obj/**");
// Exclude generated code from path length checks
settings.FilesToExcludeFromFilePathLengthCheck.Add("generated/**");
settings.FilesToExcludeFromFilePathLengthCheck.Add("**/AssemblyInfo.cs");
var issues =
ReadIssues(
GitRepositoryIssues(settings),
repoRootPath);
Information("{0} issues are found.", issues.Count());
});
build.cs
Task("Analyze-Repo-With-Exclusions")
.Does(() =>
{
// Read issues.
var repoRootPath = MakeAbsolute(Directory("./"));
var settings =
new GitRepositoryIssuesSettings
{
CheckBinaryFilesTrackedByLfs = true,
CheckFilesPathLength = true,
MaxFilePathLength = 260
};
// Exclude temporary files from all checks
settings.FilesToExclude.Add("*.tmp");
settings.FilesToExclude.Add("temp/**");
// Exclude specific binary files from LFS tracking checks
settings.FilesToExcludeFromBinaryFilesLfsCheck.Add("*.dll");
settings.FilesToExcludeFromBinaryFilesLfsCheck.Add("bin/**");
settings.FilesToExcludeFromBinaryFilesLfsCheck.Add("obj/**");
// Exclude generated code from path length checks
settings.FilesToExcludeFromFilePathLengthCheck.Add("generated/**");
settings.FilesToExcludeFromFilePathLengthCheck.Add("**/AssemblyInfo.cs");
var issues =
ReadIssues(
GitRepositoryIssues(settings),
repoRootPath);
Information("{0} issues are found.", issues.Count());
});
Program.cs
using Cake.Common.Diagnostics;
using Cake.Frosting;
public static class Program
{
public static int Main(string[] args)
{
return new CakeHost()
.Run(args);
}
}
[TaskName("Analyze-Repo-With-Exclusions")]
public sealed class AnalyzeRepoWithExclusionsTask : FrostingTask<FrostingContext>
{
public override void Run(FrostingContext context)
{
// Read issues.
var repoRootPath = context.MakeAbsolute(context.Directory("./"));
var settings =
new GitRepositoryIssuesSettings
{
CheckBinaryFilesTrackedByLfs = true,
CheckFilesPathLength = true,
MaxFilePathLength = 260
};
// Exclude temporary files from all checks
settings.FilesToExclude.Add("*.tmp");
settings.FilesToExclude.Add("temp/**");
// Exclude specific binary files from LFS tracking checks
settings.FilesToExcludeFromBinaryFilesLfsCheck.Add("*.dll");
settings.FilesToExcludeFromBinaryFilesLfsCheck.Add("bin/**");
settings.FilesToExcludeFromBinaryFilesLfsCheck.Add("obj/**");
// Exclude generated code from path length checks
settings.FilesToExcludeFromFilePathLengthCheck.Add("generated/**");
settings.FilesToExcludeFromFilePathLengthCheck.Add("**/AssemblyInfo.cs");
var issues =
context.ReadIssues(
context.GitRepositoryIssues(settings),
repoRootPath);
context.Information("{0} issues are found.", issues.Count());
}
}
Supported exclusion patterns¶
The exclusion functionality supports glob-style patterns:
Pattern | Description | Example matches |
---|---|---|
*.txt | All files with .txt extension in current level | file.txt , readme.txt |
**/*.txt | All .txt files in any subdirectory | docs/file.txt , a/b/c/file.txt |
temp/** | All files in temp directory and subdirectories | temp/file.log , temp/sub/file.txt |
**/bin/** | All files in any bin directory | project/bin/file.dll , bin/debug/file.exe |
file?.txt | Files matching single character wildcard | file1.txt , fileA.txt |