mirror of
https://github.com/jlengrand/detekt.git
synced 2026-03-10 08:11:23 +00:00
Use absolute path for location's file property - Closes#6
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package io.gitlab.arturbosch.detekt.api
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.testFramework.LightVirtualFile
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticUtils
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getTextWithLocation
|
||||
@@ -101,7 +102,7 @@ data class Location(val source: SourceLocation,
|
||||
val file: String) : Compactable {
|
||||
|
||||
override fun compact(): String {
|
||||
return "Line/Column=$source - CharRange=$text - $file"
|
||||
return "Line/Column=$source - CharRange=$text - Path=$file"
|
||||
}
|
||||
|
||||
companion object {
|
||||
@@ -109,8 +110,13 @@ data class Location(val source: SourceLocation,
|
||||
val start = startLineAndColumn(element)
|
||||
val sourceLocation = SourceLocation(start.line, start.column)
|
||||
val textLocation = TextLocation(element.startOffset, element.endOffset)
|
||||
val fileName = element.originalFilePath() ?: element.containingFile.name
|
||||
return Location(sourceLocation, textLocation,
|
||||
element.getTextWithLocation(), element.containingFile.name)
|
||||
element.getTextWithLocation(), fileName)
|
||||
}
|
||||
|
||||
private fun PsiElement.originalFilePath(): String? {
|
||||
return (this.containingFile.viewProvider.virtualFile as LightVirtualFile).originalFile?.name
|
||||
}
|
||||
|
||||
private fun startLineAndColumn(element: PsiElement) = DiagnosticUtils.getLineAndColumnInPsiFile(
|
||||
|
||||
@@ -2,6 +2,7 @@ package io.gitlab.arturbosch.detekt.core
|
||||
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import com.intellij.psi.PsiFileFactory
|
||||
import com.intellij.testFramework.LightVirtualFile
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
@@ -25,9 +26,10 @@ class KtCompiler {
|
||||
|
||||
fun compile(path: Path): KtFile {
|
||||
require(path.isFile()) { "Given path should be a regular file!" }
|
||||
val file = path.normalize()
|
||||
val file = path.normalize().toAbsolutePath()
|
||||
val content = String(Files.readAllBytes(file))
|
||||
return psiFileFactory.createFileFromText(file.fileName.toString(), KotlinLanguage.INSTANCE, content) as KtFile
|
||||
return psiFileFactory.createFileFromText(file.fileName.toString(), KotlinLanguage.INSTANCE,
|
||||
content, true, true, false, LightVirtualFile(file.toString())) as KtFile
|
||||
}
|
||||
|
||||
fun compileFromText(content: String): KtFile {
|
||||
|
||||
Reference in New Issue
Block a user