private void ParseAccount() { if (Account == null) { Account = Account.ReadAccount(); } var encoding = Account.ConvertCriterionEncoding(); SitpulationEncoding = encoding; if (_whiteList == null) { _whiteList = new InspectFileWhiteListSetting( Account.WhiteList.Split('\n').Select(temp => temp.Replace("\r", "")).ToList()); } if (_includeFile == null) { _includeFile = new IncludeFileSetting( Account.FileInclude.Split('\n') .Select(temp => temp.Replace("\r", "")) .Where(temp => !string.IsNullOrEmpty(temp)) .ToList()); } }
/// <summary> /// 判断白名单是否非法 /// </summary> /// <returns>true 可以作为白名单 ,false 不可做白名单</returns> private bool ConformWhiteList() { try { var inspectFileWhiteListSetting = new InspectFileWhiteListSetting( new List <string>(Account.WhiteList.Split('\n').Select(temp => temp.Replace("\r", "")).ToList())); } catch (Exception e) { MessageBox.Show(e.Message, "白名单格式错误"); return(false); } return(true); }
public void ReadWhiteListSetting() { if (!System.IO.File.Exists(File)) { WriteFile(); } InspectFileWhiteListSetting inspectFileWhiteListSetting = InspectFileWhiteListSetting.ReadWhiteListSetting(File); var file = inspectFileWhiteListSetting.FileRegexWhiteList; var folder = inspectFileWhiteListSetting.FolderWhiteList; string str = @"1.png 1.jpg 1.tmp 1.exe 1.mp4 1.snk 1.pfx 1.zip 1.rar 1.7z 1.cer"; TestRegexFile(file, str, true); str = "1.png1"; Assert.AreEqual((new Regex(".*\\.png$")).IsMatch(str), false); TestRegexFile(file, str, false); str = @".git obj bin packages"; foreach (var temp in str.Split('\n').Select(temp => temp.Replace("\r", ""))) { Assert.AreEqual(folder.Any(t => t == temp), true); } }
private static void ParseCommand(CommandLineArgumentParser arguments) { ConformCommand(arguments); string folder = arguments.Get(FolderCommand).Next; if (string.IsNullOrEmpty(folder)) { throw new ArgumentCommadnException(NoFolderArgException); } // 如果输入 "E:\lindexi\EncodingNormalior\" 那么命令行将会传入 E:\lindexi\EncodingNormalior\" 字符串 if (folder.EndsWith("\"")) { folder = folder.Substring(0, folder.Length - 1); } folder = Path.GetFullPath(folder); if (!Directory.Exists(folder)) { throw new ArgumentCommadnException("不存在文件夹" + folder); } EncodingScrutatorFolder encodingScrutatorFolder = new EncodingScrutatorFolder(new DirectoryInfo(folder)); if (arguments.Has(IncludeFileCommand)) { var includeFile = arguments.Get(IncludeFileCommand).Take(); var wildCardFile = /*IncludeFileSetting.ReadIncludeFile(includeFile);*/ new FileInfo(includeFile); IncludeFileSetting includeFileSetting = new IncludeFileSetting(wildCardFile); encodingScrutatorFolder.IncludeFileSetting = includeFileSetting; } if (arguments.Has(EncodingCommand)) { string encodingCommand = arguments.Get(EncodingCommand).Take(); encodingCommand = encodingCommand.ToLower(); Encoding encoding; switch (encodingCommand) { case "utf8": case "utf-8": encoding = Encoding.UTF8; break; case "gbk": encoding = Encoding.GetEncoding("gbk"); break; case "bigendianunicode": encoding = Encoding.BigEndianUnicode; break; default: throw new ArgumentException("输入无法识别编码"); } encodingScrutatorFolder.SitpulationEncodingSetting = new SitpulationEncodingSetting() { SitpulationEncoding = encoding }; } if (arguments.Has(WhiteListCommand)) { var whiteListFile = arguments.Get(WhiteListCommand).Take(); encodingScrutatorFolder.InspectFileWhiteListSetting = InspectFileWhiteListSetting.ReadWhiteListSetting(whiteListFile); } encodingScrutatorFolder.InspectFolderEncoding(); var output = PintnoConformEncodingFile(encodingScrutatorFolder); if (arguments.Has(Quiet) && bool.TryParse(arguments.Get(Quiet).Take(), out var shouldQuiet) && shouldQuiet is true) { // 如果需要静默,那么什么都不输出 } else { Console.WriteLine(output); } if (IllicitFile.Count > 0) { if (arguments.Has(TryFixCommand)) { var tryFix = arguments.Get(TryFixCommand).Take(); if (bool.TryParse(tryFix.ToString(), out var value) && value is true) { TryFix(encodingScrutatorFolder); return; } } StringBuilder str = new StringBuilder(); str.Append($"存在不符合规范文件: {IllicitFile.Count}\r\n"); foreach (var temp in IllicitFile) { str.Append(temp.File.FullName + "\r\n"); } str.Append("可采用如下命令修复文件编码:") .Append("\r\n") // 强行规定换行 // 下面使用 dotnet tool update 的 update 是预期的,这个命令的意思是在没有安装的时候安装,有安装的时候更新 .Append("dotnet tool update -g dotnetCampus.EncodingNormalior") .Append("\r\n") .Append($"EncodingNormalior -f \"{encodingScrutatorFolder.FaceFolder.FullName}\" --TryFix true") .Append("\r\n") .Append("或安装编码规范 VS 插件工具:https://marketplace.visualstudio.com/items?itemName=lindexigd.vs-extension-18109") .Append("\r\n"); throw new EncodingNormaliorException(str.ToString()); } else { Console.WriteLine("恭喜你,没有存在不规范文件\r\n"); } }
private static void ParseCommand(CommandLineArgumentParser arguments) { ConformCommand(arguments); var folder = arguments.Get(FolderCommand).Next; if (string.IsNullOrEmpty(folder)) { throw new ArgumentCommadnException(NoFolderArgException); } if (!Directory.Exists(folder)) { throw new ArgumentCommadnException("不存在文件夹" + folder); } EncodingScrutatorFolder encodingScrutatorFolder = new EncodingScrutatorFolder(new DirectoryInfo(folder)); if (arguments.Has(IncludeFileCommand)) { var includeFile = arguments.Get(IncludeFileCommand).Take(); var wildCardFile = /*IncludeFileSetting.ReadIncludeFile(includeFile);*/ new FileInfo(includeFile); IncludeFileSetting includeFileSetting = new IncludeFileSetting(wildCardFile); encodingScrutatorFolder.IncludeFileSetting = includeFileSetting; } if (arguments.Has(EncodingCommand)) { string encodingCommand = arguments.Get(EncodingCommand).Take(); encodingCommand = encodingCommand.ToLower(); Encoding encoding; switch (encodingCommand) { case "utf8": case "utf-8": encoding = Encoding.UTF8; break; case "gbk": encoding = Encoding.GetEncoding("gbk"); break; case "bigendianunicode": encoding = Encoding.BigEndianUnicode; break; default: throw new ArgumentException("输入无法识别编码"); } encodingScrutatorFolder.SitpulationEncodingSetting = new SitpulationEncodingSetting() { SitpulationEncoding = encoding }; } if (arguments.Has(WhiteListCommand)) { var whiteListFile = arguments.Get(WhiteListCommand).Take(); encodingScrutatorFolder.InspectFileWhiteListSetting = InspectFileWhiteListSetting.ReadWhiteListSetting(whiteListFile); } encodingScrutatorFolder.InspectFolderEncoding(); Console.WriteLine(PintnoConformEncodingFile(encodingScrutatorFolder)); if (_illicitFile.Count > 0) { StringBuilder str = new StringBuilder(); str.Append($"存在不符合规范文件: {_illicitFile.Count}\r\n"); foreach (var temp in _illicitFile) { str.Append(temp.File.FullName + "\r\n"); } throw new Exception(str.ToString()); } else { Console.WriteLine("恭喜你,没有存在不规范文件\r\n"); } }