【问题标题】:SonarLint throws IllegalStateException -> Failed to read local issue store indexSonarLint 抛出 IllegalStateException -> 无法读取本地问题存储索引
【发布时间】:2020-03-03 21:49:25
【问题描述】:

我目前正在从事 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$0(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$15(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$1.parsePartialFrom(Sonarlint.java:3126)
    at org.sonarlint.eclipse.core.internal.proto.Sonarlint$StorageIndex$1.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 太傻了)

【问题讨论】:

  • 尝试删除目录/sonarlint/issuestore/。在 intellij 中,它位于 [project_directory]/.idea/sonarlint/issuestore/ 位置。为 eclipse 检查同样的内容
  • 感谢您的提示,但我在 eclipse 目录或任何其他 sonarlint 文件夹中都找不到这样的文件夹...

标签: java eclipse analysis illegalstateexception sonarlint


【解决方案1】:

我刚刚重新安装了 Eclipse... 现在一切正常。 我仍然不知道是什么问题导致了这个错误,但现在它已经消失了,我只希望它永远不会回来:D

对于重新安装,我只删除了每个与 eclipse 有关的文件夹。当然,我的工作区文件夹除外^^

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。

    我曾尝试从 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行)。

    所以我所做的是 Eclipse、Maven 和 Workspace 文件夹中的del /s /q /f index.pb。它位于 Workspace .metadata\.plugins 文件夹下。

    现在,错误似乎消失了。 SonarLint 终于再次报告了“臭”代码的位置。

    我感觉index.pb 的权限被弄乱或没有更新,并且无法按照错误消息的提示加载文件。

    但现在恢复正常。 :)

    【讨论】:

    • 遗憾的是它对我不起作用。我删除了现有的声纳绑定,卸载了声纳插件并重新安装了最新版本,并尝试了您的命令。它确实删除了 .plugins\org.eclipse.core.resources\.projects\NameOfMyProjects 中的几个 index.pb 文件,但我仍然有错误。执行 SonarLint 分析时出错 java.lang.IllegalStateException: 无法读取 org.sonarlint.eclipse.core.internal.tracking.IssueStore.lambda$0(IssueStore.java:51... 的问题
    • 公平。虽然,“Failed to read issues at org.sonarlint.eclipse.core.internal.tracking.IssueStore.lambda$0(IssueStore.java:51”听起来有点不同。你是在 Eclipse 打开还是关闭时删除了这些文件?跨度>
    • Eclipse 可能已经接近了。我有同样的错误信息,这个新错误信息是在删除 index.pb 文件后出现的。好吧,值得一试;)
    • 这个问题和答案与 Eclipse 相关,但它帮助我解决了 intellij 中的问题:$ find . -name "index.pb" -print 导致 ./.idea/sonarlint/issuestore/index.pb 被我删除,它又开始工作了
    【解决方案3】:

    就我而言,我删除了项目中的所有 .git.gitIgnore 和 .build 文件夹。

    【讨论】:

      【解决方案4】:

      更新安装在 IDE 中的 Sonarlint。

      Eclipse 和 STS IDE 中的步骤:

      选择Help,然后选择“Eclipse Marketplace”,搜索SonarLint,点击Installed Icon,最后选择“Update”。

      【讨论】:

        猜你喜欢
        • 2018-02-25
        • 1970-01-01
        • 1970-01-01
        • 2020-04-22
        • 1970-01-01
        • 2023-03-04
        相关资源
        最近更新 更多