本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
HealthOmics 中的工作流程文字
HealthOmics 會在建立期間自動繫結 WDL 和 Nextflow DSL2 工作流程。內建 linter 會偵測工作流程定義檔案中可能導致執行失敗的錯誤。Lint 問題清單會出現在GetWorkflow回應的 statusMessage 欄位中。
對於 WDL 工作流程,lint 調查結果正在封鎖 — 如果偵測到錯誤,工作流程不會轉換為 ACTIVE。對於 Nextflow DSL2 工作流程,lint 調查結果為非封鎖 — 無論調查結果為何,工作流程都會轉換為 ACTIVE。
HealthOmics 也提供外部 linter,您可以在建立工作流程之前於本機執行。這些字彙可以包含其他 HealthOmics 特定規則。
內建 linter
當您呼叫 CreateWorkflow或 時,HealthOmics 會在伺服器端執行內建 lintersCreateWorkflowVersion。
WDL 內建 linting
對於 WDL,HealthOmics 會在您建立工作流程時自動執行 linter。WDL linting 正在封鎖 - 如果 linter 偵測到錯誤,工作流程不會轉換為 ACTIVE。您可以在GetWorkflow回應的 statusMessage 欄位中找到 linter 輸出。使用下列 CLI 命令擷取狀態輸出 (使用您建立之 WDL 工作流程的工作流程 ID):
aws omics get-workflow —id123456—query 'statusMessage'
Nextflow 內建 linting
HealthOmics 會在所有支援的 Nextflow DSL2 版本期間CreateWorkflow自動執行 Nextflow 內建嚴格 DSL2 linter CreateWorkflowVersion (nf-lang/v2):
Nextflow v22.04 (僅限 DSL2)
Nextflow 23.10 版
Nextflow 24.10 版
Nextflow 25.10 版
Nextflow 26.04 版
注意
內建 linter 僅適用於 DSL2 工作流程。DSL1 工作流程不會內嵌。
Nextflow linter 以非封鎖模式運作。調查結果不會阻止工作流程成為 ACTIVE。您可以隨時檢閱問題清單,而不會中斷工作流程建立程序。
注意
內建的 Nextflow linter 會在建立時驗證您的工作流程定義語法。它不同於 Nextflow v26.04 可用的嚴格語法剖析器,其由 控制engineSettings.syntaxVersion並影響執行時間行為。無論工作流程在執行時間使用哪個剖析器,linter 都會在所有 DSL2 版本中於建立時間執行。
擷取 Nextflow lint 輸出
Lint 調查結果會在GetWorkflow回應的 statusMessage 欄位中顯示為結構化 JSON。使用下列 CLI 命令來擷取 lint 輸出:
aws omics get-workflow --id1234567--query 'statusMessage'
下列範例顯示來自 Nextflow linter 的 JSON 輸出:
{ "advisory": "Linting findings are from the strict Nextflow DSL2 (nf-lang/v2) linter and reflect the syntax that will be required in Nextflow 25/26 strict mode. On Nextflow 23/24 (legacy grammar) findings are advisory only.", "summary": { "errors": 2, "filesWithErrors": 1, "filesWithoutErrors": 0, "filesFormatted": 0, "warnings": 0, "filesWithWarnings": 0, "filesWithoutWarnings": 2 }, "errors": [ { "filename": "nextflow-lint-legacy.nf", "startLine": 24, "startColumn": 5, "message": "`for` loops are no longer supported" }, { "filename": "nextflow-lint-legacy.nf", "startLine": 24, "startColumn": 10, "message": "`i` is not defined" } ], "warnings": [] }
Lint 輸出欄位
JSON 輸出包含下列欄位:
-
advisory– 說明問題清單的版本特定適用性。在 Nextflow v22.04、v23.10 和 v24.10 (舊版文法) 上,調查結果僅為諮詢。在 Nextflow v25.10 和 v26.04 上,調查結果反映嚴格的模式語法要求。 -
summary– 包含工作流程中所有檔案的錯誤和警告彙總計數。 -
errors– 錯誤物件的陣列。每個錯誤都包含filename、startColumn、startLine和message。 -
warnings– 警告物件的陣列。每個警告都包含與錯誤物件相同的欄位。 -
truncated– 當 lint 輸出超過欄位大小限制時出現的條件式旗標。發生截斷時,會先捨棄警告。工作流程會保持 ACTIVE,並具有有效的裁剪報告。
建議
我們建議以下工作流程來處理 lint 問題清單:
檢閱
statusMessage欄位中的 lint 調查結果。修正工作流程定義檔案中的錯誤。
重新建立工作流程以產生乾淨的 lint 報告。
外部文字
可使用下列外部 linter:
-
WDL – 在 Amazon ECR Public Gallery 上執行 WDL linter
的公有 Amazon ECR 映像。 -
Nextflow – 在 Amazon ECR Public Gallery 上執行 Nextflow Linter 規則的
公有 Amazon ECR 映像。您可以從 GitHub 上的 linter-rules-for-nextflow 儲存庫存取原始碼。 -
CWL – 無法使用。
以下清單說明內建和外部 linter 之間的差異:
-
內建 linter:在
CreateWorkflow和 期間執行伺服器端CreateWorkflowVersion。對於 WDL,問題清單會封鎖。對於 Nextflow DSL2,問題清單為非封鎖。僅適用於 WDL 和 Nextflow DSL2 工作流程。 -
外部文字 – 在建立工作流程之前於本機執行。可以包含其他 HealthOmics 特定的相容性規則。可做為公有 Amazon ECR 映像。