clj-kondo
November 1, 2022
clj-kondo는 #
클로저를 위한 정적 코드 분석도구이다. clojure-lsp에서 내부적으로 사용하고 있다.
문제 #
소설 연재 플랫폼 개발 일지 005에서 잘 작동하는 코드에 lsp가 unresolved symbol
에러를 띄우는 문제가 있었다.
해결 시도 1 #
처음에는 클래스패스를 읽지 못해서 그런가 싶어서 프로젝트 .lsp
디렉터리에 다음 설정을 해보았다.
{:project-specs [{:project-path "shadow-cljs.edn"
:classpath-cmd ["shadow-cljs" "classpath"]}]}
shadow-cljs.edn이 있는 곳이 프로젝트 루트이고, 클래스패스는 다음 명령으로 읽어라하고 지정했다.
하지만 clojure-lsp는 기본적으로 shadow-cljs.edn
파일이 발견되면 npx shadow-cljs classpath
명령으로 클래스패스를 읽는다고 한다.
별 의미 없는 설정이었다.
해결 #
검색 결과 유사한 문제를 겪는 분이 있어 해당 스레드의 도움을 받았다.
Clj-kondo only expands a selected set of macros from clojure.core and some popular community libraries. For unrecognized macros you can use these configurations:
clj-kondo는 일부 유명한 라이브러리들과 클로저 코어에 있는 매크로들만 파악할 수 있다고 한다. clj-kondo가 알지 못하는 매크로들은 다음과 같은 설정을 해주어야 한다.
{;; https://github.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#unresolved-symbol
:linters {:unresolved-symbol {:exclude [render]}}
;; https://github.com/clj-kondo/clj-kondo/blob/master/doc/config.md#lint-a-custom-macro-like-a-built-in-macro
:lint-as {shadow.grove/defc clojure.core/defn}}
속이 시원하다.