clj-kondo

clj-kondo

November 1, 2022
clojure
clojure-lsp, clj-kondo

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}}

속이 시원하다.


No notes link to this note