<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 閱讀(4578) 評論(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的,期待未來發展的更好。
    主站蜘蛛池模板: 黄页网站在线免费观看| 亚洲国产精品嫩草影院久久| 亚洲av无码国产精品色午夜字幕 | 国产亚洲无线码一区二区| 亚洲国产欧美国产综合一区| 亚洲免费网站观看视频| 女人18毛片水最多免费观看| 亚洲精品亚洲人成在线麻豆| 秋霞人成在线观看免费视频| 在线不卡免费视频| 亚洲欧美日本韩国| 国产精品另类激情久久久免费| 亚洲爆乳少妇无码激情| 国产成人免费全部网站| 免费无码婬片aaa直播表情| 精品国产福利尤物免费| 久久aa毛片免费播放嗯啊| 国产麻豆视频免费观看| 亚洲国产成人精品无码一区二区| 人妻无码一区二区三区免费| 亚洲男人av香蕉爽爽爽爽| 亚洲一区中文字幕在线电影网 | 狠狠躁狠狠爱免费视频无码| 婷婷综合缴情亚洲狠狠尤物| 美女又黄又免费的视频| 国产嫩草影院精品免费网址| 国产精品无码亚洲精品2021| 国产精品麻豆免费版| 精品国产亚洲第一区二区三区| 免费无遮挡无码视频网站| 免费AA片少妇人AA片直播| 1区1区3区4区产品亚洲| 无码AV片在线观看免费| 亚洲一区电影在线观看| 最近的免费中文字幕视频| 亚洲精品天堂成人片AV在线播放| 免费欧洲美女牲交视频| 精品久久久久久国产免费了| 亚洲综合精品网站在线观看| 国产亚洲情侣一区二区无| 亚洲一区二区三区日本久久九|