in src/main/kotlin/org/jetbrains/qodana/requests.kt [213:233]
override suspend fun execute(state: SarifLanguageServer.ServerState) {
if (!state.openFileCache.containsKey(uri)) return // we no longer need this file
val locator = state.gitLocator?.value
val repoFolder = state.repoFolder
if (locator == null || repoFolder == null) {
logger.warn("Repo for $uri in folder $repoFolder having revision ${state.sarifRevision}")
return
}
var analyzedVersion: String? = null
// we need to iterate both repo folder and path prefix to support submodules
for (folder in listOfNotNull(repoFolder, state.pathPrefix)) {
val relPathToFile = getRelativePath(uri, folder) ?: continue
analyzedVersion = locator.retrieveFile(relPathToFile)
if (analyzedVersion != null) break
}
if (analyzedVersion == null) {
logger.error("Failed to get file ${getRelativePath(uri, repoFolder)} for ${state.sarifRevision} in ${state.repoFolder}")
return
}
state.repositoryFileCache?.put(uri, analyzedVersion)
}