Clojure Slamhound无法重建我的ns表单

Clojure Slamhound无法重建我的ns表单,clojure,Clojure,我创建了一个包含两个名称空间的项目:familja-moderne.core和familja-moderne.visualization.svg src/familja_moderne/core.clj (ns familja-moderne.core (:require [clojure.set :as set]) (:import (java.io ByteArrayInputStream))) (def try-out [(set/map-invert {:1 :2

我创建了一个包含两个名称空间的项目:familja-moderne.core和familja-moderne.visualization.svg

src/familja_moderne/core.clj

(ns familja-moderne.core
  (:require [clojure.set :as set])
  (:import (java.io ByteArrayInputStream)))

(def try-out
  [(set/map-invert
    {:1 :2
     :3 :4})
   (ByteArrayInputStream. (.getBytes "myBytes"))
   (familja-moderne.visualization.svg/points heists)])
src/familja_moderne/visualization/svg.clj

(ns familja-moderne.visualization.svg
  (:refer-clojure :exclude [max min]))

(def some-map {:this :that
               :foo :bar})

(def many-dependencies
  {:something (ByteArrayInputStream. (.getBytes "something"))
   :another-map (set/map-invert some-map)})
当我跑的时候

lein slamhound code/familja-moderne/src/familja_moderne/visualization/svg.clj
我明白了

我不明白,但它起作用了,我的ns表单被重建为

(ns familja-moderne.visualization.svg
  (:require [clojure.set :as set])
  (:import (java.io ByteArrayInputStream))
  (:refer-clojure :exclude [max min]))
运行

lein slamhound code/familja-moderne/src/familja_moderne/core.clj
lein slamhound code/familja-moderne/src/familja_moderne/
失败,我收到以下消息

WARNING: ex-info already refers to: #'clojure.core/ex-info in namespace: slingshot.ex-info, being replaced by: #'slingshot.ex-info/ex-info
WARNING: ex-data already refers to: #'clojure.core/ex-data in namespace: slingshot.ex-info, being replaced by: #'slingshot.ex-info/ex-data
Failed to reconstruct: #<File code/familja-moderne/src/familja_moderne/core.clj>
java.lang.ClassNotFoundException: familja-moderne.visualization.svg, compiling:(NO_SOURCE_PATH:0:0)
在两个名称空间中重建ns表单的方法会产生不同的结果

WARNING: ex-info already refers to: #'clojure.core/ex-info in namespace: slingshot.ex-info, being replaced by: #'slingshot.ex-info/ex-info
WARNING: ex-data already refers to: #'clojure.core/ex-data in namespace: slingshot.ex-info, being replaced by: #'slingshot.ex-info/ex-data
Failed to reconstruct: #<File code/familja-moderne/src/familja_moderne/core.clj>
Couldn't resolve familja-moderne.visualization.svg, got as far as {:import #{java.io.ByteArrayInputStream}, :alias {clojure.set set}, :old {:load nil, :exclude {}, :xrefer #{}, :require #{}, :refer-all #{}, :verbose #{}, :rename {}, :alias {clojure.set set}, :reload #{}, :reload-all #{}, :gen-class nil, :import #{java.io.ByteArrayInputStream}, :refer {}}, :meta nil, :name familja-moderne.core}
警告:ex-info已在命名空间:slingshot.ex-info中引用:#'clojure.core/ex-info,替换为:#'slingshot.ex-info/ex-info
警告:ex数据已在命名空间:slingshot.ex-info中引用:#'clojure.core/ex-data,替换为:#'slingshot.ex-info/ex-data
无法重建:#
无法解决家庭JA-Moderan3.Visu可视化.svg无法解决家庭家庭JA-Moderan3.1.1.1.1.1.1.1无法解决家庭JA-1-1.1.1.3.2.3.3.3.3.3.可视化.svg,得到了一个不了不了不了不了不了不了不了不了家庭家庭JAJAJAJAJA-1-1-1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.2.2.2.2.1.2.2.2.1.1.1.1.1.1.3.1.1无法解决不了不了不了不了不了不了不了不了不了不了不了不了不了家庭家庭家庭JAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJaJaJa-1.3.3.3.3.3.3.3.3.3.3.3.3.3.可视化..ByteArrayInputStream},:refere{},:meta nil,:name familja moderne.core}

如果我从familja-moderne.core中删除对familja-moderne.visualization.svg的任何引用,它可以正常工作。

我遇到了相同的问题,并打开了一个PR以修复Slamhound:

您可以从中的
虚线别名
分支执行
lein安装
来尝试

我的理论是,这个问题的发生是因为clojure bug CLJ-1403,当Slamhound试图“再生”ns表单时,会抛出异常

希望有帮助

WARNING: ex-info already refers to: #'clojure.core/ex-info in namespace: slingshot.ex-info, being replaced by: #'slingshot.ex-info/ex-info
WARNING: ex-data already refers to: #'clojure.core/ex-data in namespace: slingshot.ex-info, being replaced by: #'slingshot.ex-info/ex-data
Failed to reconstruct: #<File code/familja-moderne/src/familja_moderne/core.clj>
Couldn't resolve familja-moderne.visualization.svg, got as far as {:import #{java.io.ByteArrayInputStream}, :alias {clojure.set set}, :old {:load nil, :exclude {}, :xrefer #{}, :require #{}, :refer-all #{}, :verbose #{}, :rename {}, :alias {clojure.set set}, :reload #{}, :reload-all #{}, :gen-class nil, :import #{java.io.ByteArrayInputStream}, :refer {}}, :meta nil, :name familja-moderne.core}