On Friday, February 15, 2013 6:19:00 AM UTC+2, ronen wrote: > > > 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) >
If someone is interested in this https://github.com/jonase/eastwood might be a good starting point. > > 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> 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> 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> 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> >>> wrote: >>> >>> >>> >>> On 12 February 2013 12:28, AtKaaZ <atk...@gmail.com> 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> 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> >>> >>> >> wrote: >>> >>> >>> >>> >>> >>> What is a hygienic AST? >>> >>> >>> >>> >>> >>> Thanks >>> >>> >>> k >>> >>> >>> >>> >>> >>> >>> >>> >>> On Sun, Feb 10, 2013 at 10:45 PM, Ambrose Bonnaire-Sergeant >>> >>> >>> <abonnair...@gmail.com> 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 >>> >>> >>> > 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 >>> >>> >>> > 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. >>> >>> >>> > 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 >>> >>> >>> 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 >>> >>> >>> 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. >>> >>> >>> 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 >>> >>> >> 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 >>> >>> >> 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. >>> >>> >> 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 >>> >>> > 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 >>> >>> > 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. >>> >>> > For more options, visit https://groups.google.com/groups/opt_out. >>> >>> > >>> >>> > >>> >>> >>> >>> >>> >>> >>> >>> -- >>> >>> Michael Wood <esio...@gmail.com> >>> >>> >>> >>> -- >>> >>> -- >>> >>> 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 >>> >>> 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 >>> >>> 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. >>> >>> 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 >>> >> 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 >>> >> 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. >>> >> 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 >>> > 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 >>> > 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. >>> > For more options, visit https://groups.google.com/groups/opt_out. >>> > >>> > >>> >>> >>> >>> -- >>> Michael Wood <esio...@gmail.com> >>> >>> -- >>> -- >>> 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 >>> 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 >>> 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. >>> 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.