SonarLint 抛出 IllegalStateException -> 无法读取本地问题存储索引
SonarLint throws IllegalStateException -> Failed to read local issue store index
我目前正在使用 Eclipse 和 Java 从事我的工作。我们应该使用 SonarLint 来获得更清晰的代码,并且“直到昨天一切都很好”。
但是昨天早上,当我打开 Eclipse 时,SonarLint 向我抛出以下错误消息。
我已经在Google中搜索过了,删除了.sonarlint文件夹,还有eclipse的settings文件夹和eclipse-workspace里面的.sonarlint文件夹。他们每个人都通过重新启动 eclipse 重新创建,但这里没有任何帮助。我仍然收到错误消息:
Starting SonarLint for Eclipse 4.2.0.201909192007
SonarLint processing file /rap-server-core/src/main/java/com/rapidclipse/framework/server/ui/filter/FilterComponent.java...
Starting standalone SonarLint engine 4.2.0.201909192007...
Found 17 issue(s)
Error during execution of SonarLint analysis
java.lang.IllegalStateException: Failed to read local issue store index
at org.sonarlint.eclipse.core.internal.tracking.StringStoreIndex.load(StringStoreIndex.java:55)
at org.sonarlint.eclipse.core.internal.tracking.StringStoreIndex.keys(StringStoreIndex.java:45)
at org.sonarlint.eclipse.core.internal.tracking.IndexedObjectStore.deleteInvalid(IndexedObjectStore.java:78)
at org.sonarlint.eclipse.core.internal.tracking.IssueStore.<init>(IssueStore.java:62)
at org.sonarlint.eclipse.core.internal.SonarLintCorePlugin.lambda[=10=](SonarLintCorePlugin.java:102)
at org.sonarlint.eclipse.core.internal.tracking.IssueTrackerRegistry.newTracker(IssueTrackerRegistry.java:54)
at org.sonarlint.eclipse.core.internal.tracking.IssueTrackerRegistry.getOrCreate(IssueTrackerRegistry.java:43)
at org.sonarlint.eclipse.core.internal.SonarLintCorePlugin.getOrCreateIssueTracker(SonarLintCorePlugin.java:146)
at org.sonarlint.eclipse.core.internal.jobs.AbstractAnalyzeProjectJob.trackIssues(AbstractAnalyzeProjectJob.java:317)
at org.sonarlint.eclipse.core.internal.jobs.AbstractAnalyzeProjectJob.lambda(AbstractAnalyzeProjectJob.java:302)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2295)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2317)
at org.sonarlint.eclipse.core.internal.jobs.AbstractAnalyzeProjectJob.updateMarkers(AbstractAnalyzeProjectJob.java:302)
at org.sonarlint.eclipse.core.internal.jobs.AbstractAnalyzeProjectJob.runAnalysisAndUpdateMarkers(AbstractAnalyzeProjectJob.java:209)
at org.sonarlint.eclipse.core.internal.jobs.AbstractAnalyzeProjectJob.doRun(AbstractAnalyzeProjectJob.java:169)
at org.sonarlint.eclipse.core.internal.jobs.AbstractSonarProjectJob.run(AbstractSonarProjectJob.java:45)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: com.google.protobuf.InvalidProtocolBufferException: Protocol message contained an invalid tag (zero).
at com.google.protobuf.InvalidProtocolBufferException.invalidTag(InvalidProtocolBufferException.java:102)
at com.google.protobuf.CodedInputStream$StreamDecoder.readTag(CodedInputStream.java:2066)
at org.sonarlint.eclipse.core.internal.proto.Sonarlint$StorageIndex.<init>(Sonarlint.java:2496)
at org.sonarlint.eclipse.core.internal.proto.Sonarlint$StorageIndex.<init>(Sonarlint.java:2482)
at org.sonarlint.eclipse.core.internal.proto.Sonarlint$StorageIndex.parsePartialFrom(Sonarlint.java:3126)
at org.sonarlint.eclipse.core.internal.proto.Sonarlint$StorageIndex.parsePartialFrom(Sonarlint.java:1)
at com.google.protobuf.AbstractParser.parsePartialFrom(AbstractParser.java:215)
at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:232)
at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:237)
at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:48)
at com.google.protobuf.GeneratedMessageV3.parseWithIOException(GeneratedMessageV3.java:332)
at org.sonarlint.eclipse.core.internal.proto.Sonarlint$StorageIndex.parseFrom(Sonarlint.java:2746)
at org.sonarlint.eclipse.core.internal.tracking.StringStoreIndex.load(StringStoreIndex.java:53)
... 16 more
我不知道问题出在哪里,正如我所说 google 帮不了我太多(也许我只是因为 google idk 太蠢了)
我刚刚重新安装了 Eclipse...现在一切正常了。
我仍然不知道是什么问题导致了这个错误,但现在它已经消失了,我只希望它永远不会回来 :D
为了重装,我只删除了所有与eclipse有关的文件夹。当然,我的工作区文件夹除外^^
我遇到了同样的问题。
我曾尝试从 5.0 降级到 4.3,但这并没有解决问题。
所以我做了一些调查,发现在源代码中 sonarlint-eclipse/org.sonarlint.eclipse.core/src/org/sonarlint/eclipse/core/internal/tracking/StringStoreIndex.java
第 53 行最终导致 public static final String INDEX_FILENAME = "index.pb";
(第 34 行)。
所以我所做的是 del /s /q /f index.pb
在 Eclipse、Maven 和 Workspace 文件夹中。它位于工作区 .metadata\.plugins
文件夹下。
现在,错误似乎消失了。 SonarLint 终于再次报告了 "smelly" 代码的位置。
我感觉 index.pb
的权限搞砸了或没有更新,无法按照错误消息提示加载文件。
但现在恢复正常了。 :)
就我而言,我删除了项目中的所有 .git
和 .gitIgnore
以及 .build
文件夹。
更新 IDE 中安装的 Sonarlint。
Eclipse 和 STS 中的步骤 IDE:
Select 帮助,然后“Eclipse Marketplace”,搜索 SonarLint,点击已安装的图标,最后 select“更新”。
我目前正在使用 Eclipse 和 Java 从事我的工作。我们应该使用 SonarLint 来获得更清晰的代码,并且“直到昨天一切都很好”。 但是昨天早上,当我打开 Eclipse 时,SonarLint 向我抛出以下错误消息。
我已经在Google中搜索过了,删除了.sonarlint文件夹,还有eclipse的settings文件夹和eclipse-workspace里面的.sonarlint文件夹。他们每个人都通过重新启动 eclipse 重新创建,但这里没有任何帮助。我仍然收到错误消息:
Starting SonarLint for Eclipse 4.2.0.201909192007
SonarLint processing file /rap-server-core/src/main/java/com/rapidclipse/framework/server/ui/filter/FilterComponent.java...
Starting standalone SonarLint engine 4.2.0.201909192007...
Found 17 issue(s)
Error during execution of SonarLint analysis
java.lang.IllegalStateException: Failed to read local issue store index
at org.sonarlint.eclipse.core.internal.tracking.StringStoreIndex.load(StringStoreIndex.java:55)
at org.sonarlint.eclipse.core.internal.tracking.StringStoreIndex.keys(StringStoreIndex.java:45)
at org.sonarlint.eclipse.core.internal.tracking.IndexedObjectStore.deleteInvalid(IndexedObjectStore.java:78)
at org.sonarlint.eclipse.core.internal.tracking.IssueStore.<init>(IssueStore.java:62)
at org.sonarlint.eclipse.core.internal.SonarLintCorePlugin.lambda[=10=](SonarLintCorePlugin.java:102)
at org.sonarlint.eclipse.core.internal.tracking.IssueTrackerRegistry.newTracker(IssueTrackerRegistry.java:54)
at org.sonarlint.eclipse.core.internal.tracking.IssueTrackerRegistry.getOrCreate(IssueTrackerRegistry.java:43)
at org.sonarlint.eclipse.core.internal.SonarLintCorePlugin.getOrCreateIssueTracker(SonarLintCorePlugin.java:146)
at org.sonarlint.eclipse.core.internal.jobs.AbstractAnalyzeProjectJob.trackIssues(AbstractAnalyzeProjectJob.java:317)
at org.sonarlint.eclipse.core.internal.jobs.AbstractAnalyzeProjectJob.lambda(AbstractAnalyzeProjectJob.java:302)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2295)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2317)
at org.sonarlint.eclipse.core.internal.jobs.AbstractAnalyzeProjectJob.updateMarkers(AbstractAnalyzeProjectJob.java:302)
at org.sonarlint.eclipse.core.internal.jobs.AbstractAnalyzeProjectJob.runAnalysisAndUpdateMarkers(AbstractAnalyzeProjectJob.java:209)
at org.sonarlint.eclipse.core.internal.jobs.AbstractAnalyzeProjectJob.doRun(AbstractAnalyzeProjectJob.java:169)
at org.sonarlint.eclipse.core.internal.jobs.AbstractSonarProjectJob.run(AbstractSonarProjectJob.java:45)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: com.google.protobuf.InvalidProtocolBufferException: Protocol message contained an invalid tag (zero).
at com.google.protobuf.InvalidProtocolBufferException.invalidTag(InvalidProtocolBufferException.java:102)
at com.google.protobuf.CodedInputStream$StreamDecoder.readTag(CodedInputStream.java:2066)
at org.sonarlint.eclipse.core.internal.proto.Sonarlint$StorageIndex.<init>(Sonarlint.java:2496)
at org.sonarlint.eclipse.core.internal.proto.Sonarlint$StorageIndex.<init>(Sonarlint.java:2482)
at org.sonarlint.eclipse.core.internal.proto.Sonarlint$StorageIndex.parsePartialFrom(Sonarlint.java:3126)
at org.sonarlint.eclipse.core.internal.proto.Sonarlint$StorageIndex.parsePartialFrom(Sonarlint.java:1)
at com.google.protobuf.AbstractParser.parsePartialFrom(AbstractParser.java:215)
at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:232)
at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:237)
at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:48)
at com.google.protobuf.GeneratedMessageV3.parseWithIOException(GeneratedMessageV3.java:332)
at org.sonarlint.eclipse.core.internal.proto.Sonarlint$StorageIndex.parseFrom(Sonarlint.java:2746)
at org.sonarlint.eclipse.core.internal.tracking.StringStoreIndex.load(StringStoreIndex.java:53)
... 16 more
我不知道问题出在哪里,正如我所说 google 帮不了我太多(也许我只是因为 google idk 太蠢了)
我刚刚重新安装了 Eclipse...现在一切正常了。 我仍然不知道是什么问题导致了这个错误,但现在它已经消失了,我只希望它永远不会回来 :D
为了重装,我只删除了所有与eclipse有关的文件夹。当然,我的工作区文件夹除外^^
我遇到了同样的问题。
我曾尝试从 5.0 降级到 4.3,但这并没有解决问题。
所以我做了一些调查,发现在源代码中 sonarlint-eclipse/org.sonarlint.eclipse.core/src/org/sonarlint/eclipse/core/internal/tracking/StringStoreIndex.java
第 53 行最终导致 public static final String INDEX_FILENAME = "index.pb";
(第 34 行)。
所以我所做的是 del /s /q /f index.pb
在 Eclipse、Maven 和 Workspace 文件夹中。它位于工作区 .metadata\.plugins
文件夹下。
现在,错误似乎消失了。 SonarLint 终于再次报告了 "smelly" 代码的位置。
我感觉 index.pb
的权限搞砸了或没有更新,无法按照错误消息提示加载文件。
但现在恢复正常了。 :)
就我而言,我删除了项目中的所有 .git
和 .gitIgnore
以及 .build
文件夹。
更新 IDE 中安装的 Sonarlint。
Eclipse 和 STS 中的步骤 IDE:
Select 帮助,然后“Eclipse Marketplace”,搜索 SonarLint,点击已安装的图标,最后 select“更新”。