@@ -19,18 +19,25 @@ class RustWorker(override val workerContext: WorkerContext) : LangWorker {
19
19
try {
20
20
val container = RustAnalyser ().analysis(job.code, job.fileSummary.location)
21
21
val relativePath = Path .of(workerContext.project.codeDir).relativize(Path .of(job.fileSummary.location))
22
- container.PackageName = calculatePackageName(
23
- relativePath.toString().replace(" /" , " ::" ).replace(" \\ " , " ." )
24
- )
22
+ container.PackageName = container.PackageName .fixPrefix(workerContext.project.codeDir)
23
+ container.FullName = relativePath.toString()
25
24
26
25
// update error packageName in here with a path
27
26
job.codeLines = job.code.lines()
28
27
container.DataStructures .map { ds ->
28
+ ds.FilePath = relativePath.toString()
29
29
ds.Imports = container.Imports
30
+ ds.NodeName = ds.NodeName .fixPrefix(workerContext.project.codeDir)
31
+ ds.Package = container.PackageName
30
32
31
33
ds.Content = CodeDataStructUtil .contentByPosition(job.codeLines, ds.Position )
32
34
ds.Functions .map {
35
+ it.Package = it.Package .fixPrefix(workerContext.project.codeDir)
33
36
it.Content = CodeDataStructUtil .contentByPosition(job.codeLines, it.Position )
37
+ it.FunctionCalls .map { call ->
38
+ call.Package = call.Package .fixPrefix(workerContext.project.codeDir)
39
+ call.NodeName = call.NodeName .fixPrefix(workerContext.project.codeDir)
40
+ }
34
41
}
35
42
}
36
43
@@ -100,4 +107,22 @@ class RustWorker(override val workerContext: WorkerContext) : LangWorker {
100
107
return " $modulePath ::$packageName "
101
108
}
102
109
}
103
- }
110
+ }
111
+
112
+ private fun String.fixPrefix (codeDir : String ): String {
113
+ var result = this ;
114
+ if (this .startsWith(codeDir)) {
115
+ result = result.substring(codeDir.length + 1 )
116
+ }
117
+
118
+ val pkgName = RustWorker .calculatePackageName(codeDir)
119
+ // codeDir remove last '/'
120
+ val codeDirParent = codeDir.substringBeforeLast(" /" )
121
+ val libPrefix = pkgName.removePrefix(codeDirParent)
122
+
123
+ if (this .contains(libPrefix)) {
124
+ result = result.substringAfter(libPrefix)
125
+ }
126
+
127
+ return result.removePrefix(" ::" )
128
+ }
0 commit comments