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

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

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

    莊周夢蝶

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

    Clojure世界:靜態代碼分析

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

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

    2.在項目的根目錄運行
    lein kibit

    kibit會分析項目里所有clojure源碼,每個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一個一個namespace分析過去,并且按照規則對它認為有問題的地方打印出來,并提出建議。例如這里它建議我用
    (zero? (:status (ssh host user cluster (str "test -e " file))))
        替換control.core里186行的:
     (= (:status (ssh host user cluster (str "test -e " file))) 0)

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

      [(* ?x (* . ?xs)) (* ?x . ?xs)]
      [(+ ?x (+ . ?xs)) (+ ?x . ?xs)])
       
        第一個規則,任何對類似(+ 1 x)的代碼,都建議替換成(inc x),后面的與此類似。理論上你也可以自定義規則,并提交給官方。總體上說kibit仍然是比不上findbugs的,期待未來發展的更好。
    主站蜘蛛池模板: 亚洲欧洲专线一区| 无码成A毛片免费| 久久国产亚洲精品麻豆| 午夜影院免费观看| 亚洲乱码中文字幕在线| 亚洲欧洲日产国码无码久久99| 久久99国产综合精品免费| 老子影院午夜伦不卡亚洲| 久久综合图区亚洲综合图区| 免费看成人AA片无码视频羞羞网| 免费人成动漫在线播放r18| 18gay台湾男同亚洲男同| 免费国产不卡午夜福在线| 午夜免费福利片观看| 男性gay黄免费网站| 亚洲成人免费网址| 亚洲欧洲∨国产一区二区三区| 一个人免费高清在线观看| 久久不见久久见免费影院www日本| 亚洲免费视频播放| 久久亚洲国产精品五月天| 国产zzjjzzjj视频全免费| 97青青草原国产免费观看| 无码日韩人妻AV一区免费l | 国产亚洲精品免费视频播放| 嫖丰满老熟妇AAAA片免费看| a级毛片毛片免费观看永久| 国产成人亚洲精品播放器下载| 亚洲人成毛片线播放| 图图资源网亚洲综合网站| 免费人成网站在线高清| 成年人视频在线观看免费| 99久久99热精品免费观看国产| 黄色短视频免费看| 日本免费精品一区二区三区| 亚洲欧美日韩中文字幕一区二区三区| 亚洲欧洲校园自拍都市| 亚洲国产精品国自产拍电影| 亚洲精品白浆高清久久久久久| 全亚洲最新黄色特级网站 | 99爱免费观看视频在线|