Skip to content

Commit c895202

Browse files
committed
add index validation for ContainerBuilderStubIndex
1 parent 2a3a9eb commit c895202

File tree

1 file changed

+35
-1
lines changed

1 file changed

+35
-1
lines changed

src/fr/adrienbrault/idea/symfony2plugin/stubs/indexes/ContainerBuilderStubIndex.java

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package fr.adrienbrault.idea.symfony2plugin.stubs.indexes;
22

3+
import com.intellij.openapi.vfs.VfsUtil;
34
import com.intellij.psi.PsiElement;
45
import com.intellij.psi.PsiFile;
56
import com.intellij.psi.PsiRecursiveElementVisitor;
@@ -14,6 +15,7 @@
1415
import com.jetbrains.php.lang.psi.PhpFile;
1516
import com.jetbrains.php.lang.psi.elements.*;
1617
import fr.adrienbrault.idea.symfony2plugin.Symfony2InterfacesUtil;
18+
import fr.adrienbrault.idea.symfony2plugin.Symfony2ProjectComponent;
1719
import fr.adrienbrault.idea.symfony2plugin.dic.container.dict.ContainerBuilderCall;
1820
import fr.adrienbrault.idea.symfony2plugin.stubs.indexes.externalizer.ObjectStreamDataExternalizer;
1921
import gnu.trove.THashMap;
@@ -24,12 +26,19 @@
2426
import java.util.Set;
2527

2628

29+
/**
30+
* @author Daniel Espendiller <daniel@espendiller.net>
31+
*
32+
* @see fr.adrienbrault.idea.symfony2plugin.stubs.indexes.ContainerBuilderStubIndex
33+
*/
2734
public class ContainerBuilderStubIndex extends FileBasedIndexExtension<String, ContainerBuilderCall> {
2835

2936
public static final ID<String, ContainerBuilderCall> KEY = ID.create("fr.adrienbrault.idea.symfony2plugin.container_builder");
3037
private final KeyDescriptor<String> myKeyDescriptor = new EnumeratorStringDescriptor();
3138
private final static ObjectStreamDataExternalizer<ContainerBuilderCall> EXTERNALIZER = new ObjectStreamDataExternalizer<>();
3239

40+
private static int MAX_FILE_BYTE_SIZE = 2621440;
41+
3342
private static final Set<String> SET = new HashSet<String>() {{
3443
add("Symfony\\Component\\DependencyInjection\\Container");
3544
add("Symfony\\Component\\DependencyInjection\\ContainerBuilder");
@@ -53,7 +62,11 @@ public DataIndexer<String, ContainerBuilderCall, FileContent> getIndexer() {
5362
Map<String, ContainerBuilderCall> map = new THashMap<>();
5463

5564
PsiFile psiFile = inputData.getPsiFile();
56-
if(!(psiFile instanceof PhpFile)) {
65+
if(!(psiFile instanceof PhpFile) ||
66+
!Symfony2ProjectComponent.isEnabledForIndex(psiFile.getProject()) ||
67+
!isValidForIndex(inputData, psiFile)
68+
){
69+
5770
return map;
5871
}
5972

@@ -97,6 +110,27 @@ public int getVersion() {
97110
return 1;
98111
}
99112

113+
private static boolean isValidForIndex(FileContent inputData, PsiFile psiFile) {
114+
115+
String fileName = psiFile.getName();
116+
if(fileName.startsWith(".") || fileName.contains("Test")) {
117+
return false;
118+
}
119+
120+
// is Test file in path name
121+
String relativePath = VfsUtil.getRelativePath(inputData.getFile(), psiFile.getProject().getBaseDir(), '/');
122+
if(relativePath != null && (relativePath.contains("/Test/") || relativePath.contains("/Tests/") || relativePath.contains("/Fixture/") || relativePath.contains("/Fixtures/"))) {
123+
return false;
124+
}
125+
126+
// dont index files larger then files; use 5 MB here
127+
if(inputData.getFile().getLength() > MAX_FILE_BYTE_SIZE) {
128+
return false;
129+
}
130+
131+
return true;
132+
}
133+
100134
private class MyPsiRecursiveElementWalkingVisitor extends PsiRecursiveElementVisitor {
101135

102136
private final Map<String, ContainerBuilderCall> map;

0 commit comments

Comments
 (0)