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
|
local files = require 'files'
local fsu = require 'fs-utility'
local furi = require 'file-uri'
local diag = require 'provider.diagnostic'
local config = require 'config'
local ws = require 'workspace'
local fs = require 'bee.filesystem'
config.set(nil, 'Lua.workspace.preloadFileSize', 1000000)
config.set(nil, 'Lua.diagnostics.neededFileStatus', {
['await-in-sync'] = 'Any',
['not-yieldable'] = 'Any',
})
---@diagnostic disable: await-in-sync
local function doProjects(pathname)
local path = fs.path(pathname)
if not fs.exists(path) then
return
end
local uris = {}
print('基准诊断目录:', path)
fsu.scanDirectory(path, function (path)
if path:extension():string() ~= '.lua' then
return
end
local uri = furi.encode(path:string())
local text = fsu.loadFile(path)
files.setText(uri, text)
files.open(uri)
uris[#uris+1] = uri
end)
local _ <close> = function ()
for _, uri in ipairs(uris) do
files.remove(uri)
end
end
print('开始诊断...')
ws.ready = true
diag.diagnosticsScope(furi.encode(path:string()))
local clock = os.clock()
for uri in files.eachFile() do
local fileClock = os.clock()
diag.doDiagnostic(uri, true)
print('诊断文件耗时:', os.clock() - fileClock, uri)
end
local passed = os.clock() - clock
print('基准全量诊断用时:', passed)
end
--doProjects [[C:\SSSEditor\client\Output\Lua]]
doProjects [[C:\W3-Server\script]]
|