Попытки в мультипарсинг

This commit is contained in:
2026-07-24 13:47:21 +04:00
parent b2a13528ee
commit eb8dac7627
22 changed files with 1486 additions and 37 deletions

View File

@@ -0,0 +1,52 @@
namespace CodeBase.Services
{
public class UniversalFileFilter
{
// 1. Оставляем только те языки, которые нам реально интересны
private readonly HashSet<string> _allowedExtensions = new(StringComparer.OrdinalIgnoreCase)
{
".cs", ".py", ".go", ".ts", ".js", ".java", ".cpp", ".c", ".h", ".json"
};
// 2. Глобальные папки с мусором и зависимостями (универсально для разных стеков)
private readonly string[] _ignoredDirectories =
{
"/obj/", "\\obj\\",
"/bin/", "\\bin\\",
"/node_modules/", "\\node_modules\\",
"/venv/", "\\venv\\",
"/.env/", "\\.env\\",
"/dist/", "\\dist\\",
"/build/", "\\build\\",
"/.git/", "\\.git\\"
};
// 3. Паттерны автосгенерированных файлов
private readonly string[] _ignoredFileSuffixes =
{
".g.cs",
".designer.cs",
".generated.cs",
"AssemblyInfo.cs"
};
public bool IsValidCodeFile(string relativePath)
{
if (string.IsNullOrWhiteSpace(relativePath)) return false;
// Проверка 1: Расширение файла
var ext = Path.GetExtension(relativePath);
if (!_allowedExtensions.Contains(ext)) return false;
// Проверка 2: Находится ли файл в мусорной папке
if (_ignoredDirectories.Any(dir => relativePath.Contains(dir, StringComparison.OrdinalIgnoreCase)))
return false;
// Проверка 3: Является ли файл автосгенерированным
if (_ignoredFileSuffixes.Any(suffix => relativePath.EndsWith(suffix, StringComparison.OrdinalIgnoreCase)))
return false;
return true;
}
}
}