-
Notifications
You must be signed in to change notification settings - Fork 66
/
core.clj
38 lines (31 loc) · 1.24 KB
/
core.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
(set! *warn-on-reflection* false)
(ns eastwood.core
(:require [analyze.core :as analyze]
[clojure.string :as string]
[clojure.set :as set]
[eastwood.linters.core :as linters]
[eastwood.linters.deprecated :as deprecated]))
(defn analyze [ns-sym]
(let [source-file (-> (name ns-sym)
(string/replace "." "/")
(string/replace "-" "_")
(str ".clj"))]
(analyze/analyze-path source-file ns-sym)))
(def ^:private linters
{:naked-use linters/naked-use
:unused-private-vars linters/unused-private-vars
:misplaced-docstrings linters/misplaced-docstrings
;:non-dynamic-earmuffs linters/non-dynamic-earmuffs ;checked by compiler
:reflection linters/reflection
:deprecations deprecated/deprecations})
(def ^:private all-linters (set (keys linters)))
(defn- lint [exprs kw]
((linters kw) exprs))
(defn lint-ns [ns-sym & {:keys [only exclude]
:or {only all-linters
exclude nil}}]
(let [namespaces (set/difference (set only) (set exclude))
exprs (analyze ns-sym)]
(doseq [ns namespaces]
(lint exprs ns))))
;(lint-ns 'brittle.core :only [:deprecations])