Support VSCode Problems in Mix Tasks

2017-04-05
snippets

Support VSCode Problems in Mix Tasks

Here’s a snippet of my tasks.json that supports mix dialyzer, mix test, and mix compile (as “build”, so you can use the “build” shortcut). It puts warnings and errors into the bottom left corner.

It picks up the file and line of the error, and allows you to quickly jump to the problem error. I would add support for credo, but I get that for free with the vscode-credo extension.

.vscode/tasks.jsontask json schema
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
{
"version": "0.1.0",
"command": "mix",
"isShellCommand": true,
"showOutput": "always",
"suppressTaskName": true,
"tasks": [
{
"taskName": "dialyzer",
"args": ["dialyzer"],
"problemMatcher": [
{
"owner": "elixir",
"fileLocation": ["relative", "${workspaceRoot}"],
"severity": "warning",
"pattern": [{
"regexp": "^warning: (.*)$",
"message": 1
}, {
"regexp": "^ (.*):(\\d+)$",
"file": 1,
"location": 2
}]
}, {
"owner": "elixir",
"fileLocation": ["relative", "${workspaceRoot}"],
"severity": "error",
"pattern": {
"regexp": "^\\*\\* \\((\\w+)\\) (.*):(\\d+): (.*)$",
"file": 2,
"location": 3,
"message": 0
}
}, {
"owner": "elixir",
"fileLocation": ["relative", "${workspaceRoot}"],
"severity": "error",
"pattern": {
"regexp": "^([^:]+):(\\d+): (.*)$",
"file": 1,
"location": 2,
"message": 3
}
}
]
}, {
"taskName": "test",
"args": ["test"],
"problemMatcher": [
{
"owner": "elixir",
"fileLocation": ["relative", "${workspaceRoot}"],
"severity": "warning",
"pattern": [{
"regexp": "^warning: (.*)$",
"message": 1
}, {
"regexp": "^ (.*):(\\d+)$",
"file": 1,
"location": 2
}]
},
{
"owner": "elixir",
"fileLocation": ["relative", "${workspaceRoot}"],
"severity": "error",
"pattern": {
"regexp": "^\\*\\* \\((\\w+)\\) (.*):(\\d+): (.*)$",
"file": 2,
"location": 3,
"message": 0
}
},
{
"owner": "elixir",
"fileLocation": ["relative", "${workspaceRoot}"],
"severity": "error",
"pattern": [{
"regexp": "^ \\d+\\) (.*)$",
"message": 1
},{
"regexp": "^ (.*):(\\d+)$",
"file": 1,
"location": 2
}]
}
]
},
{
"taskName": "build",
"args": ["compile"],
"problemMatcher": [
{
"owner": "elixir",
"fileLocation": ["relative", "${workspaceRoot}"],
"severity": "warning",
"pattern": [{
"regexp": "^warning: (.*)$",
"message": 1
}, {
"regexp": "^ (.*):(\\d+)$",
"file": 1,
"location": 2
}]
}, {
"owner": "elixir",
"fileLocation": ["relative", "${workspaceRoot}"],
"severity": "error",
"pattern": {
"regexp": "^\\*\\* \\((\\w+)\\) (.*):(\\d+): (.*)$",
"file": 2,
"location": 3,
"message": 0
}
}
]
}
]
}