mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[vcs] IDEA-131106 Fix read action in pre-commit code analysis
This commit is contained in:
@@ -30,6 +30,7 @@ import com.intellij.openapi.progress.ProcessCanceledException;
|
||||
import com.intellij.openapi.progress.ProgressIndicator;
|
||||
import com.intellij.openapi.progress.ProgressManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Computable;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.vcs.AbstractVcsHelper;
|
||||
import com.intellij.openapi.vcs.CodeSmellDetector;
|
||||
@@ -120,14 +121,19 @@ public class CodeSmellDetectorImpl extends CodeSmellDetector {
|
||||
|
||||
if (progress != null && progress.isCanceled()) throw new ProcessCanceledException();
|
||||
|
||||
VirtualFile file = filesToCheck.get(i);
|
||||
final VirtualFile file = filesToCheck.get(i);
|
||||
|
||||
if (progress != null) {
|
||||
progress.setText(VcsBundle.message("searching.for.code.smells.processing.file.progress.text", file.getPresentableUrl()));
|
||||
progress.setFraction((double)i / (double)filesToCheck.size());
|
||||
}
|
||||
|
||||
final PsiFile psiFile = manager.findFile(file);
|
||||
final PsiFile psiFile = ApplicationManager.getApplication().runReadAction(new Computable<PsiFile>() {
|
||||
@Override
|
||||
public PsiFile compute() {
|
||||
return manager.findFile(file);
|
||||
}
|
||||
});
|
||||
if (psiFile != null) {
|
||||
final Document document = fileManager.getDocument(file);
|
||||
if (document != null) {
|
||||
@@ -156,11 +162,16 @@ public class CodeSmellDetectorImpl extends CodeSmellDetector {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private List<CodeSmellInfo> findCodeSmells(@NotNull PsiFile psiFile, final ProgressIndicator progress, @NotNull Document document) {
|
||||
private List<CodeSmellInfo> findCodeSmells(@NotNull final PsiFile psiFile, final ProgressIndicator progress, @NotNull final Document document) {
|
||||
final List<CodeSmellInfo> result = new ArrayList<CodeSmellInfo>();
|
||||
|
||||
DaemonCodeAnalyzerImpl codeAnalyzer = (DaemonCodeAnalyzerImpl)DaemonCodeAnalyzer.getInstance(myProject);
|
||||
List<HighlightInfo> infos = codeAnalyzer.runMainPasses(psiFile, document, progress);
|
||||
final DaemonCodeAnalyzerImpl codeAnalyzer = (DaemonCodeAnalyzerImpl)DaemonCodeAnalyzer.getInstance(myProject);
|
||||
List<HighlightInfo> infos = ApplicationManager.getApplication().runReadAction(new Computable<List<HighlightInfo>>() {
|
||||
@Override
|
||||
public List<HighlightInfo> compute() {
|
||||
return codeAnalyzer.runMainPasses(psiFile, document, progress);
|
||||
}
|
||||
});
|
||||
collectErrorsAndWarnings(infos, result, document);
|
||||
|
||||
return result;
|
||||
|
||||
Reference in New Issue
Block a user