<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的,期待未來發展的更好。
    主站蜘蛛池模板: 性色av免费观看| 亚洲色偷偷偷综合网| 国产免费av一区二区三区| a级毛片视频免费观看| 美女视频黄a视频全免费网站一区 美女视频黄a视频全免费网站色 | 亚洲精品视频免费在线观看| 国产成人1024精品免费| 在线视频亚洲一区| 亚洲国产成人久久99精品| 久久精品国产亚洲av麻| 亚洲伊人成无码综合网| 免费看一级做a爰片久久| 成人免费视频观看无遮挡| 18级成人毛片免费观看| 国产精品免费AV片在线观看| 一区二区在线视频免费观看| 国产成人综合亚洲一区| 亚洲6080yy久久无码产自国产| www.亚洲成在线| 亚洲一卡2卡4卡5卡6卡在线99 | 99在线免费观看| 久久免费国产精品| 国产精品免费视频观看拍拍| 国产偷国产偷亚洲高清人| 亚洲AV无码专区国产乱码不卡| 天堂亚洲国产中文在线| 亚洲最大福利视频| 亚洲真人无码永久在线观看| 亚洲色欲色欲www| 久久久久se色偷偷亚洲精品av | 全免费A级毛片免费看网站| 国产精品成人免费一区二区| 久久久久久久免费视频| 在线看免费观看AV深夜影院| 五月亭亭免费高清在线| 妻子5免费完整高清电视| 无码人妻久久一区二区三区免费丨 | 中文字幕亚洲无线码| 亚洲熟妇丰满多毛XXXX| 精品亚洲综合久久中文字幕| 亚洲国产成人久久精品动漫|