Hello,

First of all, let me say it's been a real pleasure working in the Julia 
environment. 

I have been coming from a very different platform, and I noticed myself 
making mistakes of a certain pattern. So as a little side project, I wrote 
this little tool called Lint.jl that can check for some of them.

It is at https://github.com/tonyhffong/Lint.jl.git

I'm very new to Julia/git environment so it's a bit unpolished. But it is 
handy pointing out certain mechanical issues quickly.

What it can find out now:

   - simple deadcode detection (e.g if constant-true/constant-false)
   - simple premature-return deadcode detection
   - &, | being used in a Bool context. Suggest && and ||
   - Declared but unused variable
   - Using a undefined variable (not working well in macros)
   - Exporting non-existing symbols (not fully done yet, again due to 
   macros)
   - Exporting the same symbol more than once.
   - Name overlap between a variable and a lambda argument
   - Assignment in an if-predicate, as a potential confusion with “==”
   - Using globals in function without declaring them (This one isn't an 
   error, but I personally prefer explicit declaration of globals dependency 
   inside functions for readability.)
   - length() being used as Bool. It'd suggest using isempty()
   

I'd love to hear comments and feedback. Thank you for your consideration.

Tony

p.s. I have pointed this to base/sysimg.j. The result is illuminating (for 
me at least). The obviously substantial macro-related noise is a great way 
for me to learn what wizardry it been used for.

Reply via email to