您可以使用 IntelliJ 原生匯入器Eclipse Buildship 在 IDE 中開啟此範例。

此範例說明如何透過問題 API 發出問題,以及如何在 IDE 端使用這些報告。

執行範例

若要執行範例,請執行 ./gradlew :sample-ide:importBuild 命令。

專案結構

範例包含多個個別建置,組成一個複合建置,其配置如下

  • sample-project:報告問題的外掛的 Gradle 建置

  • sample-ide:模擬 IDE 功能的專案。換句話說,它使用 Gradle Tooling API 設定和執行 sample-project 建置,並列印在過程中收到的問題報告。

  • reporters/standard-plugin 在標準 Gradle 外掛中顯示問題 API 的用法。

  • reporters/model-builder-plugin 顯示如何使用問題 API 來回報問題,當透過 Tooling API 讀取專案組態時。

  • reporters/script-plugin 顯示如何在預編譯的指令碼外掛中使用問題 API。

發出問題

問題可透過注入的 Problems 服務發出。以下是從外掛回報問題的範例。

reporters/standard-plugin/src/main/java/reporters/StandardPlugin.java
problems.forNamespace("reporters.standard.plugin").reporting(problem -> problem
        .label("The 'standard-plugin' is deprecated")
        .documentedAt("https://github.com/gradle/gradle/README.md")
        .category("deprecation", "plugin")
        .severity(Severity.WARNING)
        .solution("Please use a more recent plugin version")
);

接收問題回報

問題會以 Tooling API 進度事件發出。它們可透過註冊 ProgressListener 來處理

sample-ide/src/main/java/org/gradle/sample/SampleIde.java
@Override
public void statusChanged(ProgressEvent progressEvent) {
    prettyPrint(((ProblemDescriptor) progressEvent.getDescriptor()));
}