diff --git a/Arena.toml b/Arena.toml index 140395bfe..abbfd43c9 100644 --- a/Arena.toml +++ b/Arena.toml @@ -1,358 +1,1104 @@ -version = "v1" - -[repositories."ENCODE-DCC/chip-seq-pipeline2"] -identifier = "ENCODE-DCC/chip-seq-pipeline2" -commit_hash = "26eeda81a0540dc793fc69b0c390d232ca7ca50a" - [repositories."getwilds/ww-fastq-to-cram"] identifier = "getwilds/ww-fastq-to-cram" commit_hash = "7dd6c4c7c8c9fc6dcd4eb5ff8f3262cd26d5e7cc" +[repositories."getwilds/ww-star-deseq2"] +identifier = "getwilds/ww-star-deseq2" +commit_hash = "3de83fa91db1b2d1b0d91dfc20e3ca71303c8d15" + +[repositories."getwilds/ww-vc-trio"] +identifier = "getwilds/ww-vc-trio" +commit_hash = "ee08634f28810e5d6fd1a904fc83f4e67821550e" + [repositories."stjudecloud/workflows"] identifier = "stjudecloud/workflows" -commit_hash = "08e3d49c7fb10086fe516feb2f400c1d65ef6100" - -[[concerns]] -kind = "LintWarning" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/compare_md5sum.wdl" -message = "[v1::W001::[Spacing, Style]::Low] trailing space (10:25)" - -[[concerns]] -kind = "LintWarning" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/compare_md5sum.wdl" -message = "[v1::W001::[Spacing, Style]::Low] trailing space (68:66)" - -[[concerns]] -kind = "LintWarning" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/compare_md5sum.wdl" -message = "[v1::W003::[Completeness]::Medium] missing parameter meta within task: files (5:6-5:23)" - -[[concerns]] -kind = "LintWarning" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/compare_md5sum.wdl" -message = "[v1::W003::[Completeness]::Medium] missing parameter meta within task: labels (4:6-4:26)" - -[[concerns]] -kind = "LintWarning" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/compare_md5sum.wdl" -message = "[v1::W003::[Completeness]::Medium] missing parameter meta within task: ref_files (6:6-6:27)" - -[[concerns]] -kind = "LintWarning" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/compare_md5sum.wdl" -message = "[v1::W012::[Style, Clarity]::Low] string defined with single quotes (84:45-84:56)" - -[[concerns]] -kind = "LintWarning" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/compare_md5sum.wdl" -message = "[v1::W012::[Style, Clarity]::Low] string defined with single quotes (85:46-85:65)" - -[[concerns]] -kind = "LintWarning" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/compare_md5sum.wdl" -message = "[v1::W012::[Style, Clarity]::Low] string defined with single quotes (86:26-86:39)" - -[[concerns]] -kind = "LintWarning" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/compare_md5sum.wdl" -message = "[v1::W012::[Style, Clarity]::Low] string defined with single quotes (87:39-87:52)" - -[[concerns]] -kind = "LintWarning" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/compare_md5sum.wdl" -message = "[v1::W012::[Style, Clarity]::Low] string defined with single quotes (91:18-91:27)" - -[[concerns]] -kind = "LintWarning" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/compare_md5sum.wdl" -message = "[v1::W012::[Style, Clarity]::Low] string defined with single quotes (93:17-93:36)" - -[[concerns]] -kind = "LintWarning" -document = "getwilds/ww-fastq-to-cram:/ww-fastq-to-cram.wdl" -message = "[v1::W001::[Spacing, Style]::Low] trailing space (133:46)" +commit_hash = "84bd23756563f32d144f11aa2e82a76e059a8b61" +filters = ["/template/task-templates.wdl"] -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "getwilds/ww-fastq-to-cram:/ww-fastq-to-cram.wdl" -message = "[v1::W001::[Spacing, Style]::Low] trailing space (182:63)" +message = "ww-fastq-to-cram.wdl:129:5: note[MatchingParameterMeta]: task `FastqToUnmappedBam` has an extraneous parameter metadata key named `unmapped_bam`" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "getwilds/ww-fastq-to-cram:/ww-fastq-to-cram.wdl" -message = "[v1::W001::[Spacing, Style]::Low] trailing space (34:105)" +message = "ww-fastq-to-cram.wdl:134:6: warning[SnakeCase]: task name `ValidateCram` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "getwilds/ww-fastq-to-cram:/ww-fastq-to-cram.wdl" -message = "[v1::W001::[Spacing, Style]::Low] trailing space (57:13)" +message = "ww-fastq-to-cram.wdl:165:5: note[MatchingParameterMeta]: task `ValidateCram` has an extraneous parameter metadata key named `validation`" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "getwilds/ww-fastq-to-cram:/ww-fastq-to-cram.wdl" -message = "[v1::W001::[Spacing, Style]::Low] trailing space (8:42)" +message = "ww-fastq-to-cram.wdl:170:6: warning[SnakeCase]: task name `MergeBamsToCram` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "getwilds/ww-fastq-to-cram:/ww-fastq-to-cram.wdl" -message = "[v1::W003::[Completeness]::Medium] extraneous parameter meta within task: crai (203:5-203:9)" +message = "ww-fastq-to-cram.wdl:202:5: note[MatchingParameterMeta]: task `MergeBamsToCram` has an extraneous parameter metadata key named `cram`" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "getwilds/ww-fastq-to-cram:/ww-fastq-to-cram.wdl" -message = "[v1::W003::[Completeness]::Medium] extraneous parameter meta within task: cram (202:5-202:9)" +message = "ww-fastq-to-cram.wdl:203:5: note[MatchingParameterMeta]: task `MergeBamsToCram` has an extraneous parameter metadata key named `crai`" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "getwilds/ww-fastq-to-cram:/ww-fastq-to-cram.wdl" -message = "[v1::W003::[Completeness]::Medium] extraneous parameter meta within task: unmapped_bam (129:5-129:17)" +message = "ww-fastq-to-cram.wdl:205:1: warning[EndingNewline]: missing newline at the end of the file" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "getwilds/ww-fastq-to-cram:/ww-fastq-to-cram.wdl" -message = "[v1::W003::[Completeness]::Medium] extraneous parameter meta within task: validation (165:5-165:15)" +message = "ww-fastq-to-cram.wdl:23:10: warning[SnakeCase]: workflow name `PairedFastqsToUnmappedCram` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "getwilds/ww-fastq-to-cram:/ww-fastq-to-cram.wdl" -message = "[v1::W003::[Completeness]::Medium] extraneous parameter meta within workflow: unmapped_cram_indexes (75:5-75:26)" +message = "ww-fastq-to-cram.wdl:57:13: warning[Whitespace]: line contains trailing whitespace" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "getwilds/ww-fastq-to-cram:/ww-fastq-to-cram.wdl" -message = "[v1::W003::[Completeness]::Medium] extraneous parameter meta within workflow: unmapped_crams (74:5-74:19)" +message = "ww-fastq-to-cram.wdl:74:5: note[MatchingParameterMeta]: workflow `PairedFastqsToUnmappedCram` has an extraneous parameter metadata key named `unmapped_crams`" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "getwilds/ww-fastq-to-cram:/ww-fastq-to-cram.wdl" -message = "[v1::W003::[Completeness]::Medium] extraneous parameter meta within workflow: validation (76:5-76:15)" +message = "ww-fastq-to-cram.wdl:75:5: note[MatchingParameterMeta]: workflow `PairedFastqsToUnmappedCram` has an extraneous parameter metadata key named `unmapped_cram_indexes`" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "getwilds/ww-fastq-to-cram:/ww-fastq-to-cram.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (134:6-134:18)" +message = "ww-fastq-to-cram.wdl:76:5: note[MatchingParameterMeta]: workflow `PairedFastqsToUnmappedCram` has an extraneous parameter metadata key named `validation`" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "getwilds/ww-fastq-to-cram:/ww-fastq-to-cram.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (170:6-170:21)" +message = "ww-fastq-to-cram.wdl:83:6: warning[SnakeCase]: task name `FastqToUnmappedBam` is not snake_case" -[[concerns]] -kind = "LintWarning" -document = "getwilds/ww-fastq-to-cram:/ww-fastq-to-cram.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (23:10-23:36)" +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:10:22: warning[Whitespace]: line contains trailing whitespace" -[[concerns]] -kind = "LintWarning" -document = "getwilds/ww-fastq-to-cram:/ww-fastq-to-cram.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (83:6-83:24)" +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:119:5: note[MatchingParameterMeta]: task `FindFastqs` has an extraneous parameter metadata key named `r1_locs`" -[[concerns]] -kind = "LintWarning" -document = "getwilds/ww-fastq-to-cram:/ww-fastq-to-cram.wdl" -message = "[v1::W007::[Spacing, Style]::Low] missing newline at the end of the file (205:2-205:2)" +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:120:5: note[MatchingParameterMeta]: task `FindFastqs` has an extraneous parameter metadata key named `r2_locs`" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:125:6: warning[SnakeCase]: task name `ConcatenateFastQs` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:133:15: warning[DoubleQuotes]: string defined with single quotes" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:134:15: warning[DoubleQuotes]: string defined with single quotes" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:153:5: note[MatchingParameterMeta]: task `ConcatenateFastQs` has an extraneous parameter metadata key named `r1fastq`" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:154:5: note[MatchingParameterMeta]: task `ConcatenateFastQs` has an extraneous parameter metadata key named `r2fastq`" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:159:6: warning[SnakeCase]: task name `STARalignTwoPass` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:192:10: warning[SnakeCase]: output name `geneCounts` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:196:10: warning[SnakeCase]: output name `SJout` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:212:5: note[MatchingParameterMeta]: task `STARalignTwoPass` has an extraneous parameter metadata key named `bam`" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:213:5: note[MatchingParameterMeta]: task `STARalignTwoPass` has an extraneous parameter metadata key named `bai`" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:214:5: note[MatchingParameterMeta]: task `STARalignTwoPass` has an extraneous parameter metadata key named `geneCounts`" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:215:5: note[MatchingParameterMeta]: task `STARalignTwoPass` has an extraneous parameter metadata key named `log_final`" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:216:5: note[MatchingParameterMeta]: task `STARalignTwoPass` has an extraneous parameter metadata key named `log_progress`" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:217:5: note[MatchingParameterMeta]: task `STARalignTwoPass` has an extraneous parameter metadata key named `log`" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:218:5: note[MatchingParameterMeta]: task `STARalignTwoPass` has an extraneous parameter metadata key named `SJout`" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:225:6: warning[SnakeCase]: task name `RNASeQC` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:255:5: note[MatchingParameterMeta]: task `RNASeQC` has an extraneous parameter metadata key named `rnaseqc_metrics`" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:25:36: warning[Whitespace]: line contains trailing whitespace" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:30:13: warning[Whitespace]: line contains trailing whitespace" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:31:43: warning[Whitespace]: line contains trailing whitespace" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:32:43: warning[Whitespace]: line contains trailing whitespace" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:59:17: warning[SnakeCase]: output name `output_geneCounts` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:63:17: warning[SnakeCase]: output name `output_SJ` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:6:10: warning[SnakeCase]: workflow name `STAR2Pass` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:73:5: note[MatchingParameterMeta]: workflow `STAR2Pass` has an extraneous parameter metadata key named `output_bam`" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:74:5: note[MatchingParameterMeta]: workflow `STAR2Pass` has an extraneous parameter metadata key named `output_bai`" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:75:5: note[MatchingParameterMeta]: workflow `STAR2Pass` has an extraneous parameter metadata key named `output_gene_counts`" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:76:5: note[MatchingParameterMeta]: workflow `STAR2Pass` has an extraneous parameter metadata key named `output_log_final`" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:77:5: note[MatchingParameterMeta]: workflow `STAR2Pass` has an extraneous parameter metadata key named `output_log_progress`" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:78:5: note[MatchingParameterMeta]: workflow `STAR2Pass` has an extraneous parameter metadata key named `output_log`" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:79:5: note[MatchingParameterMeta]: workflow `STAR2Pass` has an extraneous parameter metadata key named `output_SJ`" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:80:5: note[MatchingParameterMeta]: workflow `STAR2Pass` has an extraneous parameter metadata key named `output_rnaseqc`" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:87:6: warning[SnakeCase]: task name `FindFastqs` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-star-deseq2:/ww-star-deseq2.wdl" +message = "ww-star-deseq2.wdl:9:25: warning[Whitespace]: line contains trailing whitespace" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:136:13: warning[Whitespace]: line contains trailing whitespace" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:145:13: warning[Whitespace]: line contains trailing whitespace" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:19:10: warning[MatchingParameterMeta]: workflow `ww_vc_trio` is missing a parameter metadata key for input `batchFile`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:19:10: warning[SnakeCase]: input name `batchFile` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:20:10: warning[MatchingParameterMeta]: workflow `ww_vc_trio` is missing a parameter metadata key for input `bedLocation`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:20:10: warning[SnakeCase]: input name `bedLocation` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:217:1: warning[Whitespace]: line contains only whitespace" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:21:12: warning[MatchingParameterMeta]: workflow `ww_vc_trio` is missing a parameter metadata key for input `ref_name`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:22:10: warning[MatchingParameterMeta]: workflow `ww_vc_trio` is missing a parameter metadata key for input `ref_fasta`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:23:10: warning[MatchingParameterMeta]: workflow `ww_vc_trio` is missing a parameter metadata key for input `ref_fasta_index`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:240:76: warning[Whitespace]: line contains trailing whitespace" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:242:17: warning[SnakeCase]: output name `GATK_vcf` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:243:17: warning[SnakeCase]: output name `SAM_vcf` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:244:17: warning[SnakeCase]: output name `Mutect_Vcf` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:245:17: warning[SnakeCase]: output name `Mutect_VcfIndex` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:246:17: warning[SnakeCase]: output name `Mutect_AnnotatedVcf` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:247:17: warning[SnakeCase]: output name `Mutect_AnnotatedTable` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:248:17: warning[SnakeCase]: output name `GATK_annotated_vcf` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:249:17: warning[SnakeCase]: output name `GATK_annotated` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:24:10: warning[MatchingParameterMeta]: workflow `ww_vc_trio` is missing a parameter metadata key for input `ref_dict`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:250:17: warning[SnakeCase]: output name `SAM_annotated_vcf` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:251:17: warning[SnakeCase]: output name `SAM_annotated` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:252:17: warning[SnakeCase]: output name `panelQC` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:253:17: warning[SnakeCase]: output name `PicardQC` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:254:17: warning[SnakeCase]: output name `PicardQCpertarget` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:255:17: warning[SnakeCase]: output name `consensusVariants` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:264:10: warning[MatchingParameterMeta]: task `annovar` is missing a parameter metadata key for input `input_vcf`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:265:12: warning[MatchingParameterMeta]: task `annovar` is missing a parameter metadata key for input `ref_name`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:266:12: warning[MatchingParameterMeta]: task `annovar` is missing a parameter metadata key for input `annovar_protocols`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:267:12: warning[MatchingParameterMeta]: task `annovar` is missing a parameter metadata key for input `annovar_operation`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:268:12: warning[MatchingParameterMeta]: task `annovar` is missing a parameter metadata key for input `docker`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:28:11: warning[MatchingParameterMeta]: workflow `ww_vc_trio` is missing a parameter metadata key for input `ref_alt`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:298:6: warning[SnakeCase]: task name `ApplyBaseRecalibrator` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:29:10: warning[MatchingParameterMeta]: workflow `ww_vc_trio` is missing a parameter metadata key for input `ref_amb`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:2:1: note[PreambleComments]: preamble comments cannot come after the version statement" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:300:10: warning[MatchingParameterMeta]: task `ApplyBaseRecalibrator` is missing a parameter metadata key for input `input_bam`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:301:10: warning[MatchingParameterMeta]: task `ApplyBaseRecalibrator` is missing a parameter metadata key for input `intervals`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:301:19: warning[Whitespace]: line contains trailing whitespace" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:302:10: warning[MatchingParameterMeta]: task `ApplyBaseRecalibrator` is missing a parameter metadata key for input `input_bam_index`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:303:12: warning[MatchingParameterMeta]: task `ApplyBaseRecalibrator` is missing a parameter metadata key for input `base_file_name`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:304:10: warning[MatchingParameterMeta]: task `ApplyBaseRecalibrator` is missing a parameter metadata key for input `dbSNP_vcf`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:304:10: warning[SnakeCase]: input name `dbSNP_vcf` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:305:10: warning[MatchingParameterMeta]: task `ApplyBaseRecalibrator` is missing a parameter metadata key for input `dbSNP_vcf_index`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:305:10: warning[SnakeCase]: input name `dbSNP_vcf_index` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:306:17: warning[MatchingParameterMeta]: task `ApplyBaseRecalibrator` is missing a parameter metadata key for input `known_indels_sites_VCFs`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:306:17: warning[SnakeCase]: input name `known_indels_sites_VCFs` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:307:17: warning[MatchingParameterMeta]: task `ApplyBaseRecalibrator` is missing a parameter metadata key for input `known_indels_sites_indices`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:308:10: warning[MatchingParameterMeta]: task `ApplyBaseRecalibrator` is missing a parameter metadata key for input `ref_dict`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:309:10: warning[MatchingParameterMeta]: task `ApplyBaseRecalibrator` is missing a parameter metadata key for input `ref_fasta`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:30:10: warning[MatchingParameterMeta]: workflow `ww_vc_trio` is missing a parameter metadata key for input `ref_ann`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:310:10: warning[MatchingParameterMeta]: task `ApplyBaseRecalibrator` is missing a parameter metadata key for input `ref_fasta_index`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:311:12: warning[MatchingParameterMeta]: task `ApplyBaseRecalibrator` is missing a parameter metadata key for input `docker`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:31:10: warning[MatchingParameterMeta]: workflow `ww_vc_trio` is missing a parameter metadata key for input `ref_bwt`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:32:10: warning[MatchingParameterMeta]: workflow `ww_vc_trio` is missing a parameter metadata key for input `ref_pac`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:33:10: warning[MatchingParameterMeta]: workflow `ww_vc_trio` is missing a parameter metadata key for input `ref_sa`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:342:10: warning[SnakeCase]: output name `sortOrder` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:34:10: warning[MatchingParameterMeta]: workflow `ww_vc_trio` is missing a parameter metadata key for input `dbSNP_vcf`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:34:10: warning[SnakeCase]: input name `dbSNP_vcf` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:353:6: warning[SnakeCase]: task name `bcftoolsMpileup` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:355:10: warning[MatchingParameterMeta]: task `bcftoolsMpileup` is missing a parameter metadata key for input `input_bam`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:356:10: warning[MatchingParameterMeta]: task `bcftoolsMpileup` is missing a parameter metadata key for input `input_bam_index`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:357:12: warning[MatchingParameterMeta]: task `bcftoolsMpileup` is missing a parameter metadata key for input `base_file_name`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:358:10: warning[MatchingParameterMeta]: task `bcftoolsMpileup` is missing a parameter metadata key for input `sorted_bed`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:359:10: warning[MatchingParameterMeta]: task `bcftoolsMpileup` is missing a parameter metadata key for input `ref_dict`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:35:10: warning[MatchingParameterMeta]: workflow `ww_vc_trio` is missing a parameter metadata key for input `dbSNP_vcf_index`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:35:10: warning[SnakeCase]: input name `dbSNP_vcf_index` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:360:10: warning[MatchingParameterMeta]: task `bcftoolsMpileup` is missing a parameter metadata key for input `ref_fasta`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:361:10: warning[MatchingParameterMeta]: task `bcftoolsMpileup` is missing a parameter metadata key for input `ref_fasta_index`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:362:10: warning[MatchingParameterMeta]: task `bcftoolsMpileup` is missing a parameter metadata key for input `dbSNP_vcf`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:362:10: warning[SnakeCase]: input name `dbSNP_vcf` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:363:12: warning[MatchingParameterMeta]: task `bcftoolsMpileup` is missing a parameter metadata key for input `docker`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:36:17: warning[MatchingParameterMeta]: workflow `ww_vc_trio` is missing a parameter metadata key for input `known_indels_sites_VCFs`" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:36:17: warning[SnakeCase]: input name `known_indels_sites_VCFs` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:37:17: warning[MatchingParameterMeta]: workflow `ww_vc_trio` is missing a parameter metadata key for input `known_indels_sites_indices`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:38:10: warning[MatchingParameterMeta]: workflow `ww_vc_trio` is missing a parameter metadata key for input `af_only_gnomad`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:392:6: warning[SnakeCase]: task name `bedToolsQC` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:394:10: warning[MatchingParameterMeta]: task `bedToolsQC` is missing a parameter metadata key for input `input_bam`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:395:10: warning[MatchingParameterMeta]: task `bedToolsQC` is missing a parameter metadata key for input `bed_file`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:396:10: warning[MatchingParameterMeta]: task `bedToolsQC` is missing a parameter metadata key for input `genome_sort_order`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:397:12: warning[MatchingParameterMeta]: task `bedToolsQC` is missing a parameter metadata key for input `base_file_name`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:398:12: warning[MatchingParameterMeta]: task `bedToolsQC` is missing a parameter metadata key for input `docker`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:39:10: warning[MatchingParameterMeta]: workflow `ww_vc_trio` is missing a parameter metadata key for input `af_only_gnomad_index`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:409:10: warning[SnakeCase]: output name `meanQC` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:41:12: warning[MatchingParameterMeta]: workflow `ww_vc_trio` is missing a parameter metadata key for input `annovar_protocols`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:420:6: warning[SnakeCase]: task name `BwaMem` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:422:10: warning[MatchingParameterMeta]: task `BwaMem` is missing a parameter metadata key for input `input_fastq`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:423:12: warning[MatchingParameterMeta]: task `BwaMem` is missing a parameter metadata key for input `base_file_name`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:424:10: warning[MatchingParameterMeta]: task `BwaMem` is missing a parameter metadata key for input `ref_fasta`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:425:10: warning[MatchingParameterMeta]: task `BwaMem` is missing a parameter metadata key for input `ref_fasta_index`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:426:10: warning[MatchingParameterMeta]: task `BwaMem` is missing a parameter metadata key for input `ref_dict`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:427:11: warning[MatchingParameterMeta]: task `BwaMem` is missing a parameter metadata key for input `ref_alt`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:428:10: warning[MatchingParameterMeta]: task `BwaMem` is missing a parameter metadata key for input `ref_amb`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:429:10: warning[MatchingParameterMeta]: task `BwaMem` is missing a parameter metadata key for input `ref_ann`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:42:12: warning[MatchingParameterMeta]: workflow `ww_vc_trio` is missing a parameter metadata key for input `annovar_operation`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:430:10: warning[MatchingParameterMeta]: task `BwaMem` is missing a parameter metadata key for input `ref_bwt`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:431:10: warning[MatchingParameterMeta]: task `BwaMem` is missing a parameter metadata key for input `ref_pac`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:432:10: warning[MatchingParameterMeta]: task `BwaMem` is missing a parameter metadata key for input `ref_sa`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:433:9: warning[MatchingParameterMeta]: task `BwaMem` is missing a parameter metadata key for input `threads`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:434:12: warning[MatchingParameterMeta]: task `BwaMem` is missing a parameter metadata key for input `docker`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:456:6: warning[SnakeCase]: task name `CollectHsMetrics` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:458:10: warning[MatchingParameterMeta]: task `CollectHsMetrics` is missing a parameter metadata key for input `input_bam`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:459:12: warning[MatchingParameterMeta]: task `CollectHsMetrics` is missing a parameter metadata key for input `base_file_name`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:45:17: warning[SnakeCase]: private declaration name `batchInfo` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:460:10: warning[MatchingParameterMeta]: task `CollectHsMetrics` is missing a parameter metadata key for input `ref_fasta`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:461:10: warning[MatchingParameterMeta]: task `CollectHsMetrics` is missing a parameter metadata key for input `ref_fasta_index`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:462:10: warning[MatchingParameterMeta]: task `CollectHsMetrics` is missing a parameter metadata key for input `intervals`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:463:12: warning[MatchingParameterMeta]: task `CollectHsMetrics` is missing a parameter metadata key for input `docker`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:47:10: warning[SnakeCase]: private declaration name `GATKDocker` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:481:10: warning[SnakeCase]: output name `picardMetrics` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:482:10: warning[SnakeCase]: output name `picardPerTarget` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:48:10: warning[SnakeCase]: private declaration name `bwaDocker` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:492:6: warning[SnakeCase]: task name `consensusProcessingR` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:494:10: warning[MatchingParameterMeta]: task `consensusProcessingR` is missing a parameter metadata key for input `GATKVars`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:494:10: warning[SnakeCase]: input name `GATKVars` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:495:10: warning[MatchingParameterMeta]: task `consensusProcessingR` is missing a parameter metadata key for input `SAMVars`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:495:10: warning[SnakeCase]: input name `SAMVars` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:496:10: warning[MatchingParameterMeta]: task `consensusProcessingR` is missing a parameter metadata key for input `MutectVars`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:496:10: warning[SnakeCase]: input name `MutectVars` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:497:12: warning[MatchingParameterMeta]: task `consensusProcessingR` is missing a parameter metadata key for input `base_file_name`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:498:12: warning[MatchingParameterMeta]: task `consensusProcessingR` is missing a parameter metadata key for input `docker`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:49:10: warning[SnakeCase]: private declaration name `bedtoolsDocker` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:49:61: warning[Whitespace]: line contains trailing whitespace" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:507:10: warning[SnakeCase]: output name `consensusTSV` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:50:10: warning[SnakeCase]: private declaration name `bcftoolsDocker` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:518:6: warning[SnakeCase]: task name `HaplotypeCaller` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:51:10: warning[SnakeCase]: private declaration name `annovarDocker` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:520:10: warning[MatchingParameterMeta]: task `HaplotypeCaller` is missing a parameter metadata key for input `input_bam`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:521:10: warning[MatchingParameterMeta]: task `HaplotypeCaller` is missing a parameter metadata key for input `input_bam_index`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:522:12: warning[MatchingParameterMeta]: task `HaplotypeCaller` is missing a parameter metadata key for input `base_file_name`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:523:10: warning[MatchingParameterMeta]: task `HaplotypeCaller` is missing a parameter metadata key for input `intervals`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:524:10: warning[MatchingParameterMeta]: task `HaplotypeCaller` is missing a parameter metadata key for input `ref_dict`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:525:10: warning[MatchingParameterMeta]: task `HaplotypeCaller` is missing a parameter metadata key for input `ref_fasta`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:526:10: warning[MatchingParameterMeta]: task `HaplotypeCaller` is missing a parameter metadata key for input `ref_fasta_index`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:527:10: warning[MatchingParameterMeta]: task `HaplotypeCaller` is missing a parameter metadata key for input `dbSNP_vcf`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:527:10: warning[SnakeCase]: input name `dbSNP_vcf` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:528:10: warning[MatchingParameterMeta]: task `HaplotypeCaller` is missing a parameter metadata key for input `dbSNP_index`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:528:10: warning[SnakeCase]: input name `dbSNP_index` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:529:12: warning[MatchingParameterMeta]: task `HaplotypeCaller` is missing a parameter metadata key for input `docker`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:52:10: warning[SnakeCase]: private declaration name `RDocker` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:54:7: warning[SnakeCase]: private declaration name `bwaThreads` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:558:6: warning[SnakeCase]: task name `MergeBamAlignment` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:560:10: warning[MatchingParameterMeta]: task `MergeBamAlignment` is missing a parameter metadata key for input `unmapped_bam`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:561:10: warning[MatchingParameterMeta]: task `MergeBamAlignment` is missing a parameter metadata key for input `aligned_bam`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:562:12: warning[MatchingParameterMeta]: task `MergeBamAlignment` is missing a parameter metadata key for input `base_file_name`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:563:10: warning[MatchingParameterMeta]: task `MergeBamAlignment` is missing a parameter metadata key for input `ref_fasta`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:564:10: warning[MatchingParameterMeta]: task `MergeBamAlignment` is missing a parameter metadata key for input `ref_fasta_index`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:565:10: warning[MatchingParameterMeta]: task `MergeBamAlignment` is missing a parameter metadata key for input `ref_dict`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:566:12: warning[MatchingParameterMeta]: task `MergeBamAlignment` is missing a parameter metadata key for input `docker`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:596:6: warning[SnakeCase]: task name `Mutect2TumorOnly` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:598:10: warning[MatchingParameterMeta]: task `Mutect2TumorOnly` is missing a parameter metadata key for input `input_bam`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:599:10: warning[MatchingParameterMeta]: task `Mutect2TumorOnly` is missing a parameter metadata key for input `input_bam_index`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:600:12: warning[MatchingParameterMeta]: task `Mutect2TumorOnly` is missing a parameter metadata key for input `base_file_name`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:601:10: warning[MatchingParameterMeta]: task `Mutect2TumorOnly` is missing a parameter metadata key for input `intervals`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:602:10: warning[MatchingParameterMeta]: task `Mutect2TumorOnly` is missing a parameter metadata key for input `ref_dict`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:603:10: warning[MatchingParameterMeta]: task `Mutect2TumorOnly` is missing a parameter metadata key for input `ref_fasta`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:604:10: warning[MatchingParameterMeta]: task `Mutect2TumorOnly` is missing a parameter metadata key for input `ref_fasta_index`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:605:10: warning[MatchingParameterMeta]: task `Mutect2TumorOnly` is missing a parameter metadata key for input `genomeReference`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:605:10: warning[SnakeCase]: input name `genomeReference` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:606:10: warning[MatchingParameterMeta]: task `Mutect2TumorOnly` is missing a parameter metadata key for input `genomeReferenceIndex`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:606:10: warning[SnakeCase]: input name `genomeReferenceIndex` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:607:12: warning[MatchingParameterMeta]: task `Mutect2TumorOnly` is missing a parameter metadata key for input `docker`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:643:6: warning[SnakeCase]: task name `SamToFastq` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:645:10: warning[MatchingParameterMeta]: task `SamToFastq` is missing a parameter metadata key for input `input_bam`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:646:12: warning[MatchingParameterMeta]: task `SamToFastq` is missing a parameter metadata key for input `base_file_name`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:647:12: warning[MatchingParameterMeta]: task `SamToFastq` is missing a parameter metadata key for input `docker`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:64:12: warning[SnakeCase]: private declaration name `sampleName` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:65:12: warning[SnakeCase]: private declaration name `molecularID` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:66:10: warning[SnakeCase]: private declaration name `sampleBam` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:680:6: warning[SnakeCase]: task name `SortBed` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:682:10: warning[MatchingParameterMeta]: task `SortBed` is missing a parameter metadata key for input `unsorted_bed`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:683:10: warning[MatchingParameterMeta]: task `SortBed` is missing a parameter metadata key for input `ref_dict`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:684:12: warning[MatchingParameterMeta]: task `SortBed` is missing a parameter metadata key for input `docker`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:709:6: warning[SnakeCase]: task name `MarkDuplicates` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:711:10: warning[MatchingParameterMeta]: task `MarkDuplicates` is missing a parameter metadata key for input `input_bam`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:712:12: warning[MatchingParameterMeta]: task `MarkDuplicates` is missing a parameter metadata key for input `output_bam_basename`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:713:12: warning[MatchingParameterMeta]: task `MarkDuplicates` is missing a parameter metadata key for input `metrics_filename`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:714:12: warning[MatchingParameterMeta]: task `MarkDuplicates` is missing a parameter metadata key for input `docker`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:745:6: warning[SnakeCase]: task name `SortSam` is not snake_case" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:747:10: warning[MatchingParameterMeta]: task `SortSam` is missing a parameter metadata key for input `input_bam`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:748:12: warning[MatchingParameterMeta]: task `SortSam` is missing a parameter metadata key for input `base_file_name`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:749:12: warning[MatchingParameterMeta]: task `SortSam` is missing a parameter metadata key for input `docker`" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:771:2: warning[EndingNewline]: multiple empty lines at the end of file" + +[[diagnostics]] +document = "getwilds/ww-vc-trio:/ww-vc-trio.wdl" +message = "ww-vc-trio.wdl:96:1: warning[Whitespace]: line contains only whitespace" + +[[diagnostics]] document = "stjudecloud/workflows:/data_structures/read_group.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (32:12-32:14)" +message = "read_group.wdl:32:12: warning[SnakeCase]: struct member name `ID` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/data_structures/read_group.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (33:13-33:15)" +message = "read_group.wdl:33:13: warning[SnakeCase]: struct member name `BC` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/data_structures/read_group.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (34:13-34:15)" +message = "read_group.wdl:34:13: warning[SnakeCase]: struct member name `CN` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/data_structures/read_group.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (35:13-35:15)" +message = "read_group.wdl:35:13: warning[SnakeCase]: struct member name `DS` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/data_structures/read_group.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (36:13-36:15)" +message = "read_group.wdl:36:13: warning[SnakeCase]: struct member name `DT` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/data_structures/read_group.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (37:13-37:15)" +message = "read_group.wdl:37:13: warning[SnakeCase]: struct member name `FO` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/data_structures/read_group.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (38:13-38:15)" +message = "read_group.wdl:38:13: warning[SnakeCase]: struct member name `KS` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/data_structures/read_group.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (39:13-39:15)" +message = "read_group.wdl:39:13: warning[SnakeCase]: struct member name `LB` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/data_structures/read_group.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (40:13-40:15)" +message = "read_group.wdl:40:13: warning[SnakeCase]: struct member name `PG` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/data_structures/read_group.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (41:10-41:12)" +message = "read_group.wdl:41:10: warning[SnakeCase]: struct member name `PI` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/data_structures/read_group.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (42:13-42:15)" +message = "read_group.wdl:42:13: warning[SnakeCase]: struct member name `PL` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/data_structures/read_group.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (43:13-43:15)" +message = "read_group.wdl:43:13: warning[SnakeCase]: struct member name `PM` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/data_structures/read_group.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (44:13-44:15)" +message = "read_group.wdl:44:13: warning[SnakeCase]: struct member name `PU` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/data_structures/read_group.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (45:13-45:15)" +message = "read_group.wdl:45:13: warning[SnakeCase]: struct member name `SM` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/tools/gatk4.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (107:14-107:23)" +message = "gatk4.wdl:107:14: warning[SnakeCase]: input name `dbSNP_vcf` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/tools/gatk4.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (108:14-108:29)" +message = "gatk4.wdl:108:14: warning[SnakeCase]: input name `dbSNP_vcf_index` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/tools/gatk4.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (249:14-249:23)" +message = "gatk4.wdl:249:14: warning[SnakeCase]: input name `dbSNP_vcf` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/tools/gatk4.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (250:14-250:29)" +message = "gatk4.wdl:250:14: warning[SnakeCase]: input name `dbSNP_vcf_index` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/tools/star.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (552:13-552:34)" +message = "star.wdl:552:13: warning[SnakeCase]: input name `out_QS_conversion_add` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/tools/star.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (553:13-553:34)" +message = "star.wdl:553:13: warning[SnakeCase]: input name `out_sam_attr_IH_start` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/tools/star.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (555:13-555:28)" +message = "star.wdl:555:13: warning[SnakeCase]: input name `out_sam_flag_OR` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/tools/star.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (556:13-556:29)" +message = "star.wdl:556:13: warning[SnakeCase]: input name `out_sam_flag_AND` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/tools/star.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (564:13-564:27)" +message = "star.wdl:564:13: warning[SnakeCase]: input name `score_gap_GCAG` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/tools/star.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (565:13-565:27)" +message = "star.wdl:565:13: warning[SnakeCase]: input name `score_gap_ATAC` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/tools/star.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (597:13-597:40)" +message = "star.wdl:597:13: warning[SnakeCase]: input name `chim_score_junction_nonGTAG` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/tools/star.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (61:13-61:36)" +message = "star.wdl:61:13: warning[SnakeCase]: input name `genome_SA_index_n_bases` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/tools/star.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (62:13-62:31)" +message = "star.wdl:62:13: warning[SnakeCase]: input name `genome_SA_sparse_d` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/tools/star.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (818:9-818:30)" +message = "star.wdl:818:9: warning[SnakeCase]: struct member name `GT_AG_and_CT_AC_motif` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/tools/star.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (819:9-819:30)" +message = "star.wdl:819:9: warning[SnakeCase]: struct member name `GC_AG_and_CT_GC_motif` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/tools/star.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (820:9-820:30)" - -[[concerns]] -kind = "LintWarning" -document = "stjudecloud/workflows:/tools/util.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (413:14-413:21)" +message = "star.wdl:820:9: warning[SnakeCase]: struct member name `AT_AC_and_GT_AT_motif` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/workflows/reference/gatk-reference.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (101:15-101:24)" +message = "gatk-reference.wdl:101:15: warning[SnakeCase]: output name `dbSNP_vcf` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/workflows/reference/gatk-reference.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (102:15-102:30)" +message = "gatk-reference.wdl:102:15: warning[SnakeCase]: output name `dbSNP_vcf_index` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/workflows/reference/gatk-reference.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (40:16-40:29)" +message = "gatk-reference.wdl:40:16: warning[SnakeCase]: input name `dbSNP_vcf_url` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/workflows/reference/gatk-reference.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (41:16-41:30)" +message = "gatk-reference.wdl:41:16: warning[SnakeCase]: input name `dbSNP_vcf_name` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/workflows/reference/gatk-reference.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (42:17-42:36)" +message = "gatk-reference.wdl:42:17: warning[SnakeCase]: input name `dbSNP_vcf_index_url` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/workflows/reference/gatk-reference.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (43:17-43:37)" - -[[concerns]] -kind = "LintWarning" -document = "stjudecloud/workflows:/workflows/reference/make-qc-reference.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (125:14-125:21)" +message = "gatk-reference.wdl:43:17: warning[SnakeCase]: input name `dbSNP_vcf_index_name` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/workflows/rnaseq/rnaseq-core.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (138:13-138:40)" +message = "rnaseq-core.wdl:138:13: warning[SnakeCase]: input name `chim_score_junction_nonGTAG` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/workflows/rnaseq/rnaseq-variant-calling.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (42:14-42:23)" +message = "rnaseq-variant-calling.wdl:42:14: warning[SnakeCase]: input name `dbSNP_vcf` is not snake_case" -[[concerns]] -kind = "LintWarning" +[[diagnostics]] document = "stjudecloud/workflows:/workflows/rnaseq/rnaseq-variant-calling.wdl" -message = "[v1::W006::[Naming, Style, Clarity]::Medium] identifier must be snake case (43:14-43:29)" +message = "rnaseq-variant-calling.wdl:43:14: warning[SnakeCase]: input name `dbSNP_vcf_index` is not snake_case" diff --git a/Cargo.toml b/Cargo.toml index f10d6393a..852b1d51e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -41,3 +41,8 @@ pretty_assertions = "1.4.0" rayon = "1.10.0" approx = "0.5.1" codespan-reporting = "0.11.1" +anyhow = "1.0.86" +dirs = "5.0.1" +faster-hex = "0.9.0" +git2 = "0.18.3" +temp-dir = "0.1.13" diff --git a/Gauntlet.toml b/Gauntlet.toml index 69684ee23..a9224cc45 100644 --- a/Gauntlet.toml +++ b/Gauntlet.toml @@ -1,5 +1,3 @@ -version = "v1" - [repositories."ENCODE-DCC/chip-seq-pipeline2"] identifier = "ENCODE-DCC/chip-seq-pipeline2" commit_hash = "26eeda81a0540dc793fc69b0c390d232ca7ca50a" @@ -10,7 +8,7 @@ commit_hash = "b8057d3e3fa575f45f55f7ac7df47fa9bc5f73e0" [repositories."aws-samples/amazon-omics-tutorials"] identifier = "aws-samples/amazon-omics-tutorials" -commit_hash = "d8e8b48ce8faad50b24779d785cd504baadfb13f" +commit_hash = "6c1ae7111deb8f4af68a3c43bff28c7008873b15" [repositories."biowdl/tasks"] identifier = "biowdl/tasks" @@ -22,15 +20,15 @@ commit_hash = "04057c175d0307f96f3f90e2704a4594ebf4e314" [repositories."broadinstitute/palantir-workflows"] identifier = "broadinstitute/palantir-workflows" -commit_hash = "4d28b6d381b765a12e9f838d305e39eddba1c9c7" +commit_hash = "1e32078d3b57dcb2291534d0caa30f600d40967e" [repositories."broadinstitute/warp"] identifier = "broadinstitute/warp" -commit_hash = "a22865d02b2f674da388c472654a73599afb94ed" +commit_hash = "f094475689311ccf227b39b5f40b70762889566c" [repositories."chanzuckerberg/czid-workflows"] identifier = "chanzuckerberg/czid-workflows" -commit_hash = "6ed1fc2ec1aa477b38ca45f0a39fa6402d2a0163" +commit_hash = "15f611d382212519310a1187ef3fd0e96fe3ef21" [repositories."getwilds/ww-fastq-to-cram"] identifier = "getwilds/ww-fastq-to-cram" @@ -46,658 +44,309 @@ commit_hash = "ee08634f28810e5d6fd1a904fc83f4e67821550e" [repositories."stjudecloud/workflows"] identifier = "stjudecloud/workflows" -commit_hash = "2970ed4ffec95cbc3c94b3e85543d46c4e730f71" +commit_hash = "84bd23756563f32d144f11aa2e82a76e059a8b61" +filters = ["/template/task-templates.wdl"] [repositories."theiagen/public_health_bioinformatics"] identifier = "theiagen/public_health_bioinformatics" -commit_hash = "dce427204424361a17c084224727e9df1e00eb63" - -[[concerns]] -kind = "ParseError" -document = "ENCODE-DCC/chip-seq-pipeline2:/chip.wdl" -message = "The following tokens are required: comma. (1262:26)" - -[[concerns]] -kind = "ParseError" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/test_bam2ta.wdl" -message = "The following tokens are required: comma. (30:37)" - -[[concerns]] -kind = "ParseError" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/test_bam_to_pbam.wdl" -message = "The following tokens are required: comma. (32:37)" - -[[concerns]] -kind = "ParseError" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/test_bowtie2.wdl" -message = "The following tokens are required: comma. (33:37)" - -[[concerns]] -kind = "ParseError" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/test_bwa.wdl" -message = "The following tokens are required: comma. (31:33)" - -[[concerns]] -kind = "ParseError" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/test_choose_ctl.wdl" -message = "The following tokens are required: comma. (66:45)" - -[[concerns]] -kind = "ParseError" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/test_count_signal_track.wdl" -message = "The following tokens are required: comma. (21:61)" - -[[concerns]] -kind = "ParseError" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/test_filter.wdl" -message = "The following tokens are required: comma. (33:37)" - -[[concerns]] -kind = "ParseError" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/test_gc_bias.wdl" -message = "The following tokens are required: comma. (18:25)" - -[[concerns]] -kind = "ParseError" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/test_idr.wdl" -message = "The following tokens are required: comma. (31:31)" - -[[concerns]] -kind = "ParseError" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/test_jsd.wdl" -message = "The following tokens are required: comma. (27:31)" - -[[concerns]] -kind = "ParseError" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/test_macs2.wdl" -message = "The following tokens are required: comma. (36:39)" - -[[concerns]] -kind = "ParseError" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/test_macs2_signal_track.wdl" -message = "The following tokens are required: comma. (29:61)" - -[[concerns]] -kind = "ParseError" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/test_overlap.wdl" -message = "The following tokens are required: comma. (30:39)" - -[[concerns]] -kind = "ParseError" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/test_pool_ta.wdl" -message = "The following tokens are required: comma. (19:39)" - -[[concerns]] -kind = "ParseError" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/test_reproducibility.wdl" -message = "The following tokens are required: comma. (22:55)" - -[[concerns]] -kind = "ParseError" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/test_spp.wdl" -message = "The following tokens are required: comma. (35:37)" - -[[concerns]] -kind = "ParseError" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/test_spr.wdl" -message = "The following tokens are required: comma. (28:31)" - -[[concerns]] -kind = "ParseError" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/test_subsample_ctl.wdl" -message = "The following tokens are required: comma. (25:51)" - -[[concerns]] -kind = "ParseError" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/test_trimmomatic.wdl" -message = "The following tokens are required: comma. (37:45)" - -[[concerns]] -kind = "ParseError" -document = "ENCODE-DCC/chip-seq-pipeline2:/dev/test/test_task/test_xcor.wdl" -message = "The following tokens are required: comma. (30:33)" - -[[concerns]] -kind = "ParseError" +commit_hash = "092f19a0f610eb0a01757456932519bbbfe2bbd9" + +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/gatk-best-practices/workflows/somatic-snps-and-indels/mutec2.wdl" +message = "mutec2.wdl:112:40: error: expected input section, output section, runtime section, metadata section, parameter metadata section, conditional statement, scatter statement, task call statement, or private declaration, but found `{`" + +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/gatk-best-practices/workflows/somatic-snps-and-indels/mutec2.wdl" +message = "mutec2.wdl:112:67: error: expected declaration name, but found `,`" + +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/gatk-best-practices/workflows/somatic-snps-and-indels/mutec2.wdl" +message = "mutec2.wdl:113:62: error: expected declaration name, but found `,`" + +[[diagnostics]] document = "aws-samples/amazon-omics-tutorials:/example-workflows/gatk-best-practices/workflows/somatic-snps-and-indels/mutec2.wdl" -message = "The following tokens are required: singular_identifier. (112:41)" +message = "mutec2.wdl:114:71: error: expected declaration name, but found `*`" -[[concerns]] -kind = "ParseError" +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/gatk-best-practices/workflows/somatic-snps-and-indels/mutec2.wdl" +message = "mutec2.wdl:115:72: error: expected declaration name, but found `*`" + +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/gatk-best-practices/workflows/somatic-snps-and-indels/mutec2.wdl" +message = "mutec2.wdl:117:5: error: expected import statement, struct definition, task definition, or workflow definition, but found `call` keyword" + +[[diagnostics]] document = "aws-samples/amazon-omics-tutorials:/example-workflows/protein-folding/workflows/alphafold/alphafold-600.wdl" -message = "The following tokens are required: singular_identifier, or, and, add, sub, mul, div, remainder, eq, neq, lte, gte, lt, gt, member, index, call. (110:29)" +message = "alphafold-600.wdl:110:29: error: expected runtime key, but found `,`" -[[concerns]] -kind = "ParseError" -document = "aws-samples/amazon-omics-tutorials:/example-workflows/protein-folding/workflows/esmfold/esmfold.wdl" -message = "The following tokens are required: singular_identifier, or, and, add, sub, mul, div, remainder, eq, neq, lte, gte, lt, gt, member, index, call. (58:29)" +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/protein-folding/workflows/alphafold/alphafold-600.wdl" +message = "alphafold-600.wdl:111:23: error: expected runtime key, but found `,`" -[[concerns]] -kind = "ParseError" -document = "broadinstitute/palantir-workflows:/BenchmarkVCFs/BenchmarkVCFs.wdl" -message = "The following tokens are required: singular_identifier. (271:111)" +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/protein-folding/workflows/alphafold/alphafold-600.wdl" +message = "alphafold-600.wdl:142:29: error: expected runtime key, but found `,`" -[[concerns]] -kind = "ParseError" -document = "broadinstitute/palantir-workflows:/HaplotypeMap/BuildHaplotypeMap.wdl" -message = "The following tokens are required: version. (17:1)" - -[[concerns]] -kind = "ParseError" -document = "broadinstitute/palantir-workflows:/ImputationPipeline/AggregatePRSResults.wdl" -message = "The following tokens are required: or, and, add, sub, mul, div, remainder, eq, neq, lte, gte, lt, gt, member, index, call. (217:82)" - -[[concerns]] -kind = "ParseError" -document = "broadinstitute/palantir-workflows:/ImputationPipeline/EndToEndPipeline.wdl" -message = "The following tokens are required: comma. (76:4)" - -[[concerns]] -kind = "ParseError" -document = "broadinstitute/palantir-workflows:/ImputationPipeline/Validation/ValidateImputation.wdl" -message = "The following tokens are required: comma. (122:3)" - -[[concerns]] -kind = "ParseError" -document = "broadinstitute/warp:/pipelines/broad/dna_seq/germline/single_sample/ugwgs/UltimaGenomicsWholeGenomeGermline.wdl" -message = "The following tokens are required: comma. (126:5)" - -[[concerns]] -kind = "ParseError" -document = "broadinstitute/warp:/tasks/broad/Funcotator.wdl" -message = "The following tokens are required: whitespace, comment. (120:78)" - -[[concerns]] -kind = "ParseError" -document = "broadinstitute/warp:/tasks/broad/GermlineVariantDiscovery.wdl" -message = "The following tokens are required: string. (65:32)" +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/protein-folding/workflows/alphafold/alphafold-600.wdl" +message = "alphafold-600.wdl:143:23: error: expected runtime key, but found `,`" + +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/protein-folding/workflows/alphafold/alphafold-600.wdl" +message = "alphafold-600.wdl:174:29: error: expected runtime key, but found `,`" -[[concerns]] -kind = "ParseError" -document = "broadinstitute/warp:/tasks/broad/InternalTasks.wdl" -message = "The following tokens are required: whitespace, comment. (64:77)" +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/protein-folding/workflows/alphafold/alphafold-600.wdl" +message = "alphafold-600.wdl:175:23: error: expected runtime key, but found `,`" -[[concerns]] -kind = "ParseError" -document = "broadinstitute/warp:/tasks/broad/SplitLargeReadGroup.wdl" -message = "The following tokens are required: comma. (48:5)" +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/protein-folding/workflows/alphafold/alphafold-600.wdl" +message = "alphafold-600.wdl:210:29: error: expected runtime key, but found `,`" -[[concerns]] -kind = "ParseError" -document = "broadinstitute/warp:/tasks/broad/UltimaGenomicsWholeGenomeGermlineAlignmentMarkDuplicates.wdl" -message = "The following tokens are required: comma. (56:7)" +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/protein-folding/workflows/alphafold/alphafold-600.wdl" +message = "alphafold-600.wdl:211:23: error: expected runtime key, but found `,`" -[[concerns]] -kind = "ParseError" -document = "broadinstitute/warp:/tasks/broad/UltimaGenomicsWholeGenomeGermlineTasks.wdl" -message = "The following tokens are required: string. (814:27)" +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/protein-folding/workflows/alphafold/alphafold-600.wdl" +message = "alphafold-600.wdl:244:29: error: expected runtime key, but found `,`" -[[concerns]] -kind = "ParseError" -document = "broadinstitute/warp:/tasks/skylab/FastqProcessing.wdl" -message = "The following tokens are not allowed: space. (162:12)" +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/protein-folding/workflows/alphafold/alphafold-600.wdl" +message = "alphafold-600.wdl:245:23: error: expected runtime key, but found `,`" -[[concerns]] -kind = "ParseError" -document = "broadinstitute/warp:/tests/cemba/pr/CheckCembaOutputs.wdl" -message = "The following tokens are required: document. (1:1)" - -[[concerns]] -kind = "ParseError" -document = "broadinstitute/warp:/verification/VerifyTasks.wdl" -message = "The following tokens are required: or, and, add, sub, mul, div, remainder, eq, neq, lte, gte, lt, gt. (75:119)" - -[[concerns]] -kind = "ParseError" -document = "stjudecloud/workflows:/template/task-templates.wdl" -message = "The following tokens are required: expression. (49:35)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/freyja/wf_freyja_dashboard.wdl" -message = "The following tokens are required: workflow_call_input. (26:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/freyja/wf_freyja_fastq.wdl" -message = "The following tokens are required: workflow_call_input. (49:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/freyja/wf_freyja_plot.wdl" -message = "The following tokens are required: workflow_call_input. (22:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/freyja/wf_freyja_update.wdl" -message = "The following tokens are required: workflow_call_input. (12:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/phylogenetics/wf_augur.wdl" -message = "The following tokens are required: workflow_call_input. (49:5)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/phylogenetics/wf_augur_prep.wdl" -message = "The following tokens are required: workflow_call_input. (30:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/phylogenetics/wf_core_gene_snp.wdl" -message = "The following tokens are required: workflow_call_input. (90:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/phylogenetics/wf_find_shared_variants.wdl" -message = "The following tokens are required: workflow_call_input. (29:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/phylogenetics/wf_ksnp3.wdl" -message = "The following tokens are required: workflow_call_input. (72:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/phylogenetics/wf_lyveset.wdl" -message = "The following tokens are required: workflow_call_input. (24:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/phylogenetics/wf_mashtree_fasta.wdl" -message = "The following tokens are required: workflow_call_input. (44:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/phylogenetics/wf_nextclade_addToRefTree.wdl" -message = "The following tokens are required: workflow_call_input. (31:5)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/phylogenetics/wf_snippy_streamline.wdl" -message = "The following tokens are required: workflow_call_input. (56:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/phylogenetics/wf_snippy_tree.wdl" -message = "The following tokens are required: workflow_call_input. (186:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/standalone_modules/wf_amrfinderplus.wdl" -message = "The following tokens are required: workflow_call_input. (18:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/standalone_modules/wf_gambit_query.wdl" -message = "The following tokens are required: workflow_call_input. (18:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/standalone_modules/wf_gambitcore.wdl" -message = "The following tokens are required: workflow_call_input. (18:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/standalone_modules/wf_kraken2_ont.wdl" -message = "The following tokens are required: workflow_call_input. (29:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/standalone_modules/wf_kraken2_pe.wdl" -message = "The following tokens are required: workflow_call_input. (31:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/standalone_modules/wf_kraken2_se.wdl" -message = "The following tokens are required: workflow_call_input. (29:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/standalone_modules/wf_rasusa.wdl" -message = "The following tokens are required: workflow_call_input. (24:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/standalone_modules/wf_snippy_variants.wdl" -message = "The following tokens are required: workflow_call_input. (56:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/standalone_modules/wf_tbprofiler_tngs.wdl" -message = "The following tokens are required: workflow_call_input. (20:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/submission/wf_terra_2_ncbi.wdl" -message = "The following tokens are required: workflow_call_input. (23:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/theiacov/updates/wf_ncbi_scrub_pe.wdl" -message = "The following tokens are required: workflow_call_input. (27:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/theiacov/updates/wf_ncbi_scrub_se.wdl" -message = "The following tokens are required: workflow_call_input. (24:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/theiacov/updates/wf_pangolin_update.wdl" -message = "The following tokens are required: workflow_call_input. (61:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/theiacov/updates/wf_vadr_update.wdl" -message = "The following tokens are required: workflow_call_input. (20:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/theiacov/wf_theiacov_clearlabs.wdl" -message = "The following tokens are required: workflow_call_input. (161:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/theiacov/wf_theiacov_fasta.wdl" -message = "The following tokens are required: workflow_call_input. (120:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/theiacov/wf_theiacov_fasta_batch.wdl" -message = "The following tokens are required: workflow_call_input. (62:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/theiacov/wf_theiacov_illumina_pe.wdl" -message = "The following tokens are required: workflow_call_input. (344:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/theiacov/wf_theiacov_illumina_se.wdl" -message = "The following tokens are required: workflow_call_input. (204:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/theiacov/wf_theiacov_ont.wdl" -message = "The following tokens are required: workflow_call_input. (346:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/theiaeuk/wf_cauris_cladetyper.wdl" -message = "The following tokens are required: workflow_call_input. (18:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/theiaeuk/wf_theiaeuk_illumina_pe.wdl" -message = "The following tokens are required: workflow_call_input. (50:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/theiameta/wf_theiameta_illumina_pe.wdl" -message = "The following tokens are required: workflow_call_input. (180:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/theiaprok/wf_theiaprok_fasta.wdl" -message = "The following tokens are required: workflow_call_input. (52:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl" -message = "The following tokens are required: workflow_call_input. (69:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/theiaprok/wf_theiaprok_illumina_se.wdl" -message = "The following tokens are required: workflow_call_input. (69:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/theiaprok/wf_theiaprok_ont.wdl" -message = "The following tokens are required: workflow_call_input. (65:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/utilities/data_import/wf_assembly_fetch.wdl" -message = "The following tokens are required: workflow_call_input. (27:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/utilities/data_import/wf_basespace_fetch.wdl" -message = "The following tokens are required: workflow_call_input. (26:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/utilities/file_handling/wf_concatenate_column.wdl" -message = "The following tokens are required: workflow_call_input. (18:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/utilities/file_handling/wf_rename_fastq_files.wdl" -message = "The following tokens are required: workflow_call_input. (29:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/utilities/file_handling/wf_transfer_column.wdl" -message = "The following tokens are required: workflow_call_input. (18:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/utilities/file_handling/wf_zip_column.wdl" -message = "The following tokens are required: workflow_call_input. (18:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/utilities/wf_czgenepi_prep.wdl" -message = "The following tokens are required: workflow_call_input. (37:3)" - -[[concerns]] -kind = "ParseError" -document = "theiagen/public_health_bioinformatics:/workflows/utilities/wf_theiavalidate.wdl" -message = "The following tokens are required: workflow_call_input. (54:3)" - -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/protein-folding/workflows/alphafold/alphafold-600.wdl" +message = "alphafold-600.wdl:284:29: error: expected runtime key, but found `,`" + +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/protein-folding/workflows/alphafold/alphafold-600.wdl" +message = "alphafold-600.wdl:285:23: error: expected runtime key, but found `,`" + +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/protein-folding/workflows/alphafold/alphafold-600.wdl" +message = "alphafold-600.wdl:323:29: error: expected runtime key, but found `,`" + +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/protein-folding/workflows/alphafold/alphafold-600.wdl" +message = "alphafold-600.wdl:324:23: error: expected runtime key, but found `,`" + +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/protein-folding/workflows/alphafold/alphafold-600.wdl" +message = "alphafold-600.wdl:325:28: error: expected runtime key, but found `,`" + +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/protein-folding/workflows/alphafold/alphafold-600.wdl" +message = "alphafold-600.wdl:326:48: error: expected runtime key, but found `,`" + +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/protein-folding/workflows/esmfold/esmfold.wdl" +message = "esmfold.wdl:58:29: error: expected runtime key, but found `,`" + +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/protein-folding/workflows/esmfold/esmfold.wdl" +message = "esmfold.wdl:59:23: error: expected runtime key, but found `,`" + +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/protein-folding/workflows/esmfold/esmfold.wdl" +message = "esmfold.wdl:83:29: error: expected runtime key, but found `,`" + +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/protein-folding/workflows/esmfold/esmfold.wdl" +message = "esmfold.wdl:84:23: error: expected runtime key, but found `,`" + +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/protein-folding/workflows/esmfold/esmfold.wdl" +message = "esmfold.wdl:85:28: error: expected runtime key, but found `,`" + +[[diagnostics]] +document = "aws-samples/amazon-omics-tutorials:/example-workflows/protein-folding/workflows/esmfold/esmfold.wdl" +message = "esmfold.wdl:86:48: error: expected runtime key, but found `,`" + +[[diagnostics]] document = "biowdl/tasks:/bcftools.wdl" -message = '''[v1::E001] invalid escape character: '\_' (114:75-114:77)''' +message = 'bcftools.wdl:114:75: error: unknown escape sequence `\_`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/bedtools.wdl" -message = '''[v1::E001] invalid escape character: '\.' (27:48-27:50)''' +message = 'bedtools.wdl:27:48: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/bowtie.wdl" -message = '''[v1::E001] invalid escape character: '\.' (63:32-63:34)''' +message = 'bowtie.wdl:63:32: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/bowtie.wdl" -message = '''[v1::E001] invalid escape character: '\.' (63:39-63:41)''' +message = 'bowtie.wdl:63:39: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/bowtie.wdl" -message = '''[v1::E001] invalid escape character: '\.' (63:46-63:48)''' +message = 'bowtie.wdl:63:46: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/bowtie.wdl" -message = '''[v1::E001] invalid escape character: '\.' (75:48-75:50)''' +message = 'bowtie.wdl:75:48: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/centrifuge.wdl" -message = '''[v1::E001] invalid escape character: '\.' (122:57-122:59)''' +message = 'centrifuge.wdl:122:57: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/centrifuge.wdl" -message = '''[v1::E001] invalid escape character: '\.' (122:64-122:66)''' +message = 'centrifuge.wdl:122:64: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/centrifuge.wdl" -message = '''[v1::E001] invalid escape character: '\.' (199:57-199:59)''' +message = 'centrifuge.wdl:199:57: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/centrifuge.wdl" -message = '''[v1::E001] invalid escape character: '\.' (199:64-199:66)''' +message = 'centrifuge.wdl:199:64: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/centrifuge.wdl" -message = '''[v1::E001] invalid escape character: '\.' (256:57-256:59)''' +message = 'centrifuge.wdl:256:57: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/centrifuge.wdl" -message = '''[v1::E001] invalid escape character: '\.' (256:64-256:66)''' +message = 'centrifuge.wdl:256:64: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/common.wdl" -message = '''[v1::E001] invalid escape character: '\.' (275:45-275:47)''' +message = 'common.wdl:275:45: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/fastqc.wdl" -message = '''[v1::E001] invalid escape character: '\.' (59:42-59:44)''' +message = 'fastqc.wdl:59:42: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/fastqc.wdl" -message = '''[v1::E001] invalid escape character: '\.' (63:54-63:56)''' +message = 'fastqc.wdl:63:54: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/fastqc.wdl" -message = '''[v1::E001] invalid escape character: '\.' (63:58-63:60)''' +message = 'fastqc.wdl:63:58: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/gatk.wdl" -message = '''[v1::E001] invalid escape character: '\.' (127:57-127:59)''' +message = 'gatk.wdl:127:57: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/gatk.wdl" -message = '''[v1::E001] invalid escape character: '\.' (1597:41-1597:43)''' +message = 'gatk.wdl:1597:41: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/hisat2.wdl" -message = '''[v1::E001] invalid escape character: '\.' (60:34-60:36)''' +message = 'hisat2.wdl:60:34: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/hisat2.wdl" -message = '''[v1::E001] invalid escape character: '\.' (60:41-60:43)''' +message = 'hisat2.wdl:60:41: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/multiqc.wdl" -message = '''[v1::E001] invalid escape character: '\.' (133:45-133:47)''' +message = 'multiqc.wdl:133:45: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/picard.wdl" -message = '''[v1::E001] invalid escape character: '\.' (1021:48-1021:50)''' +message = 'picard.wdl:1021:48: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/picard.wdl" -message = '''[v1::E001] invalid escape character: '\.' (1191:48-1191:50)''' +message = 'picard.wdl:1191:48: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/picard.wdl" -message = '''[v1::E001] invalid escape character: '\.' (643:51-643:53)''' +message = 'picard.wdl:643:51: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/picard.wdl" -message = '''[v1::E001] invalid escape character: '\.' (785:51-785:53)''' +message = 'picard.wdl:785:51: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/picard.wdl" -message = '''[v1::E001] invalid escape character: '\.' (900:46-900:48)''' +message = 'picard.wdl:900:46: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/picard.wdl" -message = '''[v1::E001] invalid escape character: '\.' (901:46-901:48)''' +message = 'picard.wdl:901:46: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/picard.wdl" -message = '''[v1::E001] invalid escape character: '\.' (902:49-902:51)''' +message = 'picard.wdl:902:49: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/sambamba.wdl" -message = '''[v1::E001] invalid escape character: '\.' (145:49-145:51)''' +message = 'sambamba.wdl:145:49: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/sambamba.wdl" -message = '''[v1::E001] invalid escape character: '\.' (157:60-157:62)''' +message = 'sambamba.wdl:157:60: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/sambamba.wdl" -message = '''[v1::E001] invalid escape character: '\.' (91:44-91:46)''' +message = 'sambamba.wdl:91:44: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/samtools.wdl" -message = '''[v1::E001] invalid escape character: '\.' (238:53-238:55)''' +message = 'samtools.wdl:238:53: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/samtools.wdl" -message = '''[v1::E001] invalid escape character: '\.' (326:44-326:46)''' +message = 'samtools.wdl:326:44: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/samtools.wdl" -message = '''[v1::E001] invalid escape character: '\.' (414:44-414:46)''' +message = 'samtools.wdl:414:44: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/samtools.wdl" -message = '''[v1::E001] invalid escape character: '\.' (458:49-458:51)''' +message = 'samtools.wdl:458:49: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/samtools.wdl" -message = '''[v1::E001] invalid escape character: '\.' (470:60-470:62)''' +message = 'samtools.wdl:470:60: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/samtools.wdl" -message = '''[v1::E001] invalid escape character: '\.' (80:42-80:44)''' +message = 'samtools.wdl:80:42: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/umi-tools.wdl" -message = '''[v1::E001] invalid escape character: '\.' (95:49-95:51)''' +message = 'umi-tools.wdl:95:49: error: unknown escape sequence `\.`' -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "biowdl/tasks:/umi.wdl" -message = '''[v1::E001] invalid escape character: '\.' (39:60-39:62)''' +message = 'umi.wdl:39:60: error: unknown escape sequence `\.`' + +[[diagnostics]] +document = "broadinstitute/palantir-workflows:/HaplotypeMap/BuildHaplotypeMap.wdl" +message = "BuildHaplotypeMap.wdl:17:1: error: a WDL document must start with a version statement" -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "broadinstitute/warp:/pipelines/skylab/scATAC/scATAC.wdl" -message = "[v1::E003] duplicate runtime keys: 'cpu' (199:9-199:12, 203:9-203:12)" +message = "scATAC.wdl:203:9: error: duplicate key `cpu` in runtime section" + +[[diagnostics]] +document = "broadinstitute/warp:/tasks/broad/GermlineVariantDiscovery.wdl" +message = "GermlineVariantDiscovery.wdl:137:32: error: expected string, but found integer" + +[[diagnostics]] +document = "broadinstitute/warp:/tasks/broad/GermlineVariantDiscovery.wdl" +message = "GermlineVariantDiscovery.wdl:65:32: error: expected string, but found integer" + +[[diagnostics]] +document = "broadinstitute/warp:/tasks/broad/UltimaGenomicsWholeGenomeGermlineTasks.wdl" +message = "UltimaGenomicsWholeGenomeGermlineTasks.wdl:814:27: error: expected string, but found integer" + +[[diagnostics]] +document = "broadinstitute/warp:/tasks/broad/UltimaGenomicsWholeGenomeGermlineTasks.wdl" +message = "UltimaGenomicsWholeGenomeGermlineTasks.wdl:866:27: error: expected string, but found integer" + +[[diagnostics]] +document = "broadinstitute/warp:/tests/cemba/pr/CheckCembaOutputs.wdl" +message = "CheckCembaOutputs.wdl:1:1: error: a WDL document must start with a version statement" -[[concerns]] -kind = "ValidationFailure" +[[diagnostics]] document = "chanzuckerberg/czid-workflows:/workflows/index-generation/index-generation.wdl" -message = "[v1::E002] invalid version: 'version development' (1:1-1:20)" +message = "index-generation.wdl:1:9: error: unsupported WDL version `development`" diff --git a/wdl-gauntlet/CHANGELOG.md b/wdl-gauntlet/CHANGELOG.md index 8c34f22ba..d402f5878 100644 --- a/wdl-gauntlet/CHANGELOG.md +++ b/wdl-gauntlet/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Changed + +* Migrated `wdl-gauntlet` to use the new parser implementation ([#76](https://github.com/stjude-rust-labs/wdl/pull/76)) + ## 0.2.0 - 5-31-2024 ### Changed diff --git a/wdl-gauntlet/Cargo.toml b/wdl-gauntlet/Cargo.toml index bbeb85d26..5e1f37e0e 100644 --- a/wdl-gauntlet/Cargo.toml +++ b/wdl-gauntlet/Cargo.toml @@ -8,20 +8,20 @@ edition.workspace = true # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +wdl-ast = { path = "../wdl-ast", version = "0.2.0", features = ["codespan"] } +wdl-lint = { path = "../wdl-lint", version = "0.3.0" } clap.workspace = true colored.workspace = true -dirs = "5.0.1" +dirs.workspace = true env_logger.workspace = true -faster-hex = "0.9.0" -git2 = "0.18.3" +faster-hex.workspace = true +git2.workspace = true indexmap.workspace = true log.workspace = true -nonempty.workspace = true serde.workspace = true serde_with.workspace = true -temp-dir = "0.1.13" +temp-dir.workspace = true tokio.workspace = true toml.workspace = true -wdl-ast = { path = "../wdl-ast", version = "0.2.0" } -wdl-core = { path = "../wdl-core", version = "0.2.0" } -wdl-grammar = { path = "../wdl-grammar", version = "0.3.0" } +anyhow.workspace = true +codespan-reporting.workspace = true diff --git a/wdl-gauntlet/src/config.rs b/wdl-gauntlet/src/config.rs index f819ad415..badeea56d 100644 --- a/wdl-gauntlet/src/config.rs +++ b/wdl-gauntlet/src/config.rs @@ -7,13 +7,10 @@ use std::path::PathBuf; use log::debug; use log::log_enabled; use log::trace; -use wdl_core::Version; pub mod inner; -pub mod reportable_concern; pub use inner::Inner; -pub use reportable_concern::ReportableConcern; /// The default directory name for the `wdl-gauntlet` configuration file const DEFAULT_CONFIG_DIR: &str = "wdl-gauntlet"; @@ -117,8 +114,8 @@ impl Config { /// /// In both cases, the `path` will be stored within the [`Config`]. This has /// the effect of ensuring the value loaded here will be saved to the - /// inteded location (should [`Config::save()`] be called). - pub fn load_or_new(path: PathBuf, version: Version) -> Result { + /// intended location (should [`Config::save()`] be called). + pub fn load_or_new(path: PathBuf) -> Result { if !path.exists() { debug!( "no configuration exists at {}, creating new configuration.", @@ -126,7 +123,7 @@ impl Config { ); return Ok(Self { path: Some(path), - inner: Inner::from(version), + inner: Inner::default(), }); } @@ -143,63 +140,21 @@ impl Config { if log_enabled!(log::Level::Trace) { trace!("Loaded configuration file with the following:"); trace!(" -> {} repositories.", result.inner().repositories().len()); - let num_concerns = result.inner().concerns().len(); - trace!(" -> {} ignored errors.", num_concerns); + trace!( + " -> {} ignored diagnostics.", + result.inner().diagnostics().len() + ); } Ok(result) } /// Gets the [`Inner`] configuration by reference. - /// - /// ``` - /// use wdl_gauntlet as gauntlet; - /// - /// let config = r#"version = "v1" - /// - /// [repositories."Foo/Bar"] - /// identifier = "Foo/Bar""# - /// .parse::()?; - /// - /// assert_eq!(config.inner().version(), &wdl_core::Version::V1); - /// assert_eq!(config.inner().repositories().len(), 1); - /// assert_eq!(config.inner().concerns().len(), 0); - /// - /// Ok::<(), Box>(()) - /// ``` pub fn inner(&self) -> &Inner { &self.inner } /// Gets the [`Inner`] configuration by mutable reference. - /// - /// ``` - /// use indexmap::IndexSet; - /// use wdl_gauntlet as gauntlet; - /// use wdl_gauntlet::config::reportable_concern::Kind; - /// use wdl_gauntlet::config::ReportableConcern; - /// - /// let mut config = r#"version = "v1" - /// - /// [repositories."Foo/Bar"] - /// identifier = "Foo/Bar" - /// commit_hash = "d8e8b48ce8faad50b24779d785cd504baadfb13f""# - /// .parse::()?; - /// - /// let mut concerns = IndexSet::new(); - /// concerns.insert(ReportableConcern::new( - /// Kind::ValidationFailure, - /// "Foo/Bar:quux.wdl", - /// "Hello, world!", - /// )); - /// config.inner_mut().set_concerns(concerns); - /// - /// assert_eq!(config.inner().version(), &wdl_core::Version::V1); - /// assert_eq!(config.inner().repositories().len(), 1); - /// assert_eq!(config.inner().concerns().len(), 1); - /// - /// Ok::<(), Box>(()) - /// ``` pub fn inner_mut(&mut self) -> &mut Inner { &mut self.inner } diff --git a/wdl-gauntlet/src/config/inner.rs b/wdl-gauntlet/src/config/inner.rs index b34b73218..1a2216510 100644 --- a/wdl-gauntlet/src/config/inner.rs +++ b/wdl-gauntlet/src/config/inner.rs @@ -5,64 +5,76 @@ use std::path::Path; use indexmap::IndexMap; -use indexmap::IndexSet; use serde::Deserialize; use serde::Serialize; use serde_with::serde_as; -use crate::config::ReportableConcern; use crate::repository; -mod repr; +/// Represents a diagnostic reported for a document. +#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, PartialOrd, Ord)] +pub struct Diagnostic { + /// The identifier of the document containing the diagnostic. + document: String, + /// The short-form diagnostic message. + message: String, +} + +impl Diagnostic { + /// Creates a new diagnostic for the given document identifier and message. + pub fn new(document: String, message: String) -> Self { + Self { document, message } + } -pub use repr::ReportableConcernsRepr; + /// Gets the identifier of the document. + pub fn document(&self) -> &str { + &self.document + } -/// A set of concerns serialized into their string form for storage within a -/// configuration file. -pub type ReportableConcerns = IndexSet; + /// Gets the diagnostic message. + pub fn message(&self) -> &str { + &self.message + } +} -/// The configuration object for a [`Config`](super::Config). +/// The configuration object for a [`Config`](super::Config). /// /// This object stores the actual configuration values for this subcommand. #[serde_as] #[derive(Debug, Default, Deserialize, Serialize)] pub struct Inner { - /// The WDL version. - version: wdl_core::Version, - /// The repositories. #[serde(default)] repositories: IndexMap, - /// The reportable concerns. - #[serde_as(as = "ReportableConcernsRepr")] - #[serde(default, skip_serializing_if = "IndexSet::is_empty")] - concerns: ReportableConcerns, + /// The expected diagnostics across all repositories. + #[serde(default)] + diagnostics: Vec, } impl Inner { - /// Gets the [`Version`](wdl_core::Version) for this [`Inner`] by reference. - /// - /// # Examples - /// - /// ``` - /// use gauntlet::config::Inner; - /// use wdl_gauntlet as gauntlet; - /// - /// let config = r#"version = "v1""#; - /// - /// let inner: Inner = toml::from_str(&config).unwrap(); - /// assert_eq!(inner.version(), &wdl_core::Version::V1); - /// ``` - pub fn version(&self) -> &wdl_core::Version { - &self.version - } - - /// Gets the [`Repositories`] for this [`Inner`] by reference. + /// Gets the repositories for this [`Inner`] by reference. pub fn repositories(&self) -> &IndexMap { &self.repositories } + /// Gets the list of expected diagnostics. + pub fn diagnostics(&self) -> &[Diagnostic] { + &self.diagnostics + } + + /// Sets the list of expected diagnostics. + pub fn set_diagnostics(&mut self, diagnostics: Vec) { + self.diagnostics = diagnostics; + } + + /// Gets the repositories for this [`Inner`] by mutable reference. + pub fn repositories_mut( + &mut self, + ) -> &mut IndexMap { + &mut self.repositories + } + /// Extends the `repositories` for this [`Inner`] with the given items. pub fn extend_repositories( &mut self, @@ -79,30 +91,12 @@ impl Inner { } } - /// Gets the [`ReportableConcerns`] for this [`Inner`] by reference. - pub fn concerns(&self) -> &ReportableConcerns { - &self.concerns - } - - /// Replaces the [`ReportableConcerns`] for this [`Inner`]. - pub fn set_concerns(&mut self, concerns: ReportableConcerns) { - self.concerns = concerns; - self.concerns.sort(); - } - - /// Sorts the [`Repositories`] and the [`ReportableConcerns`] by key. + /// Sorts the configuration. + /// + /// This sorts the repositories by their identifiers and the diagnostics by + /// their document identifiers and messages (lexicographically). pub fn sort(&mut self) { self.repositories.sort_by(|a, _, b, _| a.cmp(b)); - self.concerns.sort(); - } -} - -impl From for Inner { - fn from(version: wdl_core::Version) -> Self { - Self { - version, - repositories: Default::default(), - concerns: Default::default(), - } + self.diagnostics.sort(); } } diff --git a/wdl-gauntlet/src/config/inner/repr.rs b/wdl-gauntlet/src/config/inner/repr.rs deleted file mode 100644 index a6864ee02..000000000 --- a/wdl-gauntlet/src/config/inner/repr.rs +++ /dev/null @@ -1,29 +0,0 @@ -//! Representation of ignored errors as stored in the configuration file. - -// This compiler attribute is added because `serde_with` generates a struct -// below that does not have any documentation. The only way to silence the -// warning is to allow missing docs for this file. -#![allow(missing_docs)] - -use std::convert::Infallible; - -use crate::config::inner::ReportableConcerns; -use crate::config::ReportableConcern; - -serde_with::serde_conv!( - pub ReportableConcernsRepr, - ReportableConcerns, - |concerns: &ReportableConcerns| { - let mut result = concerns - .clone() - .into_iter() - .collect::>(); - result.sort(); - result - }, - |errors: Vec| -> Result<_, Infallible> { - Ok(errors - .into_iter() - .collect::()) - } -); diff --git a/wdl-gauntlet/src/config/reportable_concern.rs b/wdl-gauntlet/src/config/reportable_concern.rs deleted file mode 100644 index 1f05c4067..000000000 --- a/wdl-gauntlet/src/config/reportable_concern.rs +++ /dev/null @@ -1,197 +0,0 @@ -//! A reportable concern. -//! -//! Reportable concerns are [`Concern`](wdl_core::Concern)s that have been -//! simplified and serialized for reporting within a [configuration -//! file](crate::config::Inner). Reportable concerns ignore `LintWarning`s, -//! only focusing on `ParseError`s and `ValidationFailure`s. - -use serde::Deserialize; -use serde::Serialize; - -/// A kind of reportable concern. -#[derive(Clone, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)] -pub enum Kind { - /// A parse error. - ParseError, - - /// A validation failure. - ValidationFailure, - - /// A lint warning. - LintWarning, -} - -/// A representation of an error to ignore as serialized in the configuration -/// file. -/// -/// In short, I wanted to convert the -/// [`Concerns`](crate::config::inner::ReportableConcerns) object to something -/// more visually understandable in the configuration file. Thus, the only -/// purpose of this struct is to serialize and deserialize entries in that -/// [`HashMap`](std::collections::HashMap) in a prettier way. -#[derive(Clone, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)] -pub struct ReportableConcern { - /// The kind. - kind: Kind, - - /// The document containing the concern. - document: String, - - /// The concern message. - message: String, -} - -impl ReportableConcern { - /// Create a new [`ReportableConcern`]. - /// - /// **Note:** most often, you'll use [`ReportableConcern::from_concern()`] - /// to convert a [`Concern`](wdl_core::Concern) to a [`ReportableConcern`]. - /// - /// # Examples - /// - /// ``` - /// use wdl_gauntlet::config::reportable_concern::Kind; - /// use wdl_gauntlet::config::ReportableConcern; - /// - /// let reportable_concern = - /// ReportableConcern::new(Kind::ValidationFailure, "Foo/Bar:quux.wdl", "Hello, world!"); - /// - /// assert_eq!(reportable_concern.kind(), &Kind::ValidationFailure); - /// assert_eq!(reportable_concern.document(), "Foo/Bar:quux.wdl"); - /// assert_eq!(reportable_concern.message(), "Hello, world!"); - /// ``` - pub fn new(kind: Kind, document: impl Into, message: impl Into) -> Self { - let document = document.into(); - let message = message.into(); - - Self { - kind, - document, - message, - } - } - - /// Create a new [`ReportableConcern`] from a document name and a - /// [`Concern`](wdl_core::Concern). - /// - /// # Examples - /// - /// ``` - /// use wdl_core::concern::parse; - /// use wdl_core::file::Location; - /// use wdl_core::Concern; - /// use wdl_gauntlet::config::reportable_concern::Kind; - /// use wdl_gauntlet::config::ReportableConcern; - /// - /// let error = parse::Error::new("Hello, world!", Location::Unplaced); - /// let concern = Concern::ParseError(error); - /// - /// let reportable_concern = - /// ReportableConcern::from_concern("Foo/Bar:quux.wdl", concern, false).unwrap(); - /// - /// assert_eq!(reportable_concern.message(), "Hello, world!"); - /// assert_eq!(reportable_concern.document(), "Foo/Bar:quux.wdl"); - /// assert_eq!(reportable_concern.kind(), &Kind::ParseError); - /// ``` - pub fn from_concern( - document: impl Into, - concern: wdl_core::Concern, - arena: bool, - ) -> Option { - let document = document.into(); - let message = concern.to_string(); - - match &concern { - wdl_core::Concern::LintWarning(_) => { - if !arena { - None - } else { - Some(ReportableConcern { - kind: Kind::LintWarning, - document, - message, - }) - } - } - wdl_core::Concern::ParseError(_) => { - if arena { - None - } else { - Some(ReportableConcern { - kind: Kind::ParseError, - document, - message, - }) - } - } - wdl_core::Concern::ValidationFailure(_) => { - if arena { - None - } else { - Some(ReportableConcern { - kind: Kind::ValidationFailure, - document, - message, - }) - } - } - } - } - - /// Gets the [`Kind`] from the [`ReportableConcern`] by reference. - /// - /// # Examples - /// - /// ``` - /// use wdl_gauntlet::config::reportable_concern::Kind; - /// use wdl_gauntlet::config::ReportableConcern; - /// - /// let reportable_concern = - /// ReportableConcern::new(Kind::ValidationFailure, "Foo/Bar:quux.wdl", "Hello, world!"); - /// - /// assert_eq!(reportable_concern.kind(), &Kind::ValidationFailure); - /// ``` - pub fn kind(&self) -> &Kind { - &self.kind - } - - /// Gets the document name from the [`ReportableConcern`] by reference. - /// - /// # Examples - /// - /// ``` - /// use wdl_gauntlet::config::reportable_concern::Kind; - /// use wdl_gauntlet::config::ReportableConcern; - /// - /// let reportable_concern = - /// ReportableConcern::new(Kind::ValidationFailure, "Foo/Bar:quux.wdl", "Hello, world!"); - /// - /// assert_eq!(reportable_concern.document(), "Foo/Bar:quux.wdl"); - /// ``` - pub fn document(&self) -> &str { - self.document.as_ref() - } - - /// Gets the concern message from the [`ReportableConcern`] by reference. - /// - /// # Examples - /// - /// ``` - /// use wdl_gauntlet::config::reportable_concern::Kind; - /// use wdl_gauntlet::config::ReportableConcern; - /// - /// let reportable_concern = - /// ReportableConcern::new(Kind::ValidationFailure, "Foo/Bar:quux.wdl", "Hello, world!"); - /// - /// assert_eq!(reportable_concern.message(), "Hello, world!"); - /// ``` - pub fn message(&self) -> &str { - self.message.as_ref() - } -} - -impl std::fmt::Display for ReportableConcern { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "|{}| {}", self.document, self.message) - } -} diff --git a/wdl-gauntlet/src/document/identifier.rs b/wdl-gauntlet/src/document/identifier.rs index 37cf1ea7c..94198d14d 100644 --- a/wdl-gauntlet/src/document/identifier.rs +++ b/wdl-gauntlet/src/document/identifier.rs @@ -78,6 +78,11 @@ impl Identifier { pub fn repository(&self) -> &repository::Identifier { &self.repository } + + /// Gets the path of the document. + pub fn path(&self) -> &str { + &self.path + } } impl std::fmt::Display for Identifier { diff --git a/wdl-gauntlet/src/lib.rs b/wdl-gauntlet/src/lib.rs index 60cb39401..b12152df0 100644 --- a/wdl-gauntlet/src/lib.rs +++ b/wdl-gauntlet/src/lib.rs @@ -6,17 +6,26 @@ #![warn(clippy::missing_docs_in_private_items)] #![warn(rustdoc::broken_intra_doc_links)] +use std::path::Path; use std::path::PathBuf; use std::process; +use std::time::Duration; +use std::time::Instant; +use anyhow::Context; +use anyhow::Result; use clap::Parser; -use colored::Colorize as _; +use codespan_reporting::files::SimpleFile; +use codespan_reporting::term; +use codespan_reporting::term::termcolor::Buffer; +use codespan_reporting::term::termcolor::ColorChoice; +use codespan_reporting::term::termcolor::StandardStream; +use codespan_reporting::term::DisplayStyle; +use colored::Colorize; use indexmap::IndexSet; use log::debug; use log::info; use log::trace; -use wdl_ast as ast; -use wdl_grammar as grammar; pub mod config; pub mod document; @@ -25,56 +34,20 @@ pub mod repository; pub use config::Config; pub use report::Report; +use report::Status; +use report::UnmatchedStatus; pub use repository::Repository; +use wdl_ast::experimental::Document; +use wdl_ast::experimental::Validator; +use wdl_lint::v1::rules; -use crate::config::ReportableConcern; -use crate::report::Status; -use crate::repository::Identifier; use crate::repository::WorkDir; /// The exit code to emit when any test unexpectedly fails. -const EXIT_CODE_FAILED: i32 = 1; +const EXIT_CODE_UNEXPECTED: i32 = 1; /// The exit code to emit when an error was expected but not encountered. -const EXIT_CODE_UNDETECTED_IGNORED_CONCERNS: i32 = 2; - -/// An error related to the `wdl-grammar gauntlet` subcommand. -#[derive(Debug)] -pub enum Error { - /// A WDL 1.x abstract syntax tree error. - AstV1(ast::v1::Error), - - /// A configuration file error. - Config(config::Error), - - /// An input/output error. - Io(std::io::Error), - - /// A WDL 1.x parse tree error. - GrammarV1(grammar::v1::Error), - - /// An error related to a repository [`Identifier`]. - RepositoryIdentifier(repository::identifier::Error), -} - -impl std::fmt::Display for Error { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - Error::AstV1(err) => write!(f, "ast error: {err}"), - Error::Config(err) => write!(f, "configuration file error: {err}"), - Error::Io(err) => write!(f, "i/o error: {err}"), - Error::GrammarV1(err) => write!(f, "grammar error: {err}"), - Error::RepositoryIdentifier(err) => { - write!(f, "repository identifier error: {err}") - } - } - } -} - -impl std::error::Error for Error {} - -/// A [`Result`](std::result::Result) with an [`Error`]. -type Result = std::result::Result; +const EXIT_CODE_MISSING: i32 = 2; /// A command-line utility for testing the compatibility of `wdl-grammar` and /// `wdl-ast` against a wide variety of community WDL repositories. @@ -86,9 +59,9 @@ pub struct Args { /// test repository specified on the CL. Normally, there is only one /// repository on disk at a time. The difference in disk space usage /// should be negligible. - pub repositories: Option>, + pub repositories: Vec, - /// Enable "arena mode", which switches the reported concerns from + /// Enable "arena mode", which switches the reported diagnostics from /// syntax errors to opinionated lint warnings. #[arg(short, long)] pub arena: bool, @@ -104,8 +77,8 @@ pub struct Args { /// If provided, only shows tests whose identifier contains the provided /// string(s). - #[arg(short, long)] - pub filter: Option>, + #[arg(short, long = "filter")] + pub filters: Vec, /// Enables logging for all modules (not just `wdl-gauntlet`). #[arg(short, long)] @@ -123,7 +96,7 @@ pub struct Args { #[arg(short, long)] pub quiet: bool, - /// Overwrites the configuration file with new expected concerns and the + /// Overwrites the configuration file with new expected diagnostics and the /// latest commit hashes. This will create temporary shallow clones of every /// test repository. Normally, there is only one repository on disk at a /// time. The difference in disk space usage should be negligible. @@ -134,10 +107,6 @@ pub struct Args { #[arg(long)] pub show_warnings: bool, - /// The Workflow Description Language (WDL) specification version to use. - #[arg(value_name = "VERSION", long, default_value_t, value_enum)] - pub specification_version: wdl_core::Version, - /// All available information, including trace information, is logged in /// the console. #[arg(short, long)] @@ -157,7 +126,7 @@ pub async fn gauntlet(args: Args) -> Result<()> { } false => { let path = args.config_file.unwrap_or(Config::default_path(args.arena)); - Config::load_or_new(path, args.specification_version).map_err(Error::Config)? + Config::load_or_new(path)? } }; @@ -168,47 +137,38 @@ pub async fn gauntlet(args: Args) -> Result<()> { config.inner_mut().update_repositories(work_dir.root()); } - if let Some(repositories) = args.repositories { - repositories.into_iter().for_each(|value| { - let identifier = value - .parse::() - .map_err(Error::RepositoryIdentifier) - .unwrap(); - work_dir.add_by_identifier(&identifier); - }); - config - .inner_mut() - .extend_repositories(work_dir.repositories().clone()) + for repo in args.repositories.into_iter() { + let identifier = repo + .parse() + .with_context(|| format!("repository identifier `{repo}` is not valid"))?; + work_dir.add_by_identifier(&identifier); } - let mut report = Report::from(std::io::stdout().lock()); + config + .inner_mut() + .extend_repositories(work_dir.repositories().clone()); + let mut report = Report::from(StandardStream::stdout(ColorChoice::Auto)); + let mut total_time = Duration::ZERO; for (index, (repository_identifier, repo)) in config.inner().repositories().iter().enumerate() { - let results = repo.wdl_files(work_dir.root()); - - report.title(repository_identifier).map_err(Error::Io)?; - report.next_section().map_err(Error::Io)?; - - for (relative_path, content) in results { + let files = repo.wdl_files(work_dir.root()); + report.title(repository_identifier).with_context(|| { + format!("failed to write report title for repository `{repository_identifier}`") + })?; + report + .next_section() + .context("failed to write next section")?; + + for (relative_path, source) in files { let abs_path = work_dir .root() .join(repository_identifier.organization()) .join(repository_identifier.name()) .join(&relative_path); - if let Some(ref filters) = args.filter { - let mut skip = true; - for filter in filters { - if content.contains(filter) { - skip = false; - break; - } - } - - if skip { - trace!("skipping: {:?}", abs_path); - continue; - } + if args.filters.contains(&relative_path) || repo.filters().contains(&relative_path) { + trace!("skipping: {:?}", abs_path); + continue; } trace!("processing: {:?}", abs_path); @@ -216,166 +176,194 @@ pub async fn gauntlet(args: Args) -> Result<()> { let document_identifier = document::Identifier::new(repository_identifier.clone(), relative_path); - match config.inner().version() { - wdl_core::Version::V1 => { - let mut detected_concerns = IndexSet::new(); - - let (pt, these_concerns) = grammar::v1::parse(&content) - .map_err(Error::GrammarV1)? - .into_parts(); - if let Some(these_concerns) = these_concerns { - detected_concerns.extend(these_concerns.into_inner().iter().filter_map( - |concern| { - // from_concern() will return `None` if the concern is not - // of the right type (based on the value of `args.arena`) - // in which case filter_map() will drop it. - ReportableConcern::from_concern( - document_identifier.to_string(), - concern.clone(), - args.arena, - ) - }, - )); + // Parse and validate the document + // If "arena mode" is activated, also validate with the lint rules enabled + let before = Instant::now(); + let diagnostics = match Document::parse(&source).into_result() { + Ok(document) => { + let mut validator = Validator::default(); + if args.arena { + validator.add_v1_visitors(rules().into_iter().map(|r| r.visitor())); + } + + match validator.validate(&document) { + Ok(()) => None, + Err(diagnostics) => Some(diagnostics), } + } + Err(diagnostics) => { + // If we're in arena mode, skip over the files that failed to fully parse + // We log those diagnostics as part of the normal gauntlet run. + if args.arena { + trace!("skipping {:?} as it has parse errors", abs_path); + continue; + } + + Some(diagnostics) + } + }; + + let elapsed = before.elapsed(); + total_time += elapsed; + + // Convert the diagnostics to a set of short-form messages + let mut actual = IndexSet::new(); + if let Some(diagnostics) = diagnostics { + let file: SimpleFile<_, _> = SimpleFile::new( + Path::new(document_identifier.path()) + .file_name() + .expect("should have file name") + .to_str() + .expect("path should be UTF-8"), + source, + ); + let config = codespan_reporting::term::Config { + display_style: DisplayStyle::Short, + ..Default::default() + }; + + for diagnostic in diagnostics.iter() { + let mut buffer = Buffer::no_color(); + term::emit(&mut buffer, &config, &file, &diagnostic.to_codespan()) + .context("failed to write diagnostic")?; + + assert!( + actual.insert( + std::str::from_utf8(buffer.as_slice()) + .context("diagnostic should be UTF-8")? + .trim() + .to_string() + ) + ); + } + } - if let Some(pt) = pt { - let (_, these_concerns) = - ast::v1::parse(pt).map_err(Error::AstV1)?.into_parts(); - if let Some(these_concerns) = these_concerns { - detected_concerns.extend( - these_concerns.into_inner().iter().filter_map(|concern| { - // from_concern() will return `None` if the concern is not - // of the right type (based on the value of `args.arena`) - // in which case filter_map() will drop it. - ReportableConcern::from_concern( - document_identifier.to_string(), - concern.clone(), - args.arena, - ) - }), - ); + // As the list of diagnostics has been sorted by document identifier, do + // a binary search and collect the matching messages + let diagnostics = config.inner().diagnostics(); + let doc_id_str = document_identifier.to_string(); + let expected: IndexSet = diagnostics + .binary_search_by_key(&doc_id_str.as_str(), |d| d.document()) + .map(|mut start_index| { + // As binary search may return any matching index, back up until we find the + // start of the range + for i in (0..start_index).rev() { + if diagnostics[i].document() != doc_id_str { + break; } + + start_index -= 1; } - let expected_concerns = config - .inner() - .concerns() + diagnostics[start_index..] .iter() - .filter_map(|concern| { - if concern.document() == document_identifier.to_string() { - Some(concern.clone()) + .map_while(|d| { + if d.document() == doc_id_str { + Some(d.message().to_string()) } else { None } }) - .collect::>(); - - let unexpected_concerns = &detected_concerns - &expected_concerns; - let missing_concerns = &expected_concerns - &detected_concerns; - - if !unexpected_concerns.is_empty() { - report - .register( - document_identifier, - Status::UnexpectedConcerns( - unexpected_concerns.into_iter().collect::>(), - ), - ) - .map_err(Error::Io)?; - } else if !missing_concerns.is_empty() { - report - .register( - document_identifier, - Status::MissingExpectedConcerns( - missing_concerns.into_iter().collect::>(), - ), - ) - .map_err(Error::Io)?; - } else if !detected_concerns.is_empty() { - report - .register(document_identifier, Status::ConcernsMatched) - .map_err(Error::Io)?; - } else { - report - .register(document_identifier, Status::Success) - .map_err(Error::Io)?; + .collect() + }) + .unwrap_or_default(); + + let unexpected = &actual - &expected; + let missing = &expected - &actual; + + let status = if !unexpected.is_empty() || !missing.is_empty() { + Status::DiagnosticsUnmatched( + UnmatchedStatus { + missing, + unexpected, + all: actual, } - } - } + .into(), + ) + } else if !actual.is_empty() { + Status::DiagnosticsMatched(actual) + } else { + Status::Success + }; + + report + .register(document_identifier, status, elapsed) + .context("failed to register report status")?; } - report.next_section().map_err(Error::Io)?; + report + .next_section() + .context("failed to transition to next report section")?; if !args.no_errors { report .report_unexpected_errors(repository_identifier) - .map_err(Error::Io)?; + .context("failed to report unexpected errors")?; } - report.next_section().map_err(Error::Io)?; - - report.footer(repository_identifier).map_err(Error::Io)?; - report.next_section().map_err(Error::Io)?; + report + .next_section() + .context("failed to transition to next report section")?; + report + .footer(repository_identifier) + .context("failed to write report footer")?; + report + .next_section() + .context("failed to transition to next report section")?; if index != config.inner().repositories().len() - 1 { println!(); } } - let missing_but_expected = report - .results() - .clone() - .into_iter() - .filter_map(|(_, status)| match status { - Status::MissingExpectedConcerns(concerns) => Some(concerns), - _ => None, - }) - .flatten() - .collect::>(); - - let unexpected = report - .results() - .clone() - .into_iter() - .filter_map(|(_, status)| match status { - Status::UnexpectedConcerns(concerns) => Some(concerns), - _ => None, - }) - .flatten() - .collect::>(); + let mut missing = 0; + let mut unexpected = 0; + let mut diagnostics = Vec::new(); + for (identifier, status) in report.into_results() { + let messages = match status { + Status::Success => continue, + Status::DiagnosticsMatched(all) => all, + Status::DiagnosticsUnmatched(unmatched) => { + missing += unmatched.missing.len(); + unexpected += unmatched.unexpected.len(); + unmatched.all + } + }; - if args.refresh { - info!("adding {} new expected concerns.", unexpected.len()); - info!( - "removing {} outdated expected concerns.", - missing_but_expected.len() - ); + // Don't bother rebuilding the diagnostics + if !args.refresh { + continue; + } - let existing = config.inner().concerns().clone(); - let new = existing - .difference(&missing_but_expected) - .chain(unexpected.iter()) - .cloned() - .collect::>(); - config.inner_mut().set_concerns(new); + for message in messages { + diagnostics.push(config::inner::Diagnostic::new( + identifier.to_string(), + message, + )); + } + } - config.save().map_err(Error::Config)?; - } else if !missing_but_expected.is_empty() { + println!("\nTotal analysis time: {total_time:?}"); + + if args.refresh { + info!("adding {unexpected} new expected diagnostics."); + info!("removing {missing} outdated expected diagnostics."); + + config.inner_mut().set_diagnostics(diagnostics); + config.inner_mut().sort(); + config.save().context("failed to save configuration file")?; + } else if missing > 0 { println!( "\n{}\n", - "undetected but expected concerns remain: you should remove these from your \ + "missing but expected diagnostics remain: you should remove these from your \ configuration file or run the command with the `--refresh` option!" .red() .bold() ); - for concern in missing_but_expected { - println!("{}\n\n", concern); - } - - process::exit(EXIT_CODE_UNDETECTED_IGNORED_CONCERNS); - } else if !unexpected.is_empty() { - process::exit(EXIT_CODE_FAILED); + process::exit(EXIT_CODE_MISSING); + } else if unexpected > 0 { + process::exit(EXIT_CODE_UNEXPECTED); } Ok(()) diff --git a/wdl-gauntlet/src/report.rs b/wdl-gauntlet/src/report.rs index cedba9638..0b4fcb3d2 100644 --- a/wdl-gauntlet/src/report.rs +++ b/wdl-gauntlet/src/report.rs @@ -1,40 +1,46 @@ //! Reporting. use std::collections::HashMap; +use std::time::Duration; use colored::Colorize as _; -use indexmap::IndexMap; +use indexmap::IndexSet; -use crate::config::ReportableConcern; use crate::document; use crate::repository; +/// Represents an unmatched status. +#[derive(Clone, Debug)] +pub struct UnmatchedStatus { + /// The missing set of diagnostics. + /// + /// These are the diagnostics that were in the config but were not + /// emitted by the parser/validator. + pub missing: IndexSet, + /// The unexpected set of diagnostics. + /// + /// These are the diagnostics that were not in the configuration but + /// were emitted by the parser/validator. + pub unexpected: IndexSet, + /// The set of all diagnostics that were emitted. + pub all: IndexSet, +} + /// The status of a single parsing test. -#[derive(Clone, Debug, Eq, Hash, PartialEq)] +#[derive(Clone, Debug)] pub enum Status { /// The document passed parsing, validation, and linting successfully with - /// no concerns for both the parse tree and the abstract syntax tree. + /// no diagnostics to report. Success, - /// The document had concerns, but the concerns exactly matched what was - /// already expected in the configuration, meaning that this [`Status`] is - /// considered successful. - ConcernsMatched, - - /// The document had concerns, and some concerns were missing from what was - /// expected in the configuration. This [`Status`] is considered a test - /// failure. - UnexpectedConcerns(Vec), + /// The document had diagnostics, but the diagnostics exactly matched what + /// was already expected in the configuration, meaning that this + /// [`Status`] is considered successful. + DiagnosticsMatched(IndexSet), - /// The document had concerns, and all of those concerns were accounted for - /// in the configuration. However, there were some concerns declared in the - /// configuration that were not found. This [`Status`] is considered a test - /// failure. - /// - /// Note: this represents a situation where a concern was removed from the - /// source document. In this case, the concern likely needs to be removed - /// from the expected concerns. - MissingExpectedConcerns(Vec), + /// The document had diagnostics, but they did not match what was expected + /// in the configuration. + DiagnosticsUnmatched(Box), } /// A printable section within a report for a repository. @@ -46,8 +52,8 @@ pub enum Section { /// Summarized status of each parsing test. Summary, - /// Detailed information on unexpected concerns that were encountered. - Concerns, + /// Detailed information on unexpected diagnostics that were encountered. + Diagnostics, /// Summarized information about all results reported. Footer, @@ -60,10 +66,8 @@ impl Status { /// of tests that passed for a repository. pub fn success(&self) -> bool { match self { - Status::Success => true, - Status::ConcernsMatched => true, - Status::UnexpectedConcerns(_) => false, - Status::MissingExpectedConcerns(_) => false, + Self::Success | Self::DiagnosticsMatched(_) => true, + Self::DiagnosticsUnmatched { .. } => false, } } } @@ -71,10 +75,19 @@ impl Status { impl std::fmt::Display for Status { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { - Status::Success => write!(f, "โœ…"), - Status::ConcernsMatched => write!(f, "๐Ÿ“˜"), - Status::UnexpectedConcerns(_) => write!(f, "โŒ"), - Status::MissingExpectedConcerns(_) => write!(f, "๐Ÿ”„๏ธ"), + Self::Success => write!(f, "โœ…"), + Self::DiagnosticsMatched(_) => write!(f, "๐Ÿ“˜"), + Self::DiagnosticsUnmatched(status) => { + if !status.unexpected.is_empty() { + write!(f, "โŒ")?; + } + + if !status.missing.is_empty() { + write!(f, "๐Ÿ”„๏ธ")?; + } + + Ok(()) + } } } } @@ -108,12 +121,11 @@ pub struct Report { } impl Report { - /// Gets the [`Results`] for this [`Report`] by reference. - /// - /// **Note:** see the note at [Self::results] for a caveat on interpretation - /// of these results. - pub fn results(&self) -> &Results { - &self.results + /// Consumes the report and returns the [`Results`]. + // **Note:** see the note at [Self::results] for a caveat on interpretation + // of these results. + pub fn into_results(self) -> Results { + self.results } /// Transitions to the next section of the report. @@ -128,9 +140,9 @@ impl Report { write!(self.inner, "โš ๏ธ No items reported for this repository!")?; } - Section::Concerns + Section::Diagnostics } - Section::Concerns => Section::Footer, + Section::Diagnostics => Section::Footer, Section::Footer => Section::Title, }; @@ -164,6 +176,7 @@ impl Report { &mut self, identifier: document::Identifier, status: Status, + elapsed: Duration, ) -> std::io::Result<()> { if self.section != Section::Summary { panic!( @@ -172,7 +185,7 @@ impl Report { ); } - writeln!(self.inner, "{} {}", status, identifier)?; + writeln!(self.inner, "{status} {identifier} ({elapsed:?})")?; self.results.insert(identifier, status); self.printed = true; @@ -184,26 +197,37 @@ impl Report { &mut self, repository_identifier: &repository::Identifier, ) -> std::io::Result<()> { - if self.section != Section::Concerns { + if self.section != Section::Diagnostics { panic!( - "cannot report unexpected concerns when the report phase is {:?}", + "cannot report unexpected diagnostics when the report phase is {:?}", self.section ); } - for (id, concerns) in self + for (i, (id, status)) in self .results .iter() .filter(|(id, _)| id.repository() == repository_identifier) .filter_map(|(id, status)| match status { - Status::MissingExpectedConcerns(concerns) => Some((id.to_string(), concerns)), - Status::UnexpectedConcerns(concerns) => Some((id.to_string(), concerns)), + Status::DiagnosticsUnmatched(status) => Some((id, status)), _ => None, }) + .enumerate() { - for concern in concerns { - writeln!(self.inner, "{}\n\n{}\n", id.italic(), concern)?; - self.printed = true; + self.printed = true; + + if i > 0 { + writeln!(self.inner)?; + } + + writeln!(self.inner, "{id}", id = id.path().italic())?; + + for diagnostic in &status.unexpected { + writeln!(self.inner, "โŒ {diagnostic}")?; + } + + for diagnostic in &status.missing { + writeln!(self.inner, "๐Ÿ”„๏ธ {diagnostic}")?; } } @@ -226,59 +250,41 @@ impl Report { return Ok(()); } - let test_results = self + let (passed, considered, missing, unexpected) = self .results .iter() - .filter(|(identifer, _)| identifer.repository() == repository_identifier) - .fold(IndexMap::::new(), |mut hm, (_, status)| { - *hm.entry(status.clone()).or_default() += 1; - hm - }); + .filter(|(id, _)| id.repository() == repository_identifier) + .map(|(_, s)| s) + .fold((0, 0, 0, 0), |mut counts, status| { + if status.success() { + counts.0 += 1 + } - let passed = test_results - .iter() - .filter(|(status, _)| status.success()) - .fold(0usize, |mut acc, (_, count)| { - acc += count; - acc - }); + counts.1 += 1; + + if let Status::DiagnosticsUnmatched(unmatched) = status { + counts.2 += unmatched.missing.len(); + counts.3 += unmatched.unexpected.len(); + } - let considered = test_results.iter().fold(0usize, |mut acc, (_, count)| { - acc += count; - acc - }); + counts + }); write!(self.inner, "Passed {}/{} tests", passed, considered)?; let mut with = Vec::new(); - match self - .results - .iter() - .flat_map(|(_, status)| match status { - Status::MissingExpectedConcerns(concerns) => Some(concerns.len()), - _ => None, - }) - .sum::() - { + match missing { 0 => {} - 1 => with.push(String::from("1 missing concern")), - v => with.push(format!("{} missing concerns", v)), - }; + 1 => with.push(String::from("1 missing diagnostic")), + v => with.push(format!("{} missing diagnostics", v)), + } - match self - .results - .iter() - .flat_map(|(_, status)| match status { - Status::UnexpectedConcerns(concerns) => Some(concerns.len()), - _ => None, - }) - .sum::() - { + match unexpected { 0 => {} - 1 => with.push(String::from("1 unexpected concern")), - v => with.push(format!("{} unexpected concerns", v)), - }; + 1 => with.push(String::from("1 unexpected diagnostic")), + v => with.push(format!("{} unexpected diagnostics", v)), + } if !with.is_empty() { write!(self.inner, " (with {})", with.join(" and "))?; diff --git a/wdl-gauntlet/src/repository.rs b/wdl-gauntlet/src/repository.rs index e23d8eea6..36bcddb9e 100644 --- a/wdl-gauntlet/src/repository.rs +++ b/wdl-gauntlet/src/repository.rs @@ -51,14 +51,18 @@ impl<'de> Deserialize<'de> for RawHash { } } -/// A repository of GitHub files. -#[derive(Clone, Eq, PartialEq, Hash, Serialize, Deserialize, Debug)] +/// A GitHub repository of WDL files. +#[derive(Debug, Clone, Serialize, Deserialize, Eq, PartialEq)] pub struct Repository { /// The name for the [`Repository`] expressed as an [`Identifier`]. identifier: Identifier, /// The commit hash for the [`Repository`]. commit_hash: Option, + + /// A list of documents that should be filtered out from the repository. + #[serde(default, skip_serializing_if = "Vec::is_empty")] + filters: Vec, } impl Repository { @@ -107,6 +111,7 @@ impl Repository { Self { identifier, commit_hash: Some(commit_hash), + filters: Default::default(), } } @@ -120,6 +125,11 @@ impl Repository { &self.commit_hash } + /// Gets the file path filters for the repository. + pub fn filters(&self) -> &[String] { + &self.filters + } + /// Retrieve all the WDL files from the [`Repository`]. pub fn wdl_files(&self, root: &Path) -> IndexMap { let repo_root = root @@ -217,12 +227,12 @@ impl Repository { /// Add to an [`IndexMap`] all the WDL files in a directory /// and its subdirectories. -fn add_wdl_files(path: &PathBuf, wdl_files: &mut IndexMap, leading_dirs: &Path) { +fn add_wdl_files(path: &PathBuf, wdl_files: &mut IndexMap, repo_root: &Path) { if path.is_dir() { for entry in std::fs::read_dir(path).expect("failed to read directory") { let entry = entry.expect("failed to read entry"); let path = entry.path(); - add_wdl_files(&path, wdl_files, leading_dirs); + add_wdl_files(&path, wdl_files, repo_root); } } else if path.is_file() { let path_str = path @@ -230,13 +240,14 @@ fn add_wdl_files(path: &PathBuf, wdl_files: &mut IndexMap, leadi .expect("failed to convert file name to string"); if path_str.ends_with(".wdl") { let contents = std::fs::read_to_string(path).expect("failed to read file contents"); - // Strip leading directories from the path. + // Strip the repo root from the path and normalize backslashes to slash. // SAFETY: `path_str` is guaranteed to start with `leading_dirs` wdl_files.insert( path_str - .strip_prefix(leading_dirs.to_str().unwrap()) - .unwrap() - .to_string(), + .strip_prefix(repo_root.to_str().expect("path should be UTF-8")) + .expect("path should start with repo root") + .to_string() + .replace('\\', "/"), contents, ); } diff --git a/wdl-grammar/src/experimental/diagnostic.rs b/wdl-grammar/src/experimental/diagnostic.rs index 97e235fa4..aa4f9509a 100644 --- a/wdl-grammar/src/experimental/diagnostic.rs +++ b/wdl-grammar/src/experimental/diagnostic.rs @@ -186,11 +186,11 @@ impl Diagnostic { }; if let Some(rule) = &self.rule { - diagnostic.message = format!("{msg} [rule: {rule}]", msg = self.message); - } else { - diagnostic.message.clone_from(&self.message); + diagnostic.code = Some(rule.clone()); } + diagnostic.message.clone_from(&self.message); + if let Some(fix) = &self.fix { diagnostic.notes.push(format!("fix: {fix}")); } diff --git a/wdl-lint/src/v1.rs b/wdl-lint/src/v1.rs index b6e544541..91310a925 100644 --- a/wdl-lint/src/v1.rs +++ b/wdl-lint/src/v1.rs @@ -1,7 +1,5 @@ //! Module for V1 lint rules. -use convert_case::Case; -use convert_case::Casing; use wdl_ast::experimental::v1::Visitor; use wdl_ast::experimental::Diagnostics; @@ -75,6 +73,8 @@ pub fn rules() -> Vec> { // Ensure all the rule ids are unique and pascal case #[cfg(debug_assertions)] { + use convert_case::Case; + use convert_case::Casing; let mut set = std::collections::HashSet::new(); for r in rules.iter() { if r.id().to_case(Case::Pascal) != r.id() { diff --git a/wdl-lint/src/v1/preamble_comments.rs b/wdl-lint/src/v1/preamble_comments.rs index 9097d5284..8170bd87e 100644 --- a/wdl-lint/src/v1/preamble_comments.rs +++ b/wdl-lint/src/v1/preamble_comments.rs @@ -6,6 +6,7 @@ use wdl_ast::experimental::Comment; use wdl_ast::experimental::Diagnostic; use wdl_ast::experimental::Diagnostics; use wdl_ast::experimental::Span; +use wdl_ast::experimental::SyntaxKind; use wdl_ast::experimental::VersionStatement; use wdl_ast::experimental::VisitReason; @@ -18,26 +19,10 @@ const ID: &str = "PreambleComments"; /// Creates an "invalid preamble comment" diagnostic. fn invalid_preamble_comment(span: Span) -> Diagnostic { - Diagnostic::note("preamble comments must start with `##`") + Diagnostic::note("preamble comments must start with `##` followed by a space") .with_rule(ID) .with_highlight(span) - .with_fix("change the comment to start with `##` followed by a space") -} - -/// Creates a "too many pound signs" diagnostic. -fn too_many_pound_signs(span: Span) -> Diagnostic { - Diagnostic::note("preamble comments cannot start with more than two `#`") - .with_rule(ID) - .with_highlight(span) - .with_fix("change the comment to start with `##` followed by a space") -} - -/// Creates a "missing space" diagnostic. -fn missing_space(span: Span) -> Diagnostic { - Diagnostic::note("preamble comments must have a space after `##`") - .with_rule(ID) - .with_highlight(span) - .with_fix("add a space between `##` and the start of the comment") + .with_fix("change each preamble comment to start with `##` followed by a space") } /// Creates a "preamble comment after version" diagnostic. @@ -45,7 +30,7 @@ fn preamble_comment_after_version(span: Span) -> Diagnostic { Diagnostic::note("preamble comments cannot come after the version statement") .with_rule(ID) .with_highlight(span) - .with_fix("change the comment to start with `#` followed by a space") + .with_fix("change each comment to start with `#` followed by a space") } /// Detects incorrect comments in a document preamble. @@ -89,6 +74,8 @@ impl Rule for PreambleCommentsRule { struct PreambleCommentsVisitor { /// Whether or not the preamble has finished. finished: bool, + /// The number of comment tokens to skip. + skip_count: usize, } impl Visitor for PreambleCommentsVisitor { @@ -109,34 +96,57 @@ impl Visitor for PreambleCommentsVisitor { } fn comment(&mut self, state: &mut Self::State, comment: &Comment) { - let text = comment.as_str(); - if self.finished { - if let Some(text) = text.strip_prefix("##") { - if !text.starts_with('#') { - state.add(preamble_comment_after_version(comment.span())); - } - } - + // Skip this comment if necessary; this occurs if we've consolidated multiple + // comments in a row into a single diagnostic + if self.skip_count > 0 { + self.skip_count -= 1; return; } - if let Some(text) = text.strip_prefix("##") { - // Check for too many pound signs - if text.starts_with('#') { - state.add(too_many_pound_signs(comment.span())); - return; - } + let check = |text: &str| { + let double_pound = text == "##" || text.starts_with("## "); + (self.finished && !double_pound) || (!self.finished && double_pound) + }; + + if check(comment.as_str()) { + // The comment is valid, stop here + return; + } - // Check for missing space - if !text.is_empty() && !text.starts_with(' ') { - state.add(missing_space(comment.span())); - return; + // Otherwise, look for the next siblings that might also be invalid; + // if so, consolidate them into a single diagnostic + let mut span = comment.span(); + let mut current = comment.syntax().next_sibling_or_token(); + while let Some(sibling) = current { + match sibling.kind() { + SyntaxKind::Comment => { + // As we're processing this sibling comment here, increment the skip count + self.skip_count += 1; + + if check(sibling.as_token().expect("should be a token").text()) { + // The comment is valid, stop here + break; + } + + // Not valid, update the span + span = Span::new( + span.start(), + usize::from(sibling.text_range().end()) - span.start(), + ); + } + SyntaxKind::Whitespace => { + // Skip whitespace + } + _ => break, } - // Valid preamble comment - return; + current = sibling.next_sibling_or_token(); } - state.add(invalid_preamble_comment(comment.span())); + if self.finished { + state.add(preamble_comment_after_version(span)); + } else { + state.add(invalid_preamble_comment(span)); + } } } diff --git a/wdl-lint/tests/lints/command-mixed-line-cont/source.errors b/wdl-lint/tests/lints/command-mixed-line-cont/source.errors index 9584554a7..09fb375ec 100644 --- a/wdl-lint/tests/lints/command-mixed-line-cont/source.errors +++ b/wdl-lint/tests/lints/command-mixed-line-cont/source.errors @@ -1,4 +1,4 @@ -warning: mixed indentation within a command [rule: CommandSectionMixedIndentation] +warning[CommandSectionMixedIndentation]: mixed indentation within a command โ”Œโ”€ tests/lints/command-mixed-line-cont/source.wdl:8:2 โ”‚ 6 โ”‚ command <<< @@ -9,7 +9,7 @@ warning: mixed indentation within a command [rule: CommandSectionMixedIndentatio โ”‚ = fix: use the same whitespace character for indentation -warning: task `test2` uses curly braces in command section [rule: NoCurlyCommands] +warning[NoCurlyCommands]: task `test2` uses curly braces in command section โ”Œโ”€ tests/lints/command-mixed-line-cont/source.wdl:15:5 โ”‚ 15 โ”‚ command { @@ -17,7 +17,7 @@ warning: task `test2` uses curly braces in command section [rule: NoCurlyCommand โ”‚ = fix: instead of curly braces, use heredoc syntax (<<<>>>>) for command sections -warning: mixed indentation within a command [rule: CommandSectionMixedIndentation] +warning[CommandSectionMixedIndentation]: mixed indentation within a command โ”Œโ”€ tests/lints/command-mixed-line-cont/source.wdl:17:2 โ”‚ 15 โ”‚ command { diff --git a/wdl-lint/tests/lints/command-mixed-spaces-first/source.errors b/wdl-lint/tests/lints/command-mixed-spaces-first/source.errors index 0cf36aed8..b3593cc90 100644 --- a/wdl-lint/tests/lints/command-mixed-spaces-first/source.errors +++ b/wdl-lint/tests/lints/command-mixed-spaces-first/source.errors @@ -1,4 +1,4 @@ -warning: mixed indentation within a command [rule: CommandSectionMixedIndentation] +warning[CommandSectionMixedIndentation]: mixed indentation within a command โ”Œโ”€ tests/lints/command-mixed-spaces-first/source.wdl:8:1 โ”‚ 6 โ”‚ command <<< @@ -9,7 +9,7 @@ warning: mixed indentation within a command [rule: CommandSectionMixedIndentatio โ”‚ = fix: use the same whitespace character for indentation -warning: task `test2` uses curly braces in command section [rule: NoCurlyCommands] +warning[NoCurlyCommands]: task `test2` uses curly braces in command section โ”Œโ”€ tests/lints/command-mixed-spaces-first/source.wdl:15:5 โ”‚ 15 โ”‚ command { @@ -17,7 +17,7 @@ warning: task `test2` uses curly braces in command section [rule: NoCurlyCommand โ”‚ = fix: instead of curly braces, use heredoc syntax (<<<>>>>) for command sections -warning: mixed indentation within a command [rule: CommandSectionMixedIndentation] +warning[CommandSectionMixedIndentation]: mixed indentation within a command โ”Œโ”€ tests/lints/command-mixed-spaces-first/source.wdl:17:1 โ”‚ 15 โ”‚ command { diff --git a/wdl-lint/tests/lints/command-mixed-tabs-first/source.errors b/wdl-lint/tests/lints/command-mixed-tabs-first/source.errors index ab7d0573b..f113955e2 100644 --- a/wdl-lint/tests/lints/command-mixed-tabs-first/source.errors +++ b/wdl-lint/tests/lints/command-mixed-tabs-first/source.errors @@ -1,4 +1,4 @@ -warning: mixed indentation within a command [rule: CommandSectionMixedIndentation] +warning[CommandSectionMixedIndentation]: mixed indentation within a command โ”Œโ”€ tests/lints/command-mixed-tabs-first/source.wdl:8:1 โ”‚ 6 โ”‚ command <<< @@ -9,7 +9,7 @@ warning: mixed indentation within a command [rule: CommandSectionMixedIndentatio โ”‚ = fix: use the same whitespace character for indentation -warning: task `test2` uses curly braces in command section [rule: NoCurlyCommands] +warning[NoCurlyCommands]: task `test2` uses curly braces in command section โ”Œโ”€ tests/lints/command-mixed-tabs-first/source.wdl:15:5 โ”‚ 15 โ”‚ command { @@ -17,7 +17,7 @@ warning: task `test2` uses curly braces in command section [rule: NoCurlyCommand โ”‚ = fix: instead of curly braces, use heredoc syntax (<<<>>>>) for command sections -warning: mixed indentation within a command [rule: CommandSectionMixedIndentation] +warning[CommandSectionMixedIndentation]: mixed indentation within a command โ”Œโ”€ tests/lints/command-mixed-tabs-first/source.wdl:17:1 โ”‚ 15 โ”‚ command { diff --git a/wdl-lint/tests/lints/command-mixed-trailing/source.errors b/wdl-lint/tests/lints/command-mixed-trailing/source.errors index 3a8e18d61..f1d770f0c 100644 --- a/wdl-lint/tests/lints/command-mixed-trailing/source.errors +++ b/wdl-lint/tests/lints/command-mixed-trailing/source.errors @@ -1,4 +1,4 @@ -warning: task `test2` uses curly braces in command section [rule: NoCurlyCommands] +warning[NoCurlyCommands]: task `test2` uses curly braces in command section โ”Œโ”€ tests/lints/command-mixed-trailing/source.wdl:15:5 โ”‚ 15 โ”‚ command { diff --git a/wdl-lint/tests/lints/command-mixed-ws-ok/source.errors b/wdl-lint/tests/lints/command-mixed-ws-ok/source.errors index 8bea0664c..48787b2fe 100644 --- a/wdl-lint/tests/lints/command-mixed-ws-ok/source.errors +++ b/wdl-lint/tests/lints/command-mixed-ws-ok/source.errors @@ -1,4 +1,4 @@ -warning: task `test2` uses curly braces in command section [rule: NoCurlyCommands] +warning[NoCurlyCommands]: task `test2` uses curly braces in command section โ”Œโ”€ tests/lints/command-mixed-ws-ok/source.wdl:20:5 โ”‚ 20 โ”‚ command { diff --git a/wdl-lint/tests/lints/command-mixed/source.errors b/wdl-lint/tests/lints/command-mixed/source.errors index 56c776e2c..825f53071 100644 --- a/wdl-lint/tests/lints/command-mixed/source.errors +++ b/wdl-lint/tests/lints/command-mixed/source.errors @@ -1,4 +1,4 @@ -warning: mixed indentation within a command [rule: CommandSectionMixedIndentation] +warning[CommandSectionMixedIndentation]: mixed indentation within a command โ”Œโ”€ tests/lints/command-mixed/source.wdl:7:3 โ”‚ 6 โ”‚ command <<< @@ -8,7 +8,7 @@ warning: mixed indentation within a command [rule: CommandSectionMixedIndentatio โ”‚ = fix: use the same whitespace character for indentation -warning: task `test2` uses curly braces in command section [rule: NoCurlyCommands] +warning[NoCurlyCommands]: task `test2` uses curly braces in command section โ”Œโ”€ tests/lints/command-mixed/source.wdl:14:5 โ”‚ 14 โ”‚ command { @@ -16,7 +16,7 @@ warning: task `test2` uses curly braces in command section [rule: NoCurlyCommand โ”‚ = fix: instead of curly braces, use heredoc syntax (<<<>>>>) for command sections -warning: mixed indentation within a command [rule: CommandSectionMixedIndentation] +warning[CommandSectionMixedIndentation]: mixed indentation within a command โ”Œโ”€ tests/lints/command-mixed/source.wdl:15:3 โ”‚ 14 โ”‚ command { diff --git a/wdl-lint/tests/lints/curly-command/source.errors b/wdl-lint/tests/lints/curly-command/source.errors index 038b017ef..3557fef46 100644 --- a/wdl-lint/tests/lints/curly-command/source.errors +++ b/wdl-lint/tests/lints/curly-command/source.errors @@ -1,4 +1,4 @@ -warning: task `bad` uses curly braces in command section [rule: NoCurlyCommands] +warning[NoCurlyCommands]: task `bad` uses curly braces in command section โ”Œโ”€ tests/lints/curly-command/source.wdl:7:5 โ”‚ 7 โ”‚ command { diff --git a/wdl-lint/tests/lints/double-quotes/source.errors b/wdl-lint/tests/lints/double-quotes/source.errors index 3fdab2546..92734db37 100644 --- a/wdl-lint/tests/lints/double-quotes/source.errors +++ b/wdl-lint/tests/lints/double-quotes/source.errors @@ -1,4 +1,4 @@ -warning: string defined with single quotes [rule: DoubleQuotes] +warning[DoubleQuotes]: string defined with single quotes โ”Œโ”€ tests/lints/double-quotes/source.wdl:7:18 โ”‚ 7 โ”‚ String bad = 'this string is not okay' @@ -6,7 +6,7 @@ warning: string defined with single quotes [rule: DoubleQuotes] โ”‚ = fix: change the single quotes to double quotes -warning: string defined with single quotes [rule: DoubleQuotes] +warning[DoubleQuotes]: string defined with single quotes โ”Œโ”€ tests/lints/double-quotes/source.wdl:9:30 โ”‚ 9 โ”‚ "this string is ok ~{'but this is not and ~{"while this one is okay ~{'this one is not'}"}'}!" @@ -14,7 +14,7 @@ warning: string defined with single quotes [rule: DoubleQuotes] โ”‚ = fix: change the single quotes to double quotes -warning: string defined with single quotes [rule: DoubleQuotes] +warning[DoubleQuotes]: string defined with single quotes โ”Œโ”€ tests/lints/double-quotes/source.wdl:9:79 โ”‚ 9 โ”‚ "this string is ok ~{'but this is not and ~{"while this one is okay ~{'this one is not'}"}'}!" diff --git a/wdl-lint/tests/lints/invalid-preamble-comment/source.errors b/wdl-lint/tests/lints/invalid-preamble-comment/source.errors index 8f0f6558f..0d7cbb6ee 100644 --- a/wdl-lint/tests/lints/invalid-preamble-comment/source.errors +++ b/wdl-lint/tests/lints/invalid-preamble-comment/source.errors @@ -1,16 +1,16 @@ -note: preamble comments must start with `##` [rule: PreambleComments] +note[PreambleComments]: preamble comments must start with `##` followed by a space โ”Œโ”€ tests/lints/invalid-preamble-comment/source.wdl:1:1 โ”‚ 1 โ”‚ # This is an invalid preamble comment. โ”‚ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ โ”‚ - = fix: change the comment to start with `##` followed by a space + = fix: change each preamble comment to start with `##` followed by a space -note: preamble comments must start with `##` [rule: PreambleComments] +note[PreambleComments]: preamble comments must start with `##` followed by a space โ”Œโ”€ tests/lints/invalid-preamble-comment/source.wdl:3:1 โ”‚ 3 โ”‚ # This one is invalid too! โ”‚ ^^^^^^^^^^^^^^^^^^^^^^^^^^ โ”‚ - = fix: change the comment to start with `##` followed by a space + = fix: change each preamble comment to start with `##` followed by a space diff --git a/wdl-lint/tests/lints/matching-param-meta/source.errors b/wdl-lint/tests/lints/matching-param-meta/source.errors index 214493d86..daa16d895 100644 --- a/wdl-lint/tests/lints/matching-param-meta/source.errors +++ b/wdl-lint/tests/lints/matching-param-meta/source.errors @@ -1,4 +1,4 @@ -warning: task `t` is missing a parameter metadata key for input `does_not_exist` [rule: MatchingParameterMeta] +warning[MatchingParameterMeta]: task `t` is missing a parameter metadata key for input `does_not_exist` โ”Œโ”€ tests/lints/matching-param-meta/source.wdl:8:16 โ”‚ 8 โ”‚ String does_not_exist @@ -6,7 +6,7 @@ warning: task `t` is missing a parameter metadata key for input `does_not_exist` โ”‚ = fix: add a `does_not_exist` key to the `parameter_meta` section with a detailed description of the input. -note: task `t` has an extraneous parameter metadata key named `extra` [rule: MatchingParameterMeta] +note[MatchingParameterMeta]: task `t` has an extraneous parameter metadata key named `extra` โ”Œโ”€ tests/lints/matching-param-meta/source.wdl:20:9 โ”‚ 20 โ”‚ extra: "this should not be here" @@ -14,7 +14,7 @@ note: task `t` has an extraneous parameter metadata key named `extra` [rule: Mat โ”‚ = fix: remove the extraneous parameter metadata entry -warning: workflow `w` is missing a parameter metadata key for input `does_not_exist` [rule: MatchingParameterMeta] +warning[MatchingParameterMeta]: workflow `w` is missing a parameter metadata key for input `does_not_exist` โ”Œโ”€ tests/lints/matching-param-meta/source.wdl:30:16 โ”‚ 30 โ”‚ String does_not_exist @@ -22,7 +22,7 @@ warning: workflow `w` is missing a parameter metadata key for input `does_not_ex โ”‚ = fix: add a `does_not_exist` key to the `parameter_meta` section with a detailed description of the input. -note: workflow `w` has an extraneous parameter metadata key named `extra` [rule: MatchingParameterMeta] +note[MatchingParameterMeta]: workflow `w` has an extraneous parameter metadata key named `extra` โ”Œโ”€ tests/lints/matching-param-meta/source.wdl:42:9 โ”‚ 42 โ”‚ extra: "this should not be here" diff --git a/wdl-lint/tests/lints/missing-comment-space/source.errors b/wdl-lint/tests/lints/missing-comment-space/source.errors index c9172b728..c6adcacea 100644 --- a/wdl-lint/tests/lints/missing-comment-space/source.errors +++ b/wdl-lint/tests/lints/missing-comment-space/source.errors @@ -1,8 +1,8 @@ -note: preamble comments must have a space after `##` [rule: PreambleComments] +note[PreambleComments]: preamble comments must start with `##` followed by a space โ”Œโ”€ tests/lints/missing-comment-space/source.wdl:1:1 โ”‚ 1 โ”‚ ##This preamble comment is missing a space. โ”‚ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ โ”‚ - = fix: add a space between `##` and the start of the comment + = fix: change each preamble comment to start with `##` followed by a space diff --git a/wdl-lint/tests/lints/missing-eof-newline/source.errors b/wdl-lint/tests/lints/missing-eof-newline/source.errors index ce74c79fe..b9980fe1b 100644 --- a/wdl-lint/tests/lints/missing-eof-newline/source.errors +++ b/wdl-lint/tests/lints/missing-eof-newline/source.errors @@ -1,4 +1,4 @@ -warning: missing newline at the end of the file [rule: EndingNewline] +warning[EndingNewline]: missing newline at the end of the file โ”Œโ”€ tests/lints/missing-eof-newline/source.wdl:7:1 โ”‚ 7 โ”‚ } diff --git a/wdl-lint/tests/lints/missing-preamble-ws/source.errors b/wdl-lint/tests/lints/missing-preamble-ws/source.errors index b467867bc..3fbddd122 100644 --- a/wdl-lint/tests/lints/missing-preamble-ws/source.errors +++ b/wdl-lint/tests/lints/missing-preamble-ws/source.errors @@ -1,4 +1,4 @@ -note: expected a blank line before the version statement [rule: PreambleWhitespace] +note[PreambleWhitespace]: expected a blank line before the version statement โ”Œโ”€ tests/lints/missing-preamble-ws/source.wdl:1:50 โ”‚ 1 โ”‚ ## This is a test of missing preamble whitespace. diff --git a/wdl-lint/tests/lints/missing-runtime-block/source.errors b/wdl-lint/tests/lints/missing-runtime-block/source.errors index 407fd1db7..a30a81b8f 100644 --- a/wdl-lint/tests/lints/missing-runtime-block/source.errors +++ b/wdl-lint/tests/lints/missing-runtime-block/source.errors @@ -1,4 +1,4 @@ -warning: task `bad` is missing a runtime section [rule: MissingRuntime] +warning[MissingRuntime]: task `bad` is missing a runtime section โ”Œโ”€ tests/lints/missing-runtime-block/source.wdl:5:6 โ”‚ 5 โ”‚ task bad { diff --git a/wdl-lint/tests/lints/multiple-eof-newline/source.errors b/wdl-lint/tests/lints/multiple-eof-newline/source.errors index 83350b0e5..df43d1aa7 100644 --- a/wdl-lint/tests/lints/multiple-eof-newline/source.errors +++ b/wdl-lint/tests/lints/multiple-eof-newline/source.errors @@ -1,4 +1,4 @@ -warning: multiple empty lines at the end of file [rule: EndingNewline] +warning[EndingNewline]: multiple empty lines at the end of file โ”Œโ”€ tests/lints/multiple-eof-newline/source.wdl:7:2 โ”‚ 7 โ”‚ } diff --git a/wdl-lint/tests/lints/one-invalid-preamble-comment/source.errors b/wdl-lint/tests/lints/one-invalid-preamble-comment/source.errors new file mode 100644 index 000000000..20d590eff --- /dev/null +++ b/wdl-lint/tests/lints/one-invalid-preamble-comment/source.errors @@ -0,0 +1,32 @@ +note[PreambleComments]: preamble comments must start with `##` followed by a space + โ”Œโ”€ tests/lints/one-invalid-preamble-comment/source.wdl:1:1 + โ”‚ + 1 โ”‚ โ•ญ # This is a test of having one big invalid preamble comment. + 2 โ”‚ โ”‚ # + 3 โ”‚ โ”‚ + 4 โ”‚ โ”‚ # All of the lines + ยท โ”‚ +10 โ”‚ โ”‚ # as a single diagnostic +11 โ”‚ โ”‚ # warning + โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€^ + โ”‚ + = fix: change each preamble comment to start with `##` followed by a space + +note[PreambleWhitespace]: unnecessary whitespace in document preamble + โ”Œโ”€ tests/lints/one-invalid-preamble-comment/source.wdl:3:1 + โ”‚ +3 โ”‚ โ•ญ +4 โ”‚ โ”‚ # All of the lines + โ”‚ โ•ฐ^ + โ”‚ + = fix: remove the unnecessary whitespace + +note[PreambleWhitespace]: unnecessary whitespace in document preamble + โ”Œโ”€ tests/lints/one-invalid-preamble-comment/source.wdl:9:1 + โ”‚ + 9 โ”‚ โ•ญ +10 โ”‚ โ”‚ # as a single diagnostic + โ”‚ โ•ฐ^ + โ”‚ + = fix: remove the unnecessary whitespace + diff --git a/wdl-lint/tests/lints/one-invalid-preamble-comment/source.wdl b/wdl-lint/tests/lints/one-invalid-preamble-comment/source.wdl new file mode 100644 index 000000000..43a250cd3 --- /dev/null +++ b/wdl-lint/tests/lints/one-invalid-preamble-comment/source.wdl @@ -0,0 +1,18 @@ +# This is a test of having one big invalid preamble comment. +# + +# All of the lines +# in this comment +# should be treated +# +# + +# as a single diagnostic +# warning +## This last one is fine though! + +version 1.1 + +workflow test { + +} diff --git a/wdl-lint/tests/lints/only-whitespace/source.errors b/wdl-lint/tests/lints/only-whitespace/source.errors index 3c16b74a9..64e4368aa 100644 --- a/wdl-lint/tests/lints/only-whitespace/source.errors +++ b/wdl-lint/tests/lints/only-whitespace/source.errors @@ -1,4 +1,4 @@ -warning: line contains only whitespace [rule: Whitespace] +warning[Whitespace]: line contains only whitespace โ”Œโ”€ tests/lints/only-whitespace/source.wdl:6:1 โ”‚ 6 โ”‚ @@ -6,7 +6,7 @@ warning: line contains only whitespace [rule: Whitespace] โ”‚ = fix: remove the whitespace from this line -warning: line contains only whitespace [rule: Whitespace] +warning[Whitespace]: line contains only whitespace โ”Œโ”€ tests/lints/only-whitespace/source.wdl:9:1 โ”‚ 9 โ”‚ @@ -14,7 +14,7 @@ warning: line contains only whitespace [rule: Whitespace] โ”‚ = fix: remove the whitespace from this line -warning: more than one blank line in a row [rule: Whitespace] +warning[Whitespace]: more than one blank line in a row โ”Œโ”€ tests/lints/only-whitespace/source.wdl:9:1 โ”‚ 9 โ”‚ โ•ญ @@ -25,7 +25,7 @@ warning: more than one blank line in a row [rule: Whitespace] โ”‚ = fix: remove the unnecessary blank lines -warning: line contains trailing whitespace [rule: Whitespace] +warning[Whitespace]: line contains trailing whitespace โ”Œโ”€ tests/lints/only-whitespace/source.wdl:12:16 โ”‚ 12 โ”‚ workflow test { @@ -33,7 +33,7 @@ warning: line contains trailing whitespace [rule: Whitespace] โ”‚ = fix: remove the trailing whitespace from this line -warning: line contains only whitespace [rule: Whitespace] +warning[Whitespace]: line contains only whitespace โ”Œโ”€ tests/lints/only-whitespace/source.wdl:13:1 โ”‚ 13 โ”‚ @@ -41,7 +41,7 @@ warning: line contains only whitespace [rule: Whitespace] โ”‚ = fix: remove the whitespace from this line -warning: line contains trailing whitespace [rule: Whitespace] +warning[Whitespace]: line contains trailing whitespace โ”Œโ”€ tests/lints/only-whitespace/source.wdl:14:18 โ”‚ 14 โ”‚ String x = "" @@ -49,7 +49,7 @@ warning: line contains trailing whitespace [rule: Whitespace] โ”‚ = fix: remove the trailing whitespace from this line -warning: line contains only whitespace [rule: Whitespace] +warning[Whitespace]: line contains only whitespace โ”Œโ”€ tests/lints/only-whitespace/source.wdl:16:1 โ”‚ 16 โ”‚ diff --git a/wdl-lint/tests/lints/preamble-comment-after-version/source.errors b/wdl-lint/tests/lints/preamble-comment-after-version/source.errors index cfed7cac8..c774fc251 100644 --- a/wdl-lint/tests/lints/preamble-comment-after-version/source.errors +++ b/wdl-lint/tests/lints/preamble-comment-after-version/source.errors @@ -1,4 +1,4 @@ -note: unnecessary whitespace in document preamble [rule: PreambleWhitespace] +note[PreambleWhitespace]: unnecessary whitespace in document preamble โ”Œโ”€ tests/lints/preamble-comment-after-version/source.wdl:2:1 โ”‚ 2 โ”‚ ## Bad leading whitespace! @@ -6,19 +6,19 @@ note: unnecessary whitespace in document preamble [rule: PreambleWhitespace] โ”‚ = fix: remove the unnecessary whitespace -note: preamble comments cannot come after the version statement [rule: PreambleComments] +note[PreambleComments]: preamble comments cannot come after the version statement โ”Œโ”€ tests/lints/preamble-comment-after-version/source.wdl:6:1 โ”‚ 6 โ”‚ ## This is a preamble comment after the version โ”‚ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ โ”‚ - = fix: change the comment to start with `#` followed by a space + = fix: change each comment to start with `#` followed by a space -note: preamble comments cannot come after the version statement [rule: PreambleComments] +note[PreambleComments]: preamble comments cannot come after the version statement โ”Œโ”€ tests/lints/preamble-comment-after-version/source.wdl:15:5 โ”‚ 15 โ”‚ ## This one is bad! โ”‚ ^^^^^^^^^^^^^^^^^^^ โ”‚ - = fix: change the comment to start with `#` followed by a space + = fix: change each comment to start with `#` followed by a space diff --git a/wdl-lint/tests/lints/preamble-ws/source.errors b/wdl-lint/tests/lints/preamble-ws/source.errors index 8b37fa510..f9e083d48 100644 --- a/wdl-lint/tests/lints/preamble-ws/source.errors +++ b/wdl-lint/tests/lints/preamble-ws/source.errors @@ -1,4 +1,4 @@ -note: unnecessary whitespace in document preamble [rule: PreambleWhitespace] +note[PreambleWhitespace]: unnecessary whitespace in document preamble โ”Œโ”€ tests/lints/preamble-ws/source.wdl:2:1 โ”‚ 2 โ”‚ version 1.1 @@ -6,7 +6,7 @@ note: unnecessary whitespace in document preamble [rule: PreambleWhitespace] โ”‚ = fix: remove the unnecessary whitespace -note: expected a blank line before the version statement [rule: PreambleWhitespace] +note[PreambleWhitespace]: expected a blank line before the version statement โ”Œโ”€ tests/lints/preamble-ws/source.wdl:2:1 โ”‚ 2 โ”‚ version 1.1 diff --git a/wdl-lint/tests/lints/snake-case/source.errors b/wdl-lint/tests/lints/snake-case/source.errors index 32265a710..a94cc4060 100644 --- a/wdl-lint/tests/lints/snake-case/source.errors +++ b/wdl-lint/tests/lints/snake-case/source.errors @@ -1,4 +1,4 @@ -warning: workflow name `BadWorkflow` is not snake_case [rule: SnakeCase] +warning[SnakeCase]: workflow name `BadWorkflow` is not snake_case โ”Œโ”€ tests/lints/snake-case/source.wdl:5:10 โ”‚ 5 โ”‚ workflow BadWorkflow { @@ -6,7 +6,7 @@ warning: workflow name `BadWorkflow` is not snake_case [rule: SnakeCase] โ”‚ = fix: replace `BadWorkflow` with `bad_workflow` -warning: private declaration name `badPrivateDecl` is not snake_case [rule: SnakeCase] +warning[SnakeCase]: private declaration name `badPrivateDecl` is not snake_case โ”Œโ”€ tests/lints/snake-case/source.wdl:6:11 โ”‚ 6 โ”‚ Float badPrivateDecl = 3.14 @@ -14,7 +14,7 @@ warning: private declaration name `badPrivateDecl` is not snake_case [rule: Snak โ”‚ = fix: replace `badPrivateDecl` with `bad_private_decl` -warning: task name `BadTask` is not snake_case [rule: SnakeCase] +warning[SnakeCase]: task name `BadTask` is not snake_case โ”Œโ”€ tests/lints/snake-case/source.wdl:11:6 โ”‚ 11 โ”‚ task BadTask { @@ -22,7 +22,7 @@ warning: task name `BadTask` is not snake_case [rule: SnakeCase] โ”‚ = fix: replace `BadTask` with `bad_task` -warning: input name `BadInput` is not snake_case [rule: SnakeCase] +warning[SnakeCase]: input name `BadInput` is not snake_case โ”Œโ”€ tests/lints/snake-case/source.wdl:13:16 โ”‚ 13 โ”‚ String BadInput @@ -30,7 +30,7 @@ warning: input name `BadInput` is not snake_case [rule: SnakeCase] โ”‚ = fix: replace `BadInput` with `bad_input` -warning: output name `badOut` is not snake_case [rule: SnakeCase] +warning[SnakeCase]: output name `badOut` is not snake_case โ”Œโ”€ tests/lints/snake-case/source.wdl:26:14 โ”‚ 26 โ”‚ File badOut = "out.txt" @@ -38,7 +38,7 @@ warning: output name `badOut` is not snake_case [rule: SnakeCase] โ”‚ = fix: replace `badOut` with `bad_out` -warning: struct member name `bAdFiElD` is not snake_case [rule: SnakeCase] +warning[SnakeCase]: struct member name `bAdFiElD` is not snake_case โ”Œโ”€ tests/lints/snake-case/source.wdl:54:12 โ”‚ 54 โ”‚ String bAdFiElD # unfortunately, `convert-case` doesn't understand sarcasm case diff --git a/wdl-lint/tests/lints/too-many-pounds-preamble/source.errors b/wdl-lint/tests/lints/too-many-pounds-preamble/source.errors index f11263500..bcfca97c9 100644 --- a/wdl-lint/tests/lints/too-many-pounds-preamble/source.errors +++ b/wdl-lint/tests/lints/too-many-pounds-preamble/source.errors @@ -1,16 +1,16 @@ -note: preamble comments cannot start with more than two `#` [rule: PreambleComments] +note[PreambleComments]: preamble comments must start with `##` followed by a space โ”Œโ”€ tests/lints/too-many-pounds-preamble/source.wdl:1:1 โ”‚ 1 โ”‚ ### This comment has too many pound signs! โ”‚ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ โ”‚ - = fix: change the comment to start with `##` followed by a space + = fix: change each preamble comment to start with `##` followed by a space -note: preamble comments cannot start with more than two `#` [rule: PreambleComments] +note[PreambleComments]: preamble comments must start with `##` followed by a space โ”Œโ”€ tests/lints/too-many-pounds-preamble/source.wdl:3:1 โ”‚ 3 โ”‚ ###### This comment also has too many pound signs! โ”‚ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ โ”‚ - = fix: change the comment to start with `##` followed by a space + = fix: change each preamble comment to start with `##` followed by a space diff --git a/wdl-lint/tests/lints/two-eof-newline/source.errors b/wdl-lint/tests/lints/two-eof-newline/source.errors index e10c84e13..fccedce9d 100644 --- a/wdl-lint/tests/lints/two-eof-newline/source.errors +++ b/wdl-lint/tests/lints/two-eof-newline/source.errors @@ -1,4 +1,4 @@ -warning: multiple empty lines at the end of file [rule: EndingNewline] +warning[EndingNewline]: multiple empty lines at the end of file โ”Œโ”€ tests/lints/two-eof-newline/source.wdl:7:2 โ”‚ 7 โ”‚ } diff --git a/wdl-lint/tests/lints/unnecessary-preamble-ws/source.errors b/wdl-lint/tests/lints/unnecessary-preamble-ws/source.errors index 47616b6b0..9408b8df0 100644 --- a/wdl-lint/tests/lints/unnecessary-preamble-ws/source.errors +++ b/wdl-lint/tests/lints/unnecessary-preamble-ws/source.errors @@ -1,4 +1,4 @@ -note: unnecessary whitespace in document preamble [rule: PreambleWhitespace] +note[PreambleWhitespace]: unnecessary whitespace in document preamble โ”Œโ”€ tests/lints/unnecessary-preamble-ws/source.wdl:4:1 โ”‚ 4 โ”‚ @@ -6,7 +6,7 @@ note: unnecessary whitespace in document preamble [rule: PreambleWhitespace] โ”‚ = fix: remove the unnecessary whitespace -note: unnecessary whitespace in document preamble [rule: PreambleWhitespace] +note[PreambleWhitespace]: unnecessary whitespace in document preamble โ”Œโ”€ tests/lints/unnecessary-preamble-ws/source.wdl:5:1 โ”‚ 5 โ”‚ โ•ญ diff --git a/wdl-lint/tests/lints/ws-after-blank-line/source.errors b/wdl-lint/tests/lints/ws-after-blank-line/source.errors index cf98924bb..f28b2c9c5 100644 --- a/wdl-lint/tests/lints/ws-after-blank-line/source.errors +++ b/wdl-lint/tests/lints/ws-after-blank-line/source.errors @@ -1,4 +1,4 @@ -note: unnecessary whitespace in document preamble [rule: PreambleWhitespace] +note[PreambleWhitespace]: unnecessary whitespace in document preamble โ”Œโ”€ tests/lints/ws-after-blank-line/source.wdl:3:1 โ”‚ 3 โ”‚ โ•ญ diff --git a/wdl-lint/tests/lints/ws-before-version/source.errors b/wdl-lint/tests/lints/ws-before-version/source.errors index 3aff4f14a..142b7918a 100644 --- a/wdl-lint/tests/lints/ws-before-version/source.errors +++ b/wdl-lint/tests/lints/ws-before-version/source.errors @@ -1,4 +1,4 @@ -note: unnecessary whitespace in document preamble [rule: PreambleWhitespace] +note[PreambleWhitespace]: unnecessary whitespace in document preamble โ”Œโ”€ tests/lints/ws-before-version/source.wdl:1:1 โ”‚ 1 โ”‚ โ•ญ diff --git a/wdl-lint/tests/lints/ws-preamble-comments/source.errors b/wdl-lint/tests/lints/ws-preamble-comments/source.errors index 08dc45da1..a945b2e59 100644 --- a/wdl-lint/tests/lints/ws-preamble-comments/source.errors +++ b/wdl-lint/tests/lints/ws-preamble-comments/source.errors @@ -1,4 +1,4 @@ -note: unnecessary whitespace in document preamble [rule: PreambleWhitespace] +note[PreambleWhitespace]: unnecessary whitespace in document preamble โ”Œโ”€ tests/lints/ws-preamble-comments/source.wdl:2:1 โ”‚ 2 โ”‚ โ•ญ @@ -8,7 +8,7 @@ note: unnecessary whitespace in document preamble [rule: PreambleWhitespace] โ”‚ = fix: remove the unnecessary whitespace -note: unnecessary whitespace in document preamble [rule: PreambleWhitespace] +note[PreambleWhitespace]: unnecessary whitespace in document preamble โ”Œโ”€ tests/lints/ws-preamble-comments/source.wdl:5:1 โ”‚ 5 โ”‚ โ•ญ