blob: 0d523f2653444537f5b1c80b27077ebfa410dba4 (
plain)
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
|
local files = require 'files'
local define = require 'proto.define'
local config = require 'config'
local await = require 'await'
local function check(uri, name, level, results)
if config.config.diagnostics.disable[name] then
return
end
level = config.config.diagnostics.severity[name] or level
local severity = define.DiagnosticSeverity[level]
local clock = os.clock()
require('core.diagnostics.' .. name)(uri, function (result)
result.level = severity or result.level
result.code = name
results[#results+1] = result
end, name)
local passed = os.clock() - clock
if passed >= 0.5 then
log.warn(('Diagnostics [%s] @ [%s] takes [%.3f] sec!'):format(name, uri, passed))
await.delay()
end
end
return function (uri)
local ast = files.getAst(uri)
if not ast then
return nil
end
local results = {}
for name, level in pairs(define.DiagnosticDefaultSeverity) do
check(uri, name, level, results)
end
if #results == 0 then
return nil
end
return results
end
|