Skip to content

Commit 26c7f16

Browse files
authored
remove unuse and not needed functions in FileCrawler interface (#4788)
1 parent c79176a commit 26c7f16

File tree

7 files changed

+18
-173
lines changed

7 files changed

+18
-173
lines changed

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererFileContextProvider.kt

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -136,19 +136,23 @@ class DefaultCodeWhispererFileContextProvider(private val project: Project) : Fi
136136

137137
return supplementalContext?.let {
138138
if (it.contents.isNotEmpty()) {
139-
LOG.info { "Successfully fetched supplemental context." }
140-
it.contents.forEachIndexed { index, chunk ->
141-
LOG.info {
142-
"""
143-
|---------------------------------------------------------------
144-
| Chunk $index:
139+
val logStr = buildString {
140+
append("Successfully fetched supplemental context.")
141+
it.contents.forEachIndexed { index, chunk ->
142+
append(
143+
"""
144+
|
145+
| Chunk ${index + 1}:
145146
| path = ${chunk.path},
146147
| score = ${chunk.score},
147-
| content = ${chunk.content}
148-
|----------------------------------------------------------------
149-
""".trimMargin()
148+
| contentLength = ${chunk.content.length}
149+
|
150+
""".trimMargin()
151+
)
150152
}
151153
}
154+
155+
LOG.info { logStr }
152156
} else {
153157
LOG.warn { "Failed to fetch supplemental context, empty list." }
154158
}

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererFileCrawler.kt

Lines changed: 5 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -20,21 +20,8 @@ import software.aws.toolkits.jetbrains.services.codewhisperer.model.ListUtgCandi
2020
* since different language has its own way importing other files or its own naming style for test file
2121
*/
2222
interface FileCrawler {
23-
/**
24-
* parse the import statements provided a file
25-
* @param psiFile of the file we are search with
26-
* @return list of file reference from the import statements
27-
*/
28-
suspend fun listFilesImported(psiFile: PsiFile): List<VirtualFile>
29-
3023
fun listFilesUnderProjectRoot(project: Project): List<VirtualFile>
3124

32-
/**
33-
* @param psiFile the file we are searching with, aka target file
34-
* @return Files under the same package as the given file and exclude the given file
35-
*/
36-
fun listFilesWithinSamePackage(psiFile: PsiFile): List<VirtualFile>
37-
3825
/**
3926
* should be invoked at test files e.g. MainTest.java, or test_main.py
4027
* @param target psi of the test file we are searching with, e.g. MainTest.java
@@ -59,12 +46,9 @@ interface FileCrawler {
5946
}
6047

6148
class NoOpFileCrawler : FileCrawler {
62-
override suspend fun listFilesImported(psiFile: PsiFile): List<VirtualFile> = emptyList()
63-
6449
override fun listFilesUnderProjectRoot(project: Project): List<VirtualFile> = emptyList()
65-
override fun listUtgCandidate(target: PsiFile) = ListUtgCandidateResult(null, UtgStrategy.Empty)
6650

67-
override fun listFilesWithinSamePackage(psiFile: PsiFile): List<VirtualFile> = emptyList()
51+
override fun listUtgCandidate(target: PsiFile) = ListUtgCandidateResult(null, UtgStrategy.Empty)
6852

6953
override fun listCrossFileCandidate(target: PsiFile): List<VirtualFile> = emptyList()
7054

@@ -99,17 +83,6 @@ abstract class CodeWhispererFileCrawler : FileCrawler {
9983
}
10084
}.orEmpty()
10185

102-
override fun listFilesWithinSamePackage(psiFile: PsiFile): List<VirtualFile> = runReadAction {
103-
psiFile.containingDirectory?.files?.mapNotNull {
104-
// exclude target file
105-
if (it != psiFile) {
106-
it.virtualFile
107-
} else {
108-
null
109-
}
110-
}.orEmpty()
111-
}
112-
11386
override fun listCrossFileCandidate(target: PsiFile): List<VirtualFile> {
11487
val targetFile = target.virtualFile
11588

@@ -123,7 +96,7 @@ abstract class CodeWhispererFileCrawler : FileCrawler {
12396

12497
val fileToFileDistanceList = runReadAction {
12598
openedFiles.map {
126-
return@map it to CodeWhispererFileCrawler.getFileDistance(targetFile = targetFile, candidateFile = it)
99+
return@map it to CodeWhispererFileCrawler.getFileDistance(fileA = targetFile, fileB = it)
127100
}
128101
}
129102

@@ -202,15 +175,14 @@ abstract class CodeWhispererFileCrawler : FileCrawler {
202175
}
203176
}
204177

205-
// TODO: move to CodeWhispererUtils.kt
206178
/**
207179
* For [LocalFileSystem](implementation of virtual file system), the path will be an absolute file path with file separator characters replaced
208180
* by forward slash "/"
209181
* @see [VirtualFile.getPath]
210182
*/
211-
fun getFileDistance(targetFile: VirtualFile, candidateFile: VirtualFile): Int {
212-
val targetFilePaths = targetFile.path.split("/").dropLast(1)
213-
val candidateFilePaths = candidateFile.path.split("/").dropLast(1)
183+
fun getFileDistance(fileA: VirtualFile, fileB: VirtualFile): Int {
184+
val targetFilePaths = fileA.path.split("/").dropLast(1)
185+
val candidateFilePaths = fileB.path.split("/").dropLast(1)
214186

215187
var i = 0
216188
while (i < minOf(targetFilePaths.size, candidateFilePaths.size)) {

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/JavaCodeWhispererFileCrawler.kt

Lines changed: 0 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,11 @@
33

44
package software.aws.toolkits.jetbrains.services.codewhisperer.util
55

6-
import com.intellij.openapi.application.runReadAction
7-
import com.intellij.openapi.fileEditor.FileEditorManager
86
import com.intellij.openapi.module.ModuleUtilCore
97
import com.intellij.openapi.project.rootManager
108
import com.intellij.openapi.vfs.VfsUtil
119
import com.intellij.openapi.vfs.VirtualFile
1210
import com.intellij.psi.PsiFile
13-
import com.intellij.psi.PsiJavaFile
14-
import com.intellij.psi.PsiPackage
15-
import com.intellij.psi.search.GlobalSearchScope
16-
import kotlinx.coroutines.yield
1711
import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes
1812
import software.aws.toolkits.core.utils.getLogger
1913
import software.aws.toolkits.core.utils.warn
@@ -29,48 +23,6 @@ object JavaCodeWhispererFileCrawler : CodeWhispererFileCrawler() {
2923
Regex("""^(.+)Tests(\.java)$""")
3024
)
3125

32-
override suspend fun listFilesImported(psiFile: PsiFile): List<VirtualFile> {
33-
if (psiFile !is PsiJavaFile) return emptyList()
34-
val result = mutableListOf<VirtualFile>()
35-
val imports = runReadAction { psiFile.importList?.allImportStatements }
36-
val activeFiles = FileEditorManager.getInstance(psiFile.project).openFiles.toSet()
37-
38-
// only consider imported files which belong users' own package, thus [isInLocalFileSystem && isWritable]
39-
val fileHandleLambda = { virtualFile: VirtualFile ->
40-
if (virtualFile.isInLocalFileSystem && virtualFile.isWritable) {
41-
// prioritize active files on users' editor
42-
if (activeFiles.contains(virtualFile)) {
43-
result.add(0, virtualFile)
44-
} else {
45-
result.add(virtualFile)
46-
}
47-
}
48-
}
49-
50-
imports?.forEach {
51-
yield()
52-
runReadAction { it.resolve() }?.let { psiElement ->
53-
// case like import javax.swing.*;
54-
if (psiElement is PsiPackage) {
55-
val filesInPackage = psiElement.getFiles(GlobalSearchScope.allScope(psiFile.project)).mapNotNull { it.virtualFile }
56-
filesInPackage.forEach { file ->
57-
fileHandleLambda(file)
58-
}
59-
} else {
60-
// single file import
61-
runReadAction {
62-
psiElement.containingFile.virtualFile?.let { virtualFile ->
63-
// file within users' project
64-
fileHandleLambda(virtualFile)
65-
}
66-
}
67-
}
68-
}
69-
}
70-
71-
return result
72-
}
73-
7426
// psiFile = "MainTest.java", targetFileName = "Main.java"
7527
override fun findSourceFileByName(target: PsiFile): VirtualFile? =
7628
guessSourceFileName(target.virtualFile.name)?.let { srcName ->

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/JavascriptCodeWhispererFileCrawler.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ object JavascriptCodeWhispererFileCrawler : CodeWhispererFileCrawler() {
1414
Regex("""^(.+)\.(?i:s)pec(\.js|\.jsx)$""")
1515
)
1616

17-
override suspend fun listFilesImported(psiFile: PsiFile): List<VirtualFile> = emptyList()
18-
1917
override fun findSourceFileByName(target: PsiFile): VirtualFile? = null
2018

2119
override fun findSourceFileByContent(target: PsiFile): VirtualFile? = null

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/PythonCodeWhispererFileCrawler.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ object PythonCodeWhispererFileCrawler : CodeWhispererFileCrawler() {
1717
Regex("""^(.+)_test(\.py)$""")
1818
)
1919

20-
override suspend fun listFilesImported(psiFile: PsiFile): List<VirtualFile> = emptyList()
21-
2220
override fun findSourceFileByName(target: PsiFile): VirtualFile? = super.listFilesUnderProjectRoot(target.project).find {
2321
!it.isDirectory &&
2422
it.isWritable &&

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/TypescriptCodeWhispererFileCrawler.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ object TypescriptCodeWhispererFileCrawler : CodeWhispererFileCrawler() {
1414
Regex("""^(.+)\.(?i:s)pec(\.ts|\.tsx)$""")
1515
)
1616

17-
override suspend fun listFilesImported(psiFile: PsiFile): List<VirtualFile> = emptyList()
18-
1917
override fun findSourceFileByName(target: PsiFile): VirtualFile? = null
2018

2119
override fun findSourceFileByContent(target: PsiFile): VirtualFile? = null

plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererFileCrawlerTest.kt

Lines changed: 0 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,11 @@ package software.aws.toolkits.jetbrains.services.codewhisperer
66
import com.intellij.openapi.application.runReadAction
77
import com.intellij.openapi.editor.EditorFactory
88
import com.intellij.openapi.project.Project
9-
import com.intellij.openapi.vfs.VirtualFile
109
import com.intellij.psi.PsiFile
1110
import com.intellij.testFramework.DisposableRule
1211
import com.intellij.testFramework.ExtensionTestUtil
1312
import com.intellij.testFramework.fixtures.CodeInsightTestFixture
1413
import com.intellij.testFramework.runInEdtAndWait
15-
import kotlinx.coroutines.runBlocking
1614
import org.assertj.core.api.Assertions.assertThat
1715
import org.junit.Before
1816
import org.junit.Rule
@@ -262,81 +260,6 @@ class JavaCodeWhispererFileCrawlerTest {
262260
}
263261
}
264262

265-
@Test
266-
fun `listFilesWithinSamePackage`() {
267-
val targetFile = fixture.addFileToProject("/utils/AnotherClass.java", "")
268-
val file2Package1 = fixture.addFileToProject("/utils/NotImported.java", "")
269-
val file3Package1 = fixture.addFileToProject("/utils/NotImported2.java", "")
270-
fixture.addFileToProject("Main.java", "")
271-
fixture.addFileToProject("service/controllers/MyController.java", "")
272-
273-
runReadAction {
274-
val actual = sut.listFilesWithinSamePackage(targetFile)
275-
val expected = listOf<PsiFile>(file2Package1, file3Package1)
276-
.map { it.virtualFile }
277-
.toSet()
278-
279-
assertThat(actual).hasSize(expected.size)
280-
actual.forEach {
281-
assertThat(expected.contains(it)).isTrue
282-
}
283-
}
284-
}
285-
286-
@Test
287-
fun `findFilesImported`() {
288-
val mainClass = fixture.addFileToProject(
289-
"Main.java",
290-
"""
291-
package com.cw.file_crawler_test;
292-
293-
import java.util.Map;
294-
import java.util.regex.Pattern;
295-
296-
import com.cw.file_crawler_test.utils.AnotherClass;
297-
import com.cw.file_crawler_test.service.controllers.MyController;
298-
299-
public class Main {
300-
};
301-
""".trimIndent()
302-
)
303-
304-
val controllerClass = fixture.addFileToProject(
305-
"service/controllers/MyController.java",
306-
"""
307-
package com.cw.file_crawler_test.service.controllers;
308-
309-
public class MyController {}
310-
""".trimIndent()
311-
)
312-
313-
val anotherClass = fixture.addFileToProject(
314-
"/utils/AnotherClass.java",
315-
"""
316-
package com.cw.file_crawler_test.utils;
317-
318-
public class AnotherClass {}
319-
""".trimIndent()
320-
)
321-
322-
fun assertCrawlerFindCorrectFiles(sut: CodeWhispererFileCrawler) {
323-
runReadAction {
324-
val expected = setOf<VirtualFile>(controllerClass.virtualFile, anotherClass.virtualFile)
325-
val actualFiles = runBlocking { sut.listFilesImported(mainClass) }
326-
327-
assertThat(actualFiles).hasSize(2)
328-
actualFiles.forEach {
329-
assertThat(expected).contains(it)
330-
}
331-
}
332-
}
333-
334-
assertCrawlerFindCorrectFiles(JavaCodeWhispererFileCrawler)
335-
// can't make it work right since the temp file created is not in the real file system
336-
// Naive crawler will actually read the file system thun unable to find files
337-
// assertCrawlerFindCorrectFiles(NaiveJavaCodeWhispererFileCrawler(project))
338-
}
339-
340263
@Test
341264
fun `listUtgCandidate by name`() {
342265
val mainPsi = fixture.addFileToProject("Main.java", aString())

0 commit comments

Comments
 (0)