I don't know how feasible it is, but a (perhaps optional) inclusion of the 
functionality in https://github.com/astrieanna/TypeCheck.jl would be great!


Am 09.06.2014 um 00:46 schrieb Tony Fong <[email protected]>:

> Thanks. PR created.
> 
> I have added a few more low hanging fruits to the Lint module:
> * correct line location
> * detect duplicate keys in constructing Dict
> * detect recycling out-of-scope local variable name inside a block.
> * an heuristic attempt to detect very similarly structured consecutive 
> expressions and alert if the last one looks a bit more different from the 
> rest.
> * add interface for module-specific lint
> 
> On Saturday, June 7, 2014 11:09:32 PM UTC+7, John Myles White wrote:
> Yeah, there’s some GitHub specific machinery you’ll have to learn: 
> https://help.github.com/articles/creating-a-pull-request
> 
>  — John
> 
> On Jun 7, 2014, at 6:14 AM, Tony Fong <[email protected]> wrote:
> 
>> Sorry, I just tried to go through the docs, now I'm stuck at "creating a 
>> pull request". I have no idea what I'm doing...
>> 
>> On Saturday, June 7, 2014 5:48:19 PM UTC+7, Tim Holy wrote:
>> Actually, I was right the first time. Needs to be registered before 
>> `Pkg.add("Lint")` will work. 
>> 
>> --Tim 
>> 
>> On Saturday, June 07, 2014 05:34:13 AM Tim Holy wrote: 
>> > Ah, it is a package already. Oops. 
>> > 
>> > --Tim 
>> > 
>> > On Friday, June 06, 2014 02:22:22 PM Tony Fong wrote: 
>> > > 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