It looks as if https://github.com/jonase/kibit/ is a lint/check style tool that only reads the source code, this limits its utilization:
"Kibit reads<http://clojure.github.com/clojure/clojure.core-api.html#clojure.core/read> source code without any macro expansion or evaluation. A macro can therefor easily invalidate a rule. Also, kibit will not know if the symbol + in the form (+ x 1) actually refers to a local or to a function in a namespace other than clojure.core. Expect some false positives." So there is a place for an AST based one (more similar to findbugs I guess) On Wednesday, February 13, 2013 9:21:52 AM UTC+2, Ambrose Bonnaire-Sergeant wrote: > > IMO that's the job of a "linter"-style tool, which can be written easily > with `analyze`. > > On Tue, Feb 12, 2013 at 11:58 PM, Michael Wood <esio...@gmail.com<javascript:> > > wrote: > >> It might be useful, though, to be able to enable warnings for shadowed >> variables. >> >> On 12 February 2013 17:38, Timothy Baldridge >> <tbald...@gmail.com<javascript:>> >> wrote: >> > This sort of pattern is used quite a lot in clojure (even in core): >> > >> > (let [data (if (string? data) (read-string data) data) >> > data (if (string? (first data)) (first data) (next data)) >> > data (if (string? (first data)) (first data) (next data))] >> > data) >> > >> > Throwing exceptions on overridden variable names would not only break >> > Clojure code, but also is very "non-lispy". >> > >> > Timothy >> > >> > >> > >> > On Tue, Feb 12, 2013 at 6:31 AM, AtKaaZ <atk...@gmail.com <javascript:>> >> wrote: >> >> >> >> it makes sense to not throw now that I think about it, when using "_" >> >> instead of "a" >> >> I'm also thinking of cases like: >> >> => (let [a 1] >> >> (let [b 2 a 3] >> >> (println a b))) >> >> 3 2 >> >> nil >> >> >> >> is there something that would let me know I'm overwriting "a" ? I >> figure >> >> if something like this would slip by would be tough to track down >> >> >> >> >> >> On Tue, Feb 12, 2013 at 1:46 PM, Michael Wood >> >> <esio...@gmail.com<javascript:>> >> wrote: >> >>> >> >>> On 12 February 2013 12:28, AtKaaZ <atk...@gmail.com <javascript:>> >> wrote: >> >>> > what would this do: >> >>> > >> >>> > (let [a 1, a 2] a) >> >>> > becomes: >> >>> > (let [a 1, a123 2] a) >> >>> > or >> >>> > (let [a 1, a123 2] a123) >> >>> > or >> >>> > exception[I prefer] >> >>> >> >>> It would be the second option, i.e.: >> >>> >> >>> (let [a 1, a123 2] a123) >> >>> >> >>> The original code is valid, so it would not throw an exception. >> >>> >> >>> > On Tue, Feb 12, 2013 at 7:10 AM, Ambrose Bonnaire-Sergeant >> >>> > <abonnair...@gmail.com <javascript:>> wrote: >> >>> >> >> >>> >> Processing a hygienic AST relieves the burden of worrying about >> >>> >> shadowing >> >>> >> of locals. >> >>> >> >> >>> >> Wherever a binding would normally be shadowed, it is instead >> renamed >> >>> >> to a >> >>> >> local binding currently not in scope. >> >>> >> >> >>> >> eg. (let [a 1, a a] a) >> >>> >> >> >>> >> becomes >> >>> >> >> >>> >> (let [a 1, a123 a] a123) >> >>> >> >> >>> >> It can be useful for those processing Clojure's analysis results. >> >>> >> >> >>> >> Thanks, >> >>> >> Ambrose >> >>> >> >> >>> >> >> >>> >> On Tue, Feb 12, 2013 at 1:54 AM, kovas boguta >> >>> >> <kovas....@gmail.com<javascript:> >> > >> >>> >> wrote: >> >>> >>> >> >>> >>> What is a hygienic AST? >> >>> >>> >> >>> >>> Thanks >> >>> >>> k >> >>> >>> >> >>> >>> >> >>> >>> On Sun, Feb 10, 2013 at 10:45 PM, Ambrose Bonnaire-Sergeant >> >>> >>> <abonnair...@gmail.com <javascript:>> wrote: >> >>> >>> > Hi everyone, >> >>> >>> > >> >>> >>> > Happy to release analyze 0.3.0 with new hygienic code >> >>> >>> > transformation >> >>> >>> > capabilities. >> >>> >>> > >> >>> >>> > [analyze "0.3.0"] >> >>> >>> > >> >>> >>> > In a line: >> >>> >>> > >> >>> >>> > analyze.hygienic=> (-> (ast (let [a 1 a a b a a a] a)) ast-hy >> >>> >>> > emit-hy) >> >>> >>> > ((fn* ([] (let* [a 1 a2921 a b a2921 a2922 a2921] a2922)))) >> >>> >>> > >> >>> >>> > Hygienic AST's have enabled large performance boosts in >> core.typed. >> >>> >>> > I'm >> >>> >>> > excited to see how it could >> >>> >>> > be as useful to others. >> >>> >>> > >> >>> >>> > Note: "hygienic" AST's (those transformed with >> >>> >>> > `analyze.hygienic/ast-hy` can >> >>> >>> > be printed normally with `analyze.emit-form/emit-form`, and >> >>> >>> > hygienically >> >>> >>> > with `analyze.hygienic/emit-hy`. >> >>> >>> > >> >>> >>> > https://github.com/frenchy64/analyze >> >>> >>> > >> >>> >>> > Thanks, >> >>> >>> > Ambrose >> >>> >>> > >> >>> >>> > -- >> >>> >>> > -- >> >>> >>> > You received this message because you are subscribed to the >> Google >> >>> >>> > Groups "Clojure" group. >> >>> >>> > To post to this group, send email to >> >>> >>> > clo...@googlegroups.com<javascript:> >> >>> >>> > Note that posts from new members are moderated - please be >> patient >> >>> >>> > with >> >>> >>> > your >> >>> >>> > first post. >> >>> >>> > To unsubscribe from this group, send email to >> >>> >>> > clojure+u...@googlegroups.com <javascript:> >> >>> >>> > For more options, visit this group at >> >>> >>> > http://groups.google.com/group/clojure?hl=en >> >>> >>> > --- >> >>> >>> > You received this message because you are subscribed to the >> Google >> >>> >>> > Groups >> >>> >>> > "Clojure" group. >> >>> >>> > To unsubscribe from this group and stop receiving emails from >> it, >> >>> >>> > send >> >>> >>> > an >> >>> >>> > email to clojure+u...@googlegroups.com <javascript:>. >> >>> >>> > For more options, visit >> https://groups.google.com/groups/opt_out. >> >>> >>> > >> >>> >>> > >> >>> >>> >> >>> >>> -- >> >>> >>> -- >> >>> >>> You received this message because you are subscribed to the Google >> >>> >>> Groups "Clojure" group. >> >>> >>> To post to this group, send email to >> >>> >>> clo...@googlegroups.com<javascript:> >> >>> >>> Note that posts from new members are moderated - please be patient >> >>> >>> with >> >>> >>> your first post. >> >>> >>> To unsubscribe from this group, send email to >> >>> >>> clojure+u...@googlegroups.com <javascript:> >> >>> >>> For more options, visit this group at >> >>> >>> http://groups.google.com/group/clojure?hl=en >> >>> >>> --- >> >>> >>> You received this message because you are subscribed to the Google >> >>> >>> Groups >> >>> >>> "Clojure" group. >> >>> >>> To unsubscribe from this group and stop receiving emails from it, >> >>> >>> send an >> >>> >>> email to clojure+u...@googlegroups.com <javascript:>. >> >>> >>> For more options, visit https://groups.google.com/groups/opt_out. >> >>> >>> >> >>> >>> >> >>> >> >> >>> >> -- >> >>> >> -- >> >>> >> You received this message because you are subscribed to the Google >> >>> >> Groups "Clojure" group. >> >>> >> To post to this group, send email to >> >>> >> clo...@googlegroups.com<javascript:> >> >>> >> Note that posts from new members are moderated - please be patient >> >>> >> with >> >>> >> your first post. >> >>> >> To unsubscribe from this group, send email to >> >>> >> clojure+u...@googlegroups.com <javascript:> >> >>> >> For more options, visit this group at >> >>> >> http://groups.google.com/group/clojure?hl=en >> >>> >> --- >> >>> >> You received this message because you are subscribed to the Google >> >>> >> Groups >> >>> >> "Clojure" group. >> >>> >> To unsubscribe from this group and stop receiving emails from it, >> send >> >>> >> an >> >>> >> email to clojure+u...@googlegroups.com <javascript:>. >> >>> >> For more options, visit https://groups.google.com/groups/opt_out. >> >>> >> >> >>> >> >> >>> > >> >>> > >> >>> > >> >>> > >> >>> > -- >> >>> > Please correct me if I'm wrong or incomplete, >> >>> > even if you think I'll subconsciously hate it. >> >>> > >> >>> > -- >> >>> > -- >> >>> > You received this message because you are subscribed to the Google >> >>> > Groups "Clojure" group. >> >>> > To post to this group, send email to >> >>> > clo...@googlegroups.com<javascript:> >> >>> > Note that posts from new members are moderated - please be patient >> with >> >>> > your >> >>> > first post. >> >>> > To unsubscribe from this group, send email to >> >>> > clojure+u...@googlegroups.com <javascript:> >> >>> > For more options, visit this group at >> >>> > http://groups.google.com/group/clojure?hl=en >> >>> > --- >> >>> > You received this message because you are subscribed to the Google >> >>> > Groups >> >>> > "Clojure" group. >> >>> > To unsubscribe from this group and stop receiving emails from it, >> send >> >>> > an >> >>> > email to clojure+u...@googlegroups.com <javascript:>. >> >>> > For more options, visit https://groups.google.com/groups/opt_out. >> >>> > >> >>> > >> >>> >> >>> >> >>> >> >>> -- >> >>> Michael Wood <esio...@gmail.com <javascript:>> >> >>> >> >>> -- >> >>> -- >> >>> You received this message because you are subscribed to the Google >> >>> Groups "Clojure" group. >> >>> To post to this group, send email to clo...@googlegroups.com<javascript:> >> >>> Note that posts from new members are moderated - please be patient >> with >> >>> your first post. >> >>> To unsubscribe from this group, send email to >> >>> clojure+u...@googlegroups.com <javascript:> >> >>> For more options, visit this group at >> >>> http://groups.google.com/group/clojure?hl=en >> >>> --- >> >>> You received this message because you are subscribed to the Google >> Groups >> >>> "Clojure" group. >> >>> To unsubscribe from this group and stop receiving emails from it, >> send an >> >>> email to clojure+u...@googlegroups.com <javascript:>. >> >>> For more options, visit https://groups.google.com/groups/opt_out. >> >>> >> >>> >> >> >> >> >> >> >> >> -- >> >> Please correct me if I'm wrong or incomplete, >> >> even if you think I'll subconsciously hate it. >> >> >> >> -- >> >> -- >> >> You received this message because you are subscribed to the Google >> >> Groups "Clojure" group. >> >> To post to this group, send email to clo...@googlegroups.com<javascript:> >> >> Note that posts from new members are moderated - please be patient with >> >> your first post. >> >> To unsubscribe from this group, send email to >> >> clojure+u...@googlegroups.com <javascript:> >> >> For more options, visit this group at >> >> http://groups.google.com/group/clojure?hl=en >> >> --- >> >> You received this message because you are subscribed to the Google >> Groups >> >> "Clojure" group. >> >> To unsubscribe from this group and stop receiving emails from it, send >> an >> >> email to clojure+u...@googlegroups.com <javascript:>. >> >> For more options, visit https://groups.google.com/groups/opt_out. >> >> >> >> >> > >> > >> > >> > >> > -- >> > “One of the main causes of the fall of the Roman Empire was that–lacking >> > zero–they had no way to indicate successful termination of their C >> > programs.” >> > (Robert Firth) >> > >> > -- >> > -- >> > You received this message because you are subscribed to the Google >> > Groups "Clojure" group. >> > To post to this group, send email to clo...@googlegroups.com<javascript:> >> > Note that posts from new members are moderated - please be patient with >> your >> > first post. >> > To unsubscribe from this group, send email to >> > clojure+u...@googlegroups.com <javascript:> >> > For more options, visit this group at >> > http://groups.google.com/group/clojure?hl=en >> > --- >> > You received this message because you are subscribed to the Google >> Groups >> > "Clojure" group. >> > To unsubscribe from this group and stop receiving emails from it, send >> an >> > email to clojure+u...@googlegroups.com <javascript:>. >> > For more options, visit https://groups.google.com/groups/opt_out. >> > >> > >> >> >> >> -- >> Michael Wood <esio...@gmail.com <javascript:>> >> >> -- >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clo...@googlegroups.com<javascript:> >> Note that posts from new members are moderated - please be patient with >> your first post. >> To unsubscribe from this group, send email to >> clojure+u...@googlegroups.com <javascript:> >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en >> --- >> You received this message because you are subscribed to the Google Groups >> "Clojure" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to clojure+u...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> >> > -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.