最近,我在我所在公司的项目中发现了一个bug。
基本上,发生的情况是在测试的命名空间内部,我们引入了两个不同的命名空间,我们在这里称它们分别为first-ns和second-ns。
first-ns和second-ns都定义了一个同名spec,例如:
(ns first-ns)
(s/def :same/name
int?)
(ns second-ns)
(s/def :same/name
string?)
我的问题是,是否存在一种方式让Clojure编译器针对这种情况发出关于名称冲突的警告?在包含数百个spec的大型代码库中,这种情况偶尔会发生,并可能导致希格斯幽灵(Heisenbug)。唯一的解决方案是将spec的命名空间设置为其定义文件的相同ns吗?