in analyzer/src/main/java/com/android/tools/sizereduction/analyzer/analyzers/ProjectAnalyzer.java [75:118]
private static ImmutableList<Suggestion> analyzeDirectory(
File rootDirectory,
Project project,
File directory,
ImmutableList<ProjectSuggester> projectSuggesters,
ImmutableList<ProjectTreeSuggester> suggesters) {
ImmutableList.Builder<Suggestion> resultBuilder = ImmutableList.<Suggestion>builder();
File[] files = directory.listFiles();
for (File file : files) {
String name = file.getName();
if (name.equals(".gradle") || name.equals(".idea") || name.equals("build")) {
continue;
}
if (file.isDirectory()) {
File buildFile = new File(file, Project.BUILD_GRADLE);
if (buildFile.exists()) {
Project subProject = Project.create(file, project);
resultBuilder.addAll(
analyzeProject(rootDirectory, subProject, file, projectSuggesters, suggesters));
} else {
// recurse, through directory under the same directory.
resultBuilder.addAll(
analyzeDirectory(rootDirectory, project, file, projectSuggesters, suggesters));
}
} else {
GradleContext context =
project != null ? project.getContext() : GradleContext.create(1, 1, false);
Path pathWithinModule =
project != null
? Paths.get(project.getProjectDirectory().getPath())
.relativize(Paths.get(file.getPath()))
: Paths.get(file.getName());
Path pathWithinRoot =
Paths.get(rootDirectory.getPath()).relativize(Paths.get(file.getPath()));
for (ProjectTreeSuggester suggester : suggesters) {
SystemFileData systemFileData =
new SystemFileData(file, pathWithinRoot, pathWithinModule);
resultBuilder.addAll(suggester.processProjectEntry(context, systemFileData));
}
}
}
return resultBuilder.build();
}