Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

False positive: Unused public var 'clojure-sample.component-example/CircuitBreaker' #1783

Open
victorgsp opened this issue Mar 1, 2024 · 0 comments
Labels
API Related to API / CLI bug Something isn't working good first issue Good for newcomers
Projects

Comments

@victorgsp
Copy link

victorgsp commented Mar 1, 2024

Describe the bug
clojure-lsp/unused-public-var reports a record as unused when it is used.

To Reproduce
Steps to reproduce the behavior:

  1. Clone project: git clone https://github.com/victorgsp/clojure-sample
  2. Run clojure-lsp diagnostics
  3. See error
    ...
    src/clojure_sample/component_example.clj:5:14: info: [clojure-lsp/unused-public-var] Unused public var 'clojure-sample.component-example/CircuitBreaker'
    src/clojure_sample/component_example.clj:5:14: info: [clojure-lsp/unused-public-var] Unused public var 'clojure-sample.component-example/->CircuitBreaker'
    ...

Expected behavior
No such error should be reported.

clojure-lsp output
[ 10%] Finding cache               [INFO] [DB] Reading transit analysis cache from /Users/victor.guedes/dev/personal/clojure-sample/.lsp/.cache/db.transit.json db took 87ms
[INFO] :maintain-dep-graph 20ms
[INFO] [Startup] Using cached classpath #{"/Users/victor.guedes/.m2/repository/org/clojure/clojure/1.10.3/clojure-1.10.3.jar" "/Users/victor.guedes/.m2/repository/org/clojure/google-closure-library-third-party/0.0-20191016-6ae1f72f/google-closure-library-third-party-0.0-20191016-6ae1f72f.jar" "/Users/victor.guedes/.m2/repository/org/msgpack/msgpack/0.6.12/msgpack-0.6.12.jar" "/Users/victor.guedes/.m2/repository/org/clojure/data.priority-map/1.1.0/data.priority-map-1.1.0.jar" "/Users/victor.guedes/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.8.7/jackson-core-2.8.7.jar" "/Users/victor.guedes/.m2/repository/com/google/elemental2/elemental2-core/1.0.0-RC1/elemental2-core-1.0.0-RC1.jar" "/Users/victor.guedes/.m2/repository/com/google/jsinterop/base/1.0.0/base-1.0.0.jar" "/Users/victor.guedes/.m2/repository/org/clojars/brenton/google-diff-match-patch/0.1/google-diff-match-patch-0.1.jar" "/Users/victor.guedes/.m2/repository/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1.jar" "/Users/victor.guedes/.m2/repository/org/clojure/tools.reader/1.3.6/tools.reader-1.3.6.jar" "/Users/victor.guedes/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar" "/Users/victor.guedes/.m2/repository/com/google/protobuf/protobuf-java/3.11.1/protobuf-java-3.11.1.jar" "/Users/victor.guedes/.m2/repository/com/google/j2objc/j2objc-annotations/1.1/j2objc-annotations-1.1.jar" "/Users/victor.guedes/.m2/repository/environ/environ/1.1.0/environ-1.1.0.jar" "/Users/victor.guedes/.m2/repository/com/google/jsinterop/jsinterop-annotations/1.0.2/jsinterop-annotations-1.0.2.jar" "/Users/victor.guedes/.m2/repository/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar" "/Users/victor.guedes/.m2/repository/org/ow2/asm/asm/9.2/asm-9.2.jar" "/Users/victor.guedes/.m2/repository/org/clojure/tools.namespace/0.3.0/tools.namespace-0.3.0.jar" "/Users/victor.guedes/.m2/repository/com/rpl/specter/1.0.5/specter-1.0.5.jar" "/Users/victor.guedes/.m2/repository/org/clojure/data.json/0.2.6/data.json-0.2.6.jar" "/Users/victor.guedes/.m2/repository/com/stuartsierra/component/1.1.0/component-1.1.0.jar" "/Users/victor.guedes/.m2/repository/org/clojure/java.classpath/0.2.3/java.classpath-0.2.3.jar" "/Users/victor.guedes/.m2/repository/org/javassist/javassist/3.18.1-GA/javassist-3.18.1-GA.jar" "/Users/victor.guedes/.m2/repository/com/google/errorprone/error_prone_annotations/2.3.1/error_prone_annotations-2.3.1.jar" "/Users/victor.guedes/.m2/repository/org/clojure/spec.alpha/0.2.194/spec.alpha-0.2.194.jar" "/Users/victor.guedes/.m2/repository/colorize/colorize/0.1.1/colorize-0.1.1.jar" "/Users/victor.guedes/.m2/repository/io/aviso/pretty/0.1.37/pretty-0.1.37.jar" "src" "/Users/victor.guedes/.m2/repository/org/clojure/math.combinatorics/0.1.6/math.combinatorics-0.1.6.jar" "/Users/victor.guedes/.m2/repository/prismatic/schema/1.4.1/schema-1.4.1.jar" "/Users/victor.guedes/.m2/repository/org/clojure/core.rrb-vector/0.0.14/core.rrb-vector-0.0.14.jar" "/Users/victor.guedes/.m2/repository/org/clojure/google-closure-library/0.0-20191016-6ae1f72f/google-closure-library-0.0-20191016-6ae1f72f.jar" "/Users/victor.guedes/.m2/repository/com/cognitect/transit-java/0.8.332/transit-java-0.8.332.jar" "/Users/victor.guedes/.m2/repository/riddley/riddley/0.1.12/riddley-0.1.12.jar" "/Users/victor.guedes/.m2/repository/org/clojure/core.async/1.5.648/core.async-1.5.648.jar" "/Users/victor.guedes/.m2/repository/midje/midje/1.10.4/midje-1.10.4.jar" "/Users/victor.guedes/.m2/repository/nubank/matcher-combinators/3.3.1/matcher-combinators-3.3.1.jar" "/Users/victor.guedes/.m2/repository/com/cognitect/transit-clj/0.8.309/transit-clj-0.8.309.jar" "/Users/victor.guedes/.m2/repository/slingshot/slingshot/0.12.2/slingshot-0.12.2.jar" "/Users/victor.guedes/.m2/repository/com/google/javascript/closure-compiler-externs/v20200315/closure-compiler-externs-v20200315.jar" "/Users/victor.guedes/.m2/repository/joda-time/joda-time/2.10/joda-time-2.10.jar" "/Users/victor.guedes/.m2/repository/org/tcrawley/dynapath/1.0.0/dynapath-1.0.0.jar" "/Users/victor.guedes/.m2/repository/com/google/re2j/re2j/1.3/re2j-1.3.jar" "/Users/victor.guedes/.m2/repository/mvxcvi/puget/1.1.2/puget-1.1.2.jar" "/Users/victor.guedes/.m2/repository/org/codehaus/mojo/animal-sniffer-annotations/1.14/animal-sniffer-annotations-1.14.jar" "/Users/victor.guedes/.m2/repository/org/clojure/tools.macro/0.1.5/tools.macro-0.1.5.jar" "/Users/victor.guedes/.m2/repository/org/checkerframework/checker-qual/2.0.0/checker-qual-2.0.0.jar" "/Users/victor.guedes/.m2/repository/fipp/fipp/0.6.17/fipp-0.6.17.jar" "/Users/victor.guedes/.m2/repository/clj-time/clj-time/0.15.1/clj-time-0.15.1.jar" "/Users/victor.guedes/.m2/repository/com/google/guava/guava/25.1-jre/guava-25.1-jre.jar" "/Users/victor.guedes/.m2/repository/org/clojure/clojurescript/1.10.758/clojurescript-1.10.758.jar" "/Users/victor.guedes/.m2/repository/args4j/args4j/2.0.26/args4j-2.0.26.jar" "/Users/victor.guedes/.m2/repository/org/clojure/tools.analyzer.jvm/1.2.2/tools.analyzer.jvm-1.2.2.jar" "/Users/victor.guedes/.m2/repository/org/clojure/test.check/0.10.0-alpha3/test.check-0.10.0-alpha3.jar" "/Users/victor.guedes/.m2/repository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar" "/Users/victor.guedes/.m2/repository/org/clojure/core.specs.alpha/0.2.56/core.specs.alpha-0.2.56.jar" "/Users/victor.guedes/.m2/repository/org/clojure/tools.analyzer/1.1.0/tools.analyzer-1.1.0.jar" "/Users/victor.guedes/.m2/repository/org/clojure/core.unify/0.5.7/core.unify-0.5.7.jar" "/Users/victor.guedes/.m2/repository/mvxcvi/arrangement/1.2.0/arrangement-1.2.0.jar" "/Users/victor.guedes/.m2/repository/com/google/javascript/closure-compiler-unshaded/v20200315/closure-compiler-unshaded-v20200315.jar" "/Users/victor.guedes/.m2/repository/com/google/code/gson/gson/2.7/gson-2.7.jar" "/Users/victor.guedes/.m2/repository/com/stuartsierra/dependency/1.0.0/dependency-1.0.0.jar" "/Users/victor.guedes/.m2/repository/potemkin/potemkin/0.4.4/potemkin-0.4.4.jar" "resources" "/Users/victor.guedes/.m2/repository/org/clojure/core.memoize/1.0.253/core.memoize-1.0.253.jar" "test" "/Users/victor.guedes/.m2/repository/marick/suchwow/6.0.2/suchwow-6.0.2.jar" "/Users/victor.guedes/.m2/repository/flare/flare/0.2.9/flare-0.2.9.jar" "/Users/victor.guedes/.m2/repository/org/clojure/core.cache/1.0.225/core.cache-1.0.225.jar"}
[INFO] [Startup] Using source-paths from classpath: ["/Users/victor.guedes/dev/personal/clojure-sample/src" "/Users/victor.guedes/dev/personal/clojure-sample/resources" "/Users/victor.guedes/dev/personal/clojure-sample/test"]
[ 15%] Copying kondo configs       [INFO] Copying kondo configs from classpath to project if any...
[WARN] Non-fatal error from clj-kondo: Configs copied:
- .clj-kondo/marick/midje
- .clj-kondo/prismatic/schema

[INFO] Copied kondo configs, took 158ms secs.
[ 20%] Analyzing project files [INFO] [Startup] Analyzing source paths for project root /Users/victor.guedes/dev/personal/clojure-sample
[INFO] [Startup] Project only paths analyzed by clj-depend, took 0ms
[ 98%] Analyzing project files No configs copied.
[INFO] :maintain-dep-graph 1ms
[INFO] Linting whole project for unused-public-var took 20ms

[INFO] [Startup] Project only paths analyzed by clj-kondo, took 220ms
[INFO] :maintain-dep-graph 0ms
[ 99%] Project analyzed Finding diagnostics...
src/clojure_sample/lsp/signature_help/foo.clj:4:5: warning: [unused-binding] unused binding a
src/clojure_sample/lsp/signature_help/foo.clj:5:5: warning: [unused-binding] unused binding a
src/clojure_sample/lsp/signature_help/foo.clj:5:9: warning: [unused-binding] unused binding more
src/clojure_sample/lsp/signature_help/foo.clj:11:7: info: [clojure-lsp/unused-public-var] Unused public var 'clojure-sample.lsp.signature-help.foo/some-func'
src/clojure_sample/lsp/signature_help/foo.clj:11:18: warning: [unused-binding] unused binding a
src/clojure_sample/lsp/signature_help/foo.clj:11:20: warning: [unused-binding] unused binding b
src/clojure_sample/lsp/signature_help/foo.clj:12:9: warning: [unused-binding] unused binding c
src/clojure_sample/lsp/signature_help/foo.clj:13:9: warning: [unused-binding] unused binding d
src/clojure_sample/lsp/macros.clj:9:9: info: [clojure-lsp/unused-public-var] Unused public var 'clojure-sample.lsp.macros/foo'
src/clojure_sample/lsp/macros.clj:14:7: info: [clojure-lsp/unused-public-var] Unused public var 'clojure-sample.lsp.macros/bar'
src/clojure_sample/lsp/call_hierarchy/b.clj:5:3: warning: [deprecated-var] #'clojure-sample.lsp.call-hierarchy.cef/c-fun-1 is deprecated
test/clojure_sample/core_test.clj:11:1: warning: [redefined-var] redefined var #'clojure-sample.core-test/a-test
src/clojure_sample/protocols.clj:3:7: info: [clojure-lsp/unused-public-var] Unused public var 'clojure-sample.protocols/start-sample'
src/clojure_sample/protocols.clj:4:7: warning: [unused-value] Unused value: start-sample
src/clojure_sample/protocols.clj:5:5: warning: [unused-binding] unused binding a
src/clojure_sample/protocols.clj:6:4: warning: [redundant-do] redundant do
src/clojure_sample/protocols.clj:9:14: info: [clojure-lsp/unused-public-var] Unused public var 'clojure-sample.protocols/Baz'
src/clojure_sample/protocols.clj:10:4: info: [clojure-lsp/unused-public-var] Unused public var 'clojure-sample.protocols/quux'
src/clojure_sample/protocols.clj:15:32: warning: [unused-binding] unused binding params
src/clojure_sample/protocols.clj:18:35: warning: [unused-binding] unused binding params
src/clojure_sample/lsp/code_actions/a.clj:1:5: error: [namespace-name-mismatch] Namespace name does not match file name: clojure-sample.code-actions.a
src/clojure_sample/component_example.clj:5:14: info: [clojure-lsp/unused-public-var] Unused public var 'clojure-sample.component-example/CircuitBreaker'
src/clojure_sample/component_example.clj:5:14: info: [clojure-lsp/unused-public-var] Unused public var 'clojure-sample.component-example/->CircuitBreaker'
src/clojure_sample/component_example.clj:14:7: info: [clojure-lsp/unused-public-var] Unused public var 'clojure-sample.component-example/new-component-test'
src/clojure_sample/lsp/completion/foo.clj:3:11: info: [clojure-lsp/unused-public-var] Unused public var 'clojure-sample.lsp.completion.foo/abcdefgh'
src/clojure_sample/lsp/completion/foo.clj:6:1: warning: [redefined-var] redefined var #'clojure-sample.lsp.completion.foo/abcdefgh
src/clojure_sample/lsp/completion/foo.clj:6:6: info: [clojure-lsp/unused-public-var] Unused public var 'clojure-sample.lsp.completion.foo/abcdefgh'
src/clojure_sample/lsp/completion/foo.clj:8:19: info: [clojure-lsp/unused-public-var] Unused public var 'clojure-sample.lsp.completion.foo/foob'
src/clojure_sample/lsp/completion/foo.clj:10:7: info: [clojure-lsp/unused-public-var] Unused public var 'clojure-sample.lsp.completion.foo/abcdefg'
src/clojure_sample/lsp/completion/foo.clj:21:7: info: [clojure-lsp/unused-public-var] Unused public var 'clojure-sample.lsp.completion.foo/bla'
src/clojure_sample/lsp/completion/foo.clj:21:14: warning: [unused-binding] unused binding e
src/clojure_sample/lsp/completion/foo.clj:21:16: warning: [unused-binding] unused binding f
src/clojure_sample/lsp/completion/foo.clj:22:13: warning: [unused-binding] unused binding b
src/clojure_sample/lsp/completion/foo.clj:22:17: warning: [unused-binding] unused binding c
src/clojure_sample/async.clj:2:55: warning: [unused-referred-var] #'clojure.core.async/>! is referred but never used
src/clojure_sample/async.clj:2:58: warning: [unused-referred-var] #'clojure.core.async/>!! is referred but never used
src/clojure_sample/async.clj:2:62: warning: [unused-referred-var] #'clojure.core.async/<! is referred but never used
src/clojure_sample/async.clj:2:68: warning: [unused-referred-var] #'clojure.core.async/chan is referred but never used
src/clojure_sample/async.clj:18:21: warning: [unresolved-namespace] Unresolved namespace clojure-sample.component-example. Are you missing a require?
src/clojure_sample/async.clj:22:7: info: [clojure-lsp/unused-public-var] Unused public var 'clojure-sample.async/normal-crawl'
src/clojure_sample/async.clj:28:7: info: [clojure-lsp/unused-public-var] Unused public var 'clojure-sample.async/async-crawl-1'
src/clojure_sample/async.clj:36:7: info: [clojure-lsp/unused-public-var] Unused public var 'clojure-sample.async/async-crawl-2'
src/clojure_sample/lsp/definition/a.clj:14:2: error: [unresolved-symbol] Unresolved symbol: b
src/clojure_sample/lsp/definition/a.clj:15:4: error: [unresolved-symbol] Unresolved symbol: a
src/clojure_sample/lsp/definition/a.clj:16:6: error: [unresolved-symbol] Unresolved symbol: foo
src/clojure_sample/lsp/definition/a.clj:17:6: error: [unresolved-symbol] Unresolved symbol: bar
src/clojure_sample/lsp/call_hierarchy/a.clj:4:7: info: [clojure-lsp/unused-public-var] Unused public var 'clojure-sample.lsp.call-hierarchy.a/a-fun'
src/clojure_sample/lsp/semantic_tokens.clj:8:3: warning: [unused-value] Unused value: foo
src/clojure_sample/lsp/semantic_tokens.clj:11:11: info: [clojure-lsp/unused-public-var] Unused public var 'clojure-sample.lsp.semantic-tokens/some-macro'

User details (please complete the following information):

  • OS: MacOS
  • Version: clojure-lsp 2023.10.30-16.25.41
    clj-kondo 2023.10.21-SNAPSHOT
@victorgsp victorgsp added API Related to API / CLI bug Something isn't working labels Mar 1, 2024
@victorgsp victorgsp changed the title False positive warning in PR False positive: Unused public var 'clojure-sample.component-example/CircuitBreaker' Mar 1, 2024
@ericdallo ericdallo added this to Low priority in clojure-lsp via automation Mar 3, 2024
@ericdallo ericdallo added the good first issue Good for newcomers label Mar 3, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
API Related to API / CLI bug Something isn't working good first issue Good for newcomers
Projects
clojure-lsp
Low priority
Development

No branches or pull requests

2 participants