[erlang-questions] Attempting to use erl_lint on a .erl source file

Sparr sparr0@REDACTED
Fri Dec 18 03:52:30 CET 2015


Figured it out with help from #erlang on freenode. If hello.erl is missing
the trailing newline then the last form gets missed. I'm going to try to
figure out how to account for that.
On Dec 17, 2015 18:32, "Steve Vinoski" <vinoski@REDACTED> wrote:

>
>
> On Thu, Dec 17, 2015 at 1:45 PM, Sparr <sparr0@REDACTED> wrote:
>
>> I'm trying to use erl_lint() to build a simple Erlang syntax and style
>> checker. I've gotten far enough to load the file and parse it into Forms
>> and to get erl_lint to partially understand it, but then erl_lint complains
>> about undefined functions that are defined. What am I doing wrong?
>>
>> erlint.erl :
>>
>>     -module(erlint).
>>     -export([lint/1]).
>>
>>     % based on http://stackoverflow.com/a/28086396/13675
>>
>>     lint(File) ->
>>         {ok, B} = file:read_file(File),
>>         Forms = scan(erl_scan:tokens([],binary_to_list(B),1),[]),
>>         F = fun(X) -> {ok,Y} = erl_parse:parse_form(X), Y end,
>>         erl_lint:module([F(X) || X <- Forms],File).
>>
>>     scan({done,{ok,T,N},S},Res) ->
>>         scan(erl_scan:tokens([],S,N),[T|Res]);
>>     scan(_,Res) ->
>>         lists:reverse(Res).
>>
>> hello.erl :
>>
>>     -module(hello).
>>     -export([hello_world/0]).
>>
>>     hello_world() -> io:fwrite("hello, world\n").
>>
>> attempt to use :
>>
>>     1> c(erlint).
>>     {ok,erlint}
>>     2> erlint:lint("hello.erl").
>>     {error,[{"hello.erl",
>>              [{2,erl_lint,{undefined_function,{hello_world,0}}}]}],
>>            []}
>>
>
> I copied both erlint and hello directly out of your email, pasted them
> into source modules, compiled erlint, and ran erlint:lint("hello.erl"),
> same as you show. It returned {ok,[]}. I then changed the first double
> quote in hello.erl to a single quote to introduce an obvious syntax error,
> and retried. That gave me the same result you're seeing, which makes sense
> because the module is exporting a function that it never defines due to the
> syntax error. You might want to check your hello.erl source, or just try to
> compile it, to make sure its contents are correct.
>
> --steve
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20151217/68a2718b/attachment.htm>


More information about the erlang-questions mailing list