refactor AbpModuleClassFinder

pull/1466/head^2
Yunus Emre Kalkan 7 years ago
parent 93345d0819
commit c4a61242d8

@ -11,34 +11,29 @@ namespace Volo.Abp.ProjectModification
{
public virtual List<string> Find(string csprojFilePath)
{
var modules = new List<string>();
var moduleFilePaths = new List<string>();
var csFiles = GetAllCsFilesUnderDirectory(Path.GetDirectoryName(csprojFilePath), new List<string>());
foreach (var csFile in csFiles)
{
var root = CSharpSyntaxTree.ParseText(File.ReadAllText(csFile)).GetRoot();
var namespaceSyntaxs = root.DescendantNodes().OfType<NamespaceDeclarationSyntax>();
foreach (var namespaceSyntax in namespaceSyntaxs)
if (IsDerivedFromAbpModule(csFile))
{
var classDeclarationSyntaxs = namespaceSyntax.DescendantNodes().OfType<ClassDeclarationSyntax>();
var syntaxsArray = classDeclarationSyntaxs as ClassDeclarationSyntax[] ?? classDeclarationSyntaxs.ToArray();
foreach (var classDeclaration in syntaxsArray)
{
var classDerivedFromAbpModule = classDeclaration.BaseList?.Types.FirstOrDefault(t => t.ToString().Contains("AbpModule"));
if (classDerivedFromAbpModule != null)
{
modules.Add(csFile);
}
}
moduleFilePaths.Add(csFile);
}
}
return modules;
return moduleFilePaths;
}
private bool IsDerivedFromAbpModule(string csFile)
{
var root = CSharpSyntaxTree.ParseText(File.ReadAllText(csFile)).GetRoot();
var namespaceSyntax = root.DescendantNodes().OfType<NamespaceDeclarationSyntax>().First();
var classDeclaration = (namespaceSyntax.DescendantNodes().OfType<ClassDeclarationSyntax>()).First();
return classDeclaration.BaseList?.Types
.Any(t => t.ToString().Contains("AbpModule")) ?? false;
}
protected virtual List<string> GetAllCsFilesUnderDirectory(string path, List<string> allCsFileList)

Loading…
Cancel
Save