Иствуд Линтер не отключает предупреждения об устаревании - PullRequest
0 голосов
/ 17 февраля 2020

Используя Иствуд , я пытаюсь отключить предупреждения об устаревании для определенного c пакета при привязке указанного пространства имен Clojure. В этом случае, Eastwood перестает работать при вызове API Google, что является устаревшим.

В соответствии с документацией я попытался отключить линтер для этого пакета.

λ cat src/main/resources/third-party-libs.clj

(disable-warning
  {:linter :deprecations
   :symbol-matches #{"^#'com\.google\.api\.core\.*'"}})

Но без кубиков. Как отключить устаревание для определенных c классов или пакетов?

my/namespace.clj:13:5: deprecations: Static method 'public static void com.google.api.core.ApiFutures.addCallback(com.google.api.core.ApiFuture,com.google.api.core.ApiFutureCallback)' is deprecated.

РЕДАКТИРОВАТЬ

A) Я могу загрузить src/main/resources/my-eastwood-config.clj. Но com.google.api.core.ApiFutures.* все еще не игнорируется.

(disable-warning
  {:linter :deprecations
   :symbol-matches #{#"com\.google\.api\.core\.ApiFutures.*"}})

B) Любой из этих форматов дает мне ошибку ниже.

i)

(disable-warning
  {:linter :deprecations
   :symbol-matches #{"^#'com\.google\.api\.core\..*'"}})

(disable-warning
  {:linter :deprecations
   :symbol-matches #{"^#'com\\.google\\.api\\.core\\..*'"}})

ii)

CompilerException java.lang.RuntimeException: Unsupported escape character: \., compiling:(null:4:31)
        clojure.lang.Compiler.load (Compiler.java:7521)
        clojure.lang.Compiler.load (Compiler.java:7461)
        clojure.core/load-reader (core.clj:4053)
        clojure.core/load-reader (core.clj:4048)
        eastwood.util/init-warning-enable-config/fn--40733 (util.clj:916)
        eastwood.util/init-warning-enable-config (util.clj:914)
        eastwood.util/init-warning-enable-config (util.clj:907)
        eastwood.lint/last-options-map-adjustments (lint.clj:467)
        eastwood.lint/last-options-map-adjustments (lint.clj:456)
        eastwood.lint/eastwood (lint.clj:511)
        eastwood.lint/eastwood (lint.clj:501)
        eastwood.lint/eastwood (lint.clj:502)
        eastwood.lint/eastwood (lint.clj:501)
        eastwood.lint/eastwood-from-cmdline (lint.clj:529)
        eastwood.lint/eastwood-from-cmdline (lint.clj:528)
        clojure.lang.Var.invoke (Var.java:381)
        eastwood.versioncheck/run-eastwood (versioncheck.clj:15)
        eastwood.versioncheck/run-eastwood (versioncheck.clj:9)
        user/eval39298 (form-init6182731209880131993.clj:1)
        user/eval39298 (form-init6182731209880131993.clj:1)
        clojure.lang.Compiler.eval (Compiler.java:7062)
        clojure.lang.Compiler.eval (Compiler.java:7052)
        clojure.lang.Compiler.load (Compiler.java:7514)
        clojure.lang.Compiler.loadFile (Compiler.java:7452)
        clojure.main/load-script (main.clj:278)
        clojure.main/init-opt (main.clj:280)
        clojure.main/init-opt (main.clj:280)
        clojure.main/initialize (main.clj:311)
        clojure.main/null-opt (main.clj:345)
        clojure.main/null-opt (main.clj:342)
        clojure.main/main (main.clj:424)
        clojure.main/main (main.clj:387)
        clojure.lang.Var.applyTo (Var.java:702)
clojure.main.main (main.java:37)

1 Ответ

1 голос
/ 18 февраля 2020

Иствуд не получает ваш файл конфигурации. Вы можете отладить это с помощью:

lein eastwood '{:debug [:config]}'
== Eastwood 0.3.7 Clojure 1.10.1 JVM 1.8.0_242 ==
Loading config file: jar:file:$HOME/.m2/repository/jonase/eastwood/0.3.7/eastwood-0.3.7.jar!/eastwood/config/clojure.clj
Loading config file: jar:file:$HOME/.m2/repository/jonase/eastwood/0.3.7/eastwood-0.3.7.jar!/eastwood/config/clojure-contrib.clj
Loading config file: jar:file:$HOME/.m2/repository/jonase/eastwood/0.3.7/eastwood-0.3.7.jar!/eastwood/config/third-party-libs.clj
...

Причина, по которой подобный именованный файл не выбран:

Вы можете указать ключ: builtin-config-files в Параметры карты для переопределения встроенных файлов конфигурации чтения. По умолчанию используется ["clojure.clj" "clojure-contrib.clj" "Third-Party-libs.clj"]. Все такие имена файлов ищутся только во встроенных конфигурационных файлах Eastwood.

Аналогичным образом вы можете указать: config-files в карте параметров, чтобы дать дополнительные файлы для чтения. Это имена файлов, которые могут быть где угодно в вашей файловой системе, заданы как строки или, если Eastwood вызывается из REPL, все, что можно передать в clojure. java .io / reader.


Источник: https://github.com/jonase/eastwood#eastwood -config-files

Не очень конкретно c, но это означает, что они рассматриваются как ресурсы под /eastwood/config/....

Если вы поместите файл в то же место с тем же именем, вы можете выиграть или не выиграть у стандартных конфигураций (например, один выиграл). Так что выход в том, чтобы указать конфиг только для себя. Например,

lein eastwood '{:config-files ["eastwood-config.clj"] :debug [:config]}' 
== Eastwood 0.3.7 Clojure 1.10.1 JVM 1.8.0_242 ==
Loading config file: jar://...
...
Loading config file: eastwood-config.clj
...

Также следите за своим регулярным выражением. Я думаю, что вы хотите: "^#'com\.google\.api\.core\..*'" (обратите внимание на дополнительные . перед *); в противном случае \. повторяется.

...