<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    Clojure世界:靜態(tài)代碼分析

    Posted on 2012-03-23 21:28 dennis 閱讀(4578) 評(píng)論(0)  編輯  收藏 所屬分類: Clojure
        Java世界里有findbugs這樣的神器,可以讓你避免很多“簡單愚蠢”的bug。同樣,Clojure世界里也有相應(yīng)的替代品,這就是今天要介紹的kibit。不過kibit現(xiàn)在還比較年輕,判斷的規(guī)則較少,但是已經(jīng)可以使用起來做clojure代碼的靜態(tài)檢查。

    項(xiàng)目主頁:https://github.com/jonase/kibit
    使用:
    1.安裝lein插件:
    lein plugin install jonase/kibit 0.0.2

    2.在項(xiàng)目的根目錄運(yùn)行
    lein kibit

    kibit會(huì)分析項(xiàng)目里所有clojure源碼,每個(gè)namespace分別分析,例如我分析clojure-control的輸出:

    == control.commands ==
    == control.core ==
    [186] Consider (zero? (:status (ssh host user cluster (str "test -e " file)))) instead of (= (:status (ssh host user cluster (str "test -e " file))) 0)
    == control.main ==
    == leiningen.control ==
    [null] Consider Integer/parseInt instead of (fn* [p1__61444#] (Integer/parseInt p1__61444#))
    [null] Consider Integer/parseInt instead of (fn* [p1__65254#] (Integer/parseInt p1__65254#))

        顯然,kibit一個(gè)一個(gè)namespace分析過去,并且按照規(guī)則對它認(rèn)為有問題的地方打印出來,并提出建議。例如這里它建議我用
    (zero? (:status (ssh host user cluster (str "test -e " file))))
        替換control.core里186行的:
     (= (:status (ssh host user cluster (str "test -e " file))) 0)

        目前kibit大多數(shù)是這類代碼風(fēng)格上的檢查,還沒有做到類似findbugs那樣更豐富的檢查,例如NPE異常檢查等。此外kibit還提供反射檢查,任何有反射調(diào)用的地方都給出警告。
        kibit是基于core.logic實(shí)現(xiàn)的,它的規(guī)則都放在了這里,通過defrules宏來定義檢查規(guī)則,源碼中對算術(shù)運(yùn)算的規(guī)則定義:
    (defrules rules
      [(+ ?x 1) (inc ?x)]
      [(+ 1 ?x) (inc ?x)]
      [(- ?x 1) (dec ?x)]

      [(* ?x (* . ?xs)) (* ?x . ?xs)]
      [(+ ?x (+ . ?xs)) (+ ?x . ?xs)])
       
        第一個(gè)規(guī)則,任何對類似(+ 1 x)的代碼,都建議替換成(inc x),后面的與此類似。理論上你也可以自定義規(guī)則,并提交給官方。總體上說kibit仍然是比不上findbugs的,期待未來發(fā)展的更好。
    主站蜘蛛池模板: 亚洲成a∨人片在无码2023| 亚洲综合精品第一页| 一区二区视频在线免费观看| 成人免费午夜视频| tom影院亚洲国产一区二区| 18禁美女黄网站色大片免费观看 | 日韩a在线观看免费观看| 在线观看日本亚洲一区| 毛片a级毛片免费播放下载 | 日本免费中文字幕在线看| 亚洲精品人成网线在线播放va| 成年女人毛片免费视频| 亚洲国产欧美一区二区三区| 四虎影视免费永久在线观看| 美女视频黄a视频全免费网站色| 亚洲男人的天堂一区二区| a级在线观看免费| 99久久精品国产亚洲| 麻豆国产精品免费视频| 国产亚洲玖玖玖在线观看| 免费欧洲毛片A级视频无风险| 粉色视频免费入口| 亚洲精品无码精品mV在线观看 | 在线观看免费人成视频色| 中文字幕在线日亚洲9| 国产一区二区三区免费在线观看| 日韩精品无码永久免费网站| 亚洲国产精品无码久久一线| 亚洲人成免费电影| 青青青亚洲精品国产| 亚洲综合精品香蕉久久网| 免费黄色福利视频| 无遮挡a级毛片免费看| 亚洲精品无码成人AAA片| 免费AA片少妇人AA片直播| 国产亚洲精品免费| 久久精品国产亚洲AV果冻传媒| 我想看一级毛片免费的| 国产成人高清精品免费观看| 亚洲第一成年网站大全亚洲| 哒哒哒免费视频观看在线www|