Fellow Julia enthusiasts, It seems a quarterly update to Lint.jl carries enough weight without being overwhelming, so here it is again.
Here are the new abuses that would be caught. Most of them I encountered them the hard way, so hopefully new users won't random-walk into them. - A first stab at linting staged function (or whatever name it will be finalized into). It is fairly basic, catching comparisons between incompatible types. - Since 0.4 will introduce a few coding style changes (Dict,Array constructions, Symbol() instead of (or maybe in addition to) symbol() and so on), some packages would have VERSION predicates. Lint tries to understand basic predicates (like VERSION < v"0.4-") and would give more version-appropriate messages - Catch dangerous variables (e.g. call = 1.0) that would almost certainly explode in your face - Catch [1 :end] and [end -1] - Catch new() with the number of arguments different from the number of fields in the type (INFO if too few, ERROR if too many) - Catch silly curly brackets mistake that generates hard-to-debug type inference error. e.g. d = Dict{ :Symbol, Any}() - Catch assigning a.b = something when a is proven to be of an immutable type e.g. Complex. - Remind Array{ T,n } is not Array( T, n ). (Subsequent usage will generate type related lint errors.) - Unused function arguments. - Other improvements: - More accurate code locations from the lint messages. - @doc aware Thanks to Ariel, Sam, Tim, Tomas and others who pointed out issues. On IDE integration: some users find the package a bit "bulky" (well it does check a lot of things) so Julia+Lint takes a while to load, reducing the code-lint-fix loop productivity. It is certainly an issue. I'm up for suggestions. Again please continue with your support by reporting gaps, false positives, and even better, PR. Tony