use regex::Regex;
pub struct DotnetPatterns {
external_patterns: Vec<Regex>,
cache_patterns: Vec<Regex>,
extensions: Vec<String>,
}
impl DotnetPatterns {
pub fn new() -> Self {
let external_patterns = vec![
Regex::new(r"bin/").unwrap(),
Regex::new(r"obj/").unwrap(),
Regex::new(r"\.dll$").unwrap(),
Regex::new(r"\.exe$").unwrap(),
Regex::new(r"\.pdb$").unwrap(),
Regex::new(r"\.lib$").unwrap(),
Regex::new(r"\.exp$").unwrap(),
Regex::new(r"\.ilk$").unwrap(),
Regex::new(r"packages/").unwrap(),
Regex::new(r"\.nuget/").unwrap(),
Regex::new(r"\.nupkg$").unwrap(),
Regex::new(r"\.snupkg$").unwrap(),
Regex::new(r"TestResults/").unwrap(),
Regex::new(r"\.trx$").unwrap(),
Regex::new(r"\.coverage$").unwrap(),
Regex::new(r"\.coveragexml$").unwrap(),
Regex::new(r"\.vs/").unwrap(),
Regex::new(r"\.vscode/").unwrap(),
Regex::new(r"\.idea/").unwrap(),
Regex::new(r"\.suo$").unwrap(),
Regex::new(r"\.user$").unwrap(),
Regex::new(r"\.userosscache$").unwrap(),
Regex::new(r"\.sln\.docstates$").unwrap(),
Regex::new(r"publish/").unwrap(),
Regex::new(r"\.publish/").unwrap(),
Regex::new(r"PublishProfiles/").unwrap(),
Regex::new(r"wwwroot/").unwrap(),
Regex::new(r"\.publish\.xml$").unwrap(),
Regex::new(r"Migrations/").unwrap(),
Regex::new(r"\.dSYM/").unwrap(),
Regex::new(r"\.app/").unwrap(),
Regex::new(r"\.ipa$").unwrap(),
Regex::new(r"\.apk$").unwrap(),
Regex::new(r"Library/").unwrap(),
Regex::new(r"Temp/").unwrap(),
Regex::new(r"\.tmp$").unwrap(),
Regex::new(r"_ReSharper").unwrap(),
Regex::new(r"\.resharper").unwrap(),
Regex::new(r"\.dotCover$").unwrap(),
Regex::new(r"\.ncrunch").unwrap(),
Regex::new(r"_NCrunch_").unwrap(),
Regex::new(r"\.mm\.").unwrap(),
Regex::new(r"AutoTest\.Net/").unwrap(),
Regex::new(r"\.zip$").unwrap(),
Regex::new(r"\.bak$").unwrap(),
Regex::new(r"\.cache$").unwrap(),
Regex::new(r"StyleCopReport\.xml$").unwrap(),
Regex::new(r"\.pidb$").unwrap(),
Regex::new(r"\.svclog$").unwrap(),
Regex::new(r"\.scc$").unwrap(),
Regex::new(r"_Chutzpah").unwrap(),
Regex::new(r"ipch/").unwrap(),
Regex::new(r"\.aps$").unwrap(),
Regex::new(r"\.ncb$").unwrap(),
Regex::new(r"\.opendb$").unwrap(),
Regex::new(r"\.opensdf$").unwrap(),
Regex::new(r"\.sdf$").unwrap(),
Regex::new(r"\.cachefile$").unwrap(),
Regex::new(r"\.VC\.db$").unwrap(),
Regex::new(r"\.VC\.VC\.opendb$").unwrap(),
Regex::new(r"\.psess$").unwrap(),
Regex::new(r"\.vsp$").unwrap(),
Regex::new(r"\.vspx$").unwrap(),
Regex::new(r"\.sap$").unwrap(),
Regex::new(r"\$tf/").unwrap(),
Regex::new(r"\.gpState$").unwrap(),
Regex::new(r"_ReSharper\.Caches/").unwrap(),
Regex::new(r"\.teamcity/").unwrap(),
Regex::new(r"\.dotCover$").unwrap(),
Regex::new(r"\.coverage$").unwrap(),
Regex::new(r"\.coveragexml$").unwrap(),
Regex::new(r"\.ncrunch").unwrap(),
Regex::new(r"_NCrunch_").unwrap(),
Regex::new(r"\.mm\.").unwrap(),
Regex::new(r"AutoTest\.Net/").unwrap(),
Regex::new(r"Express/").unwrap(),
Regex::new(r"DocProject/buildhelp/").unwrap(),
Regex::new(r"DocProject/Help/").unwrap(),
Regex::new(r"DocProject/Help/Html2/").unwrap(),
Regex::new(r"DocProject/Help/html/").unwrap(),
Regex::new(r"publish/").unwrap(),
Regex::new(r"\.Publish\.xml$").unwrap(),
Regex::new(r"csx/").unwrap(),
Regex::new(r"\.build\.csdef$").unwrap(),
Regex::new(r"AppPackages/").unwrap(),
Regex::new(r"\.Cache$").unwrap(),
Regex::new(r"ClientBin/").unwrap(),
Regex::new(r"\[Ss\]tyle[Cc]op\.\*$").unwrap(),
Regex::new(r"~\$").unwrap(),
Regex::new(r"\.dbmdl$").unwrap(),
Regex::new(r"\.dbproj\.schemaview$").unwrap(),
Regex::new(r"\.pfx$").unwrap(),
Regex::new(r"\.publishsettings$").unwrap(),
Regex::new(r"orleans\.codegen\.cs$").unwrap(),
Regex::new(r"Generated_Code/").unwrap(),
Regex::new(r"_UpgradeReport_Files/").unwrap(),
Regex::new(r"Backup").unwrap(),
Regex::new(r"UpgradeLog").unwrap(),
Regex::new(r"\.mdf$").unwrap(),
Regex::new(r"\.ldf$").unwrap(),
Regex::new(r"\.rdl\.data$").unwrap(),
Regex::new(r"\.bim\.layout$").unwrap(),
Regex::new(r"\.bim_").unwrap(),
Regex::new(r"FakesAssemblies/").unwrap(),
Regex::new(r"\.GhostDoc\.xml$").unwrap(),
Regex::new(r"\.ntvs_analysis\.dat$").unwrap(),
Regex::new(r"\.ntvs_analysis\.dat\.tmp$").unwrap(),
Regex::new(r"\.plg$").unwrap(),
Regex::new(r"\.opt$").unwrap(),
Regex::new(r"\.vbw$").unwrap(),
Regex::new(r"\.HTMLClient/GeneratedArtifacts/").unwrap(),
Regex::new(r"\.DesktopClient/GeneratedArtifacts/").unwrap(),
Regex::new(r"\.DesktopClient/ModelManifest\.xml$").unwrap(),
Regex::new(r"\.Server/GeneratedArtifacts/").unwrap(),
Regex::new(r"\.Server/ModelManifest\.xml$").unwrap(),
Regex::new(r"_Pvt_Extensions/").unwrap(),
Regex::new(r"\.paket/").unwrap(),
Regex::new(r"paket-files/").unwrap(),
Regex::new(r"\.fake/").unwrap(),
Regex::new(r"\.idea/").unwrap(),
Regex::new(r"\.cr/").unwrap(),
Regex::new(r"__pycache__/").unwrap(),
Regex::new(r"\.pyc$").unwrap(),
Regex::new(r"tools/").unwrap(),
Regex::new(r"\.tss$").unwrap(),
Regex::new(r"\.jmconfig$").unwrap(),
Regex::new(r"\.btp\.cs$").unwrap(),
Regex::new(r"\.btm\.cs$").unwrap(),
Regex::new(r"\.odx\.cs$").unwrap(),
Regex::new(r"\.xsd\.cs$").unwrap(),
Regex::new(r"OpenCover/").unwrap(),
Regex::new(r"ASALocalRun/").unwrap(),
Regex::new(r"\.binlog$").unwrap(),
Regex::new(r"\.nvuser$").unwrap(),
Regex::new(r"\.mfractor/").unwrap(),
];
let cache_patterns = vec![
Regex::new(r"\.nuget/packages/").unwrap(),
Regex::new(r"\.nuget/v3-cache/").unwrap(),
Regex::new(r"\.nuget/tmp-cache/").unwrap(),
Regex::new(r"obj/").unwrap(),
Regex::new(r"\.vs/").unwrap(),
Regex::new(r"\.vscode/").unwrap(),
Regex::new(r"\.idea/").unwrap(),
Regex::new(r"_ReSharper\.Caches/").unwrap(),
Regex::new(r"\.dotCover$").unwrap(),
Regex::new(r"\.ncrunch").unwrap(),
Regex::new(r"_NCrunch_").unwrap(),
Regex::new(r"TestResults/").unwrap(),
Regex::new(r"\.tmp$").unwrap(),
Regex::new(r"\.cache$").unwrap(),
Regex::new(r"\.publish/").unwrap(),
Regex::new(r"\.ef/").unwrap(),
Regex::new(r"\.dSYM/").unwrap(),
Regex::new(r"Library/").unwrap(),
Regex::new(r"Temp/").unwrap(),
Regex::new(r"\.paket/").unwrap(),
Regex::new(r"\.fake/").unwrap(),
Regex::new(r"\.idea/").unwrap(),
Regex::new(r"\.cr/").unwrap(),
Regex::new(r"__pycache__/").unwrap(),
Regex::new(r"tools/").unwrap(),
Regex::new(r"OpenCover/").unwrap(),
Regex::new(r"ASALocalRun/").unwrap(),
Regex::new(r"\.mfractor/").unwrap(),
];
let extensions = vec![
"cs".to_string(), "csx".to_string(),
"vb".to_string(),
"fs".to_string(), "fsx".to_string(), "fsi".to_string(),
"csproj".to_string(), "fsproj".to_string(), "vbproj".to_string(),
"vcxproj".to_string(), "vcproj".to_string(),
"sln".to_string(),
"nuspec".to_string(),
"resx".to_string(), "resw".to_string(), "resources".to_string(),
"aspx".to_string(), "ascx".to_string(), "asax".to_string(),
"ashx".to_string(), "asmx".to_string(),
"razor".to_string(), "cshtml".to_string(), "vbhtml".to_string(),
"xaml".to_string(),
"config".to_string(), "settings".to_string(),
"edmx".to_string(), "dbml".to_string(),
"targets".to_string(), "props".to_string(),
"asm".to_string(),
"tt".to_string(), "ttinclude".to_string(),
"stylecop".to_string(),
"wxs".to_string(), "wxi".to_string(),
"msbuild".to_string(),
"ps1".to_string(), "psm1".to_string(), "psd1".to_string(),
];
Self {
external_patterns,
cache_patterns,
extensions,
}
}
pub fn get_external_patterns(&self) -> &[Regex] {
&self.external_patterns
}
pub fn get_cache_patterns(&self) -> &[Regex] {
&self.cache_patterns
}
pub fn get_extensions(&self) -> &[String] {
&self.extensions
}
pub fn get_script_names() -> Vec<&'static str> {
vec![
"*.sln", "*.csproj", "*.fsproj", "*.vbproj",
"*.vcxproj", "*.vcproj", "*.proj",
"packages.config", "*.nuspec", "nuget.config",
"Directory.Build.props", "Directory.Build.targets",
"Directory.Packages.props", "global.json",
"*.targets", "*.props", "*.tasks",
"app.config", "web.config", "machine.config",
"appsettings.json", "appsettings.Development.json",
"appsettings.Production.json", "appsettings.Staging.json",
"launchSettings.json", "bundleconfig.json",
"Program.cs", "Startup.cs", "*.razor",
"_ViewStart.cshtml", "_ViewImports.cshtml",
"_Layout.cshtml", "*.cshtml", "*.vbhtml",
"*.edmx", "*.dbml", "DbContext.cs",
"*.runsettings", "*.testsettings",
"*.pubxml", "*.wpp.targets", "*.deploy.cmd",
"Dockerfile", "docker-compose.yml", "docker-compose.yaml",
".github/workflows/dotnet.yml", ".github/workflows/build.yml",
"azure-pipelines.yml", "appveyor.yml",
"GitVersion.yml", "version.json",
"*.ruleset", "StyleCop.json", "editorconfig",
".editorconfig", "omnisharp.json",
"README.md", "CHANGELOG.md", "LICENSE",
"*.shfbproj", "*.ndoc",
"Info.plist", "AndroidManifest.xml",
"*.storyboard", "*.xib",
"*.unity", "*.prefab", "*.mat", "*.asset",
"ProjectSettings/", "UserSettings/",
"*.xaml", "*.resx", "*.settings",
"*.wxs", "*.wxi", "*.wxl",
"*.ps1", "*.psm1", "*.psd1",
"host.json", "local.settings.json",
"function.json", "proxies.json",
"_Imports.razor", "App.razor",
"MainLayout.razor", "NavMenu.razor",
"ServiceManifest.xml", "ApplicationManifest.xml",
"*.grain", "*.silo",
"paket.dependencies", "paket.lock",
"paket.references", "paket.template",
"build.fsx", "fake.cmd", "fake.sh",
"build.cake", "cake.config",
"*.benchmarks",
"*.analyzer",
"*.generator",
"*.proto",
"swagger.json", "openapi.json",
"*.hub",
"*.endpoints",
"*.healthchecks",
"*.backgroundservice",
"*.middleware",
"*.filter",
"*.attribute",
"*.extensions",
"*.converter",
"*.validator",
"*.mapper",
"*.repository",
"*.service",
"*.controller",
"*.model", "*.dto", "*.viewmodel",
"*.context",
"*.migration",
"*.seeder",
"*.policy",
"*.handler",
"*.options",
"*.constants",
"*.enum",
"*.interface",
"*.abstraction",
"*.implementation",
"*.factory",
"*.builder",
"*.strategy",
"*.decorator",
"*.adapter",
"*.facade",
"*.proxy",
"*.singleton",
"*.utility", "*.helper",
"*.configuration",
"*.profile",
"*.specification",
"*.query",
"*.command",
"*.event",
"*.notification",
"*.request",
"*.response",
"*.result",
"*.exception",
"*.resource",
"*.localization",
"*.culture",
"*.theme",
"*.style",
"*.template",
"*.layout",
"*.component",
"*.directive",
"*.pipe",
"*.guard",
"*.resolver",
"*.interceptor",
"*.module",
"*.provider",
"*.injector",
"*.container",
"*.registration",
"*.binding",
"*.scope",
"*.lifetime",
"*.activator",
"*.disposable",
"*.finalizer",
"*.destructor",
"*.constructor",
"*.initializer",
"*.terminator",
"*.cleaner",
"*.manager",
"*.coordinator",
"*.supervisor",
"*.monitor",
"*.watcher",
"*.observer",
"*.listener",
"*.subscriber",
"*.publisher",
"*.producer",
"*.consumer",
"*.processor",
"*.transformer",
"*.serializer",
"*.deserializer",
"*.encoder",
"*.decoder",
"*.compressor",
"*.decompressor",
"*.encryptor",
"*.decryptor",
"*.hasher",
"*.signer",
"*.verifier",
"*.authenticator",
"*.authorizer",
"*.identifier",
"*.generator",
"*.parser",
"*.lexer",
"*.tokenizer",
"*.analyzer",
"*.optimizer",
"*.compiler",
"*.interpreter",
"*.executor",
"*.runner",
"*.launcher",
"*.starter",
"*.stopper",
"*.pauser",
"*.resumer",
"*.resetter",
"*.refresher",
"*.updater",
"*.deleter",
"*.creator",
"*.destroyer",
"*.builder",
"*.constructor",
"*.assembler",
"*.disassembler",
"*.linker",
"*.loader",
"*.unloader",
"*.saver",
"*.reader",
"*.writer",
"*.streamer",
"*.buffer",
"*.cache",
"*.store",
"*.repository",
"*.database",
"*.connection",
"*.client",
"*.server",
"*.host",
"*.guest",
"*.peer",
"*.node",
"*.cluster",
"*.network",
"*.protocol",
"*.channel",
"*.pipe",
"*.queue",
"*.stack",
"*.heap",
"*.tree",
"*.graph",
"*.list",
"*.array",
"*.dictionary",
"*.map",
"*.set",
"*.collection",
"*.iterator",
"*.enumerator",
"*.comparer",
"*.equalizer",
"*.sorter",
"*.searcher",
"*.finder",
"*.matcher",
"*.filter",
"*.selector",
"*.projector",
"*.aggregator",
"*.accumulator",
"*.reducer",
"*.folder",
"*.mapper",
"*.flattener",
"*.grouper",
"*.partitioner",
"*.splitter",
"*.joiner",
"*.merger",
"*.combiner",
"*.concatenator",
"*.appender",
"*.prepender",
"*.inserter",
"*.remover",
"*.replacer",
"*.substituter",
"*.swapper",
"*.exchanger",
"*.trader",
"*.negotiator",
"*.mediator",
"*.arbitrator",
"*.judge",
"*.evaluator",
"*.assessor",
"*.tester",
"*.validator",
"*.checker",
"*.verifier",
"*.confirmer",
"*.approver",
"*.rejecter",
"*.acceptor",
"*.denier",
"*.granter",
"*.revoker",
"*.enabler",
"*.disabler",
"*.activator",
"*.deactivator",
"*.trigger",
"*.scheduler",
"*.timer",
"*.clock",
"*.calendar",
"*.date",
"*.time",
"*.duration",
"*.interval",
"*.period",
"*.span",
"*.range",
"*.bound",
"*.limit",
"*.constraint",
"*.rule",
"*.policy",
"*.strategy",
"*.algorithm",
"*.heuristic",
"*.pattern",
"*.template",
"*.blueprint",
"*.schema",
"*.specification",
"*.definition",
"*.declaration",
"*.annotation",
"*.attribute",
"*.property",
"*.field",
"*.variable",
"*.constant",
"*.parameter",
"*.argument",
"*.value",
"*.object",
"*.instance",
"*.reference",
"*.pointer",
"*.handle",
"*.identifier",
"*.key",
"*.token",
"*.symbol",
"*.name",
"*.label",
"*.tag",
"*.mark",
"*.flag",
"*.indicator",
"*.signal",
"*.message",
"*.notification",
"*.alert",
"*.warning",
"*.error",
"*.exception",
"*.fault",
"*.failure",
"*.problem",
"*.issue",
"*.bug",
"*.defect",
"*.flaw",
"*.vulnerability",
"*.threat",
"*.risk",
"*.hazard",
"*.danger",
"*.peril",
"*.jeopardy",
"*.exposure",
"*.liability",
"*.responsibility",
"*.obligation",
"*.duty",
"*.task",
"*.job",
"*.work",
"*.operation",
"*.action",
"*.activity",
"*.process",
"*.procedure",
"*.method",
"*.function",
"*.routine",
"*.subroutine",
"*.module",
"*.component",
"*.part",
"*.piece",
"*.element",
"*.item",
"*.entity",
"*.unit",
"*.block",
"*.chunk",
"*.segment",
"*.section",
"*.division",
"*.partition",
"*.region",
"*.area",
"*.zone",
"*.district",
"*.neighborhood",
"*.community",
"*.society",
"*.group",
"*.team",
"*.crew",
"*.squad",
"*.unit",
"*.division",
"*.department",
"*.section",
"*.branch",
"*.office",
"*.bureau",
"*.agency",
"*.organization",
"*.institution",
"*.establishment",
"*.enterprise",
"*.business",
"*.company",
"*.corporation",
"*.firm",
"*.partnership",
"*.association",
"*.alliance",
"*.coalition",
"*.federation",
"*.union",
"*.league",
"*.club",
"*.society",
"*.fraternity",
"*.sorority",
"*.brotherhood",
"*.sisterhood",
"*.fellowship",
"*.membership",
"*.citizenship",
"*.residency",
"*.inhabitant",
"*.resident",
"*.occupant",
"*.tenant",
"*.renter",
"*.lessee",
"*.lessor",
"*.landlord",
"*.owner",
"*.proprietor",
"*.possessor",
"*.holder",
"*.bearer",
"*.carrier",
"*.transporter",
"*.mover",
"*.shipper",
"*.sender",
"*.receiver",
"*.recipient",
"*.addressee",
"*.consignee",
"*.consignor",
"*.vendor",
"*.supplier",
"*.provider",
"*.distributor",
"*.dealer",
"*.retailer",
"*.wholesaler",
"*.merchant",
"*.trader",
"*.seller",
"*.buyer",
"*.purchaser",
"*.customer",
"*.client",
"*.patron",
"*.consumer",
"*.user",
"*.operator",
"*.administrator",
"*.manager",
"*.director",
"*.executive",
"*.officer",
"*.official",
"*.authority",
"*.leader",
"*.chief",
"*.head",
"*.principal",
"*.supervisor",
"*.overseer",
"*.foreman",
"*.boss",
"*.employer",
"*.employee",
"*.worker",
"*.laborer",
"*.staff",
"*.personnel",
"*.crew",
"*.team",
"*.group",
"*.squad",
"*.unit",
"*.division",
"*.department",
"*.section",
"*.branch",
"*.office",
"*.bureau",
"*.agency",
"*.organization",
"*.institution",
"*.establishment",
"*.enterprise",
"*.business",
"*.company",
"*.corporation",
"*.firm",
"*.partnership",
"*.association",
"*.alliance",
"*.coalition",
"*.federation",
"*.union",
"*.league",
"*.club",
"*.society",
"*.fraternity",
"*.sorority",
"*.brotherhood",
"*.sisterhood",
"*.fellowship",
"*.membership",
"*.citizenship",
"*.residency",
"*.inhabitant",
"*.resident",
"*.occupant",
"*.tenant",
"*.renter",
"*.lessee",
"*.lessor",
"*.landlord",
"*.owner",
"*.proprietor",
"*.possessor",
"*.holder",
"*.bearer",
"*.carrier",
"*.transporter",
"*.mover",
"*.shipper",
"*.sender",
"*.receiver",
"*.recipient",
"*.addressee",
"*.consignee",
"*.consignor",
"*.vendor",
"*.supplier",
"*.provider",
"*.distributor",
"*.dealer",
"*.retailer",
"*.wholesaler",
"*.merchant",
"*.trader",
"*.seller",
"*.buyer",
"*.purchaser",
"*.customer",
"*.client",
"*.patron",
"*.consumer",
"*.user",
"*.operator",
"*.administrator",
"*.manager",
"*.director",
"*.executive",
"*.officer",
"*.official",
"*.authority",
"*.leader",
"*.chief",
"*.head",
"*.principal",
"*.supervisor",
"*.overseer",
"*.foreman",
"*.boss",
"*.employer",
"*.employee",
"*.worker",
"*.laborer",
]
}
}