프로젝트 폴더의 모든 파일을 반복하고 모든 .java 파일을 구문 분석 한 다음 일부 파일을 변경하는 IntelliJ 플러그인을 만들려고합니다. 문제는 문서를 읽은 후에 전체 프로젝트 폴더에서 파일을 반복하는 방법을 알지 못했기 때문에 PSI 파일을 사용할 수 있다고 생각하지만 확실하지 않습니다. 누구든지 이것을 달성하는 방법에 대해 알고 있거나 아이디어가 있습니까?IntelliJ 플러그인 프로젝트의 모든 파일을 반복하는 방법은 무엇입니까?
0
A
답변
0
가능한 방법은 다음과 같이 AllClassesGetter
을 사용하는 것이다
Processor<PsiClass> processor = new Processor<PsiClass>() {
@Override
public boolean process(PsiClass psiClass) {
// do your actual work here
return true;
}
};
AllClassesGetter.processJavaClasses(
new PlainPrefixMatcher(""),
project,
GlobalSearchScope.projectScope(project),
processor
);
processJavaClasses()
소정 범위 내의 주어진 접두어 일치 클래스 찾는다. 빈 접두사 및 GlobalSearchScope.projectScope()
을 사용하면 프로젝트에 선언 된 모든 클래스를 반복 할 수 있고 processor
에서 처리 할 수 있어야합니다. 프로세서가 PsiClass
의 인스턴스를 처리하므로 파일을 수동으로 구문 분석 할 필요가 없습니다. 클래스를 수정하려면 PsiClass
으로 표시된 트리를 변경하기 만하면됩니다.
1
프로젝트 콘텐츠의 모든 파일을 반복하려면 ProjectFileIndex.SERVICE.getInstance(project).iterateContent
을 사용할 수 있습니다.
그런 다음 (PsiManager#findFile)
에서 PSI files
을 가져 와서 Java (instanceof PsiJavaFile)인지 확인하고 원하는대로 수행 할 수 있습니다. 당신이 PSI를 필요로하지 않는 경우
, 당신은 단지 파일 형식
(VirtualFile#getFileType == JavaFileType.INSTANCE)
을 확인하고 문서 (FileDocumentManager#getDocument(file)) or VFS (LoadTextUtil#loadText, VfsUtil#saveText)
를 통해 수정을 수행 할 수 있습니다.
그것은 매력처럼 작동했습니다! 도와 줘서 고마워! –