日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > skynet lua 代碼靜態分析

skynet lua 代碼靜態分析

來源:程序員人生   發布時間:2016-12-02 09:25:24 閱讀次數:4626次
skynet是1款為多人在線游戲設計的服務端框架,使用C+Lua開發。skynet這套框架的1個優點是,通常只需要寫lua代碼,很少用到c做開發,1定程度上提高了開發效力。而skynet文檔相對較少,所以這里利用1點時間學習和總結skynet相干內容,文章就講授下skynet lua代碼靜態分析。

skynet項目大部份代碼應當是lua代碼,而這部份代碼,在skynet啟動前不需要手動編譯,直接啟動skynet就能夠跑起來。也就是說,對lua代碼,skynet沒有提供編譯工具,其實也沒有必要提供。

但是,這對開發來講,有時候卻很不友好,由于lua代碼需要等skynet跑起來且履行到才知道是不是有毛病。

所以,這里講授如何對skynet lua項目進行代碼靜態分析,在開發的時候盡早發現問題。固然,文章除適用skynet項目,還適用其他使用lua的項目。

lua項目代碼靜態分析的方法有兩個:
1、使用lua編譯器(luac)進行分析
2、使用luacheck插件進行分析

第1種方法,利用lua編譯器對lua代碼進行語法檢查。這類方法簡單有效,具體方法我在之前的文章介紹過,有興趣點這里瀏覽。skynet項目lua代碼簡單加密 -- 沒有開花的樹 csdn

第2種方法,使用Luacheck對lua代碼進行分析。這類方法是我比較推薦的,luacheck是個優秀的第3方插件,代碼是MIT開源的,有興趣點這里圍觀。Luacheck Git


Lua分析器(Luacheck)

Luacheck介紹

Luacheck是Lua1個靜態分析工具,與Lua語言編譯器相比,Luacheck可以對lua程序進行更加嚴格的毛病分析。它不但可以檢查出lua語法問題,而且可以檢查那些完全合乎語法但卻極可能是毛病的代碼。換句話說,Luacheck能檢查到lua程序中潛伏的毛病,如未定義的變量使用,未使用的變量和值,未定義的全局變量使用,履行不到的代碼等等

Luacheck安裝與使用

安裝:
# git clone https://github.com/mpeterv/luacheck.git # cd luacheck # ./install.lua /usr
使用:
# luacheck ./install.lua Checking install.lua OK Total: 0 warnings / 0 errors in 1 file
注意了,luacheck依賴lua,使用請確保lua已安裝

如果想檢查全部項目的lua代碼,方法以下:
#!/bin/bash Luas=`find . -name "*.lua"` if [ "$Luas" != "" ]; then luacheck $Luas fi
保存為 test.sh,履行,大致效果以下:
# chmod +x ./test.sh # ./test.sh Checking bin/luacheck.lua OK Checking spec/check_spec.lua OK Checking spec/lexer_spec.lua OK Checking spec/cache_spec.lua OK Checking spec/globbing_spec.lua OK Checking spec/config_spec.lua OK ... Total: 0 warnings / 0 errors in 42 files



Luacheck參數說明

Luacheck值得推薦的地方,除能查找lua毛病,更重要的是,它可以自定義捕捉的毛病類型。可能有些寫法我們不認為是錯的,就能夠避免顯示出來。
# luacheck --help Usage: luacheck ([--config] | [--no-config]) [-g] [-u] [-r] [-a] [-s] [--no-self] [--std] [-c] [-d] [-t] [-m] [--no-inline] [--filename] [-j] [--formatter] [-q] [--codes] [--ranges] [--no-color] [-v] [-h][] ... [--globals [] ...] [--read-globals [] ...] [--new-globals [] ...] [--new-read-globals [] ...] [--ignore[] ...] [--enable[] ...] [--only[] ...] [--exclude-files[] ...] [--include-files[] ...]

這里重點介紹以下幾個參數:
--no-unused 疏忽變量未使用
--no-unused-args 疏忽參數未使用
--no-redefined 疏忽變量重定義
--globals... 疏忽哪些全局變量
--ignore... 疏忽哪些毛病提示
--quiet 只顯示有毛病的文件提示
--codes 顯示毛病編號


Luacheck示例

以例子說明前面幾個參數吧。
# luacheck $Luas --no-unused --quiet --no-unused-args --no-redefined --no-color --globals table string --ignore 542 512 Total: 0 warnings / 0 errors in 42 files

解釋以上,個別參數分別代表甚么意思?
--globals table string 疏忽全局變量table、string的聲明和使用
--ignore 542 512 疏忽編號為542、512的毛病

至于 542 512分別代表甚么,怎樣得到的,看這里。

怎樣得到1個毛病的編號?
# cat ./test.lua local t={} for k,v in pairs(t) do return k,v end # luacheck ./test.lua --codes Checking test.lua 1 warning test.lua:2:1: (W512) loop is executed at most once Total: 1 warning / 0 errors in 1 file
以上,512就是這個毛病的編號,所以 --ignore 512就是疏忽這個毛病提示。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产精品视频免费观看 | 欧美一区二区三区四区五区 | 日韩av在线免费播放 | 中文字幕+乱码+中文乱码图片 | 国产最新在线 | 久久99精品国产一区二区三区 | 午夜欧美一区二区三区在线播放 | 91视视频在线观看入口直接观看 | 狠狠久| 国产一区二区高清 | 亚洲免费视频一区二区 | 色区综合 | 九九资源站 | 国产成人一区二区 | 二区三区视频 | 日韩三级在线 | 国产福利在线播放 | 国产在线二区 | 99精品小视频 | 久久国产精品偷 | 久久窝窝 | 久久九精品 | 天堂视频在线 | 成人久久精品 | 中文字幕在线观看一区二区三区 | 一区二区三区av在线 | 成人欧美一区二区三区视频网页 | 亚洲成人毛片 | 亚洲一区 在线播放 | 99精品免费久久久久久久久 | 黄视频在线播放 | 欧美视频福利 | 天堂免费电影 | 日本视频在线播放 | 欧美极品一区二区 | 国产二三区 | 成人h精品动漫一区二区三区 | 亚洲黄色毛片 | 亚洲国产精品影院 | 国产精品久久久久精 | 日韩成人资源 |