Skip to content

Commit

Permalink
Report number of skipped files
Browse files Browse the repository at this point in the history
  • Loading branch information
robertoaloi committed Mar 25, 2022
1 parent 3ca80e8 commit 2ed1070
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 28 deletions.
53 changes: 28 additions & 25 deletions apps/els_lsp/src/els_indexing.erl
Original file line number Diff line number Diff line change
Expand Up @@ -43,20 +43,21 @@ find_and_index_file(FileName) ->
{error, Error}
end.

-spec index_file(binary()) -> {ok, uri()}.
-spec index_file(binary()) -> {ok | uri()}.
index_file(Path) ->
GeneratedFilesTag = els_config_indexing:get_generated_files_tag(),
try_index_file(Path, 'deep', false, GeneratedFilesTag),
{ok, els_uri:uri(Path)}.

-spec index_if_not_generated(uri(), binary(), mode(), boolean(), string()) ->
ok.
ok | skipped.
index_if_not_generated(Uri, Text, Mode, false, _GeneratedFilesTag) ->
index(Uri, Text, Mode);
index_if_not_generated(Uri, Text, Mode, true, GeneratedFilesTag) ->
case is_generated_file(Text, GeneratedFilesTag) of
true ->
?LOG_DEBUG("Skip indexing for generated file ~p", [Uri]);
?LOG_DEBUG("Skip indexing for generated file ~p", [Uri]),
skipped;
false ->
ok = index(Uri, Text, Mode)
end.
Expand Down Expand Up @@ -159,10 +160,10 @@ start(Group, Entries) ->
, entries => Entries
, title => <<"Indexing ", Group/binary>>
, on_complete =>
fun({Succeeded, Failed}) ->
fun({Succeeded, Skipped, Failed}) ->
?LOG_INFO("Completed indexing for directory ~p"
"(succeeded: ~p, failed: ~p)",
[Succeeded, Failed])
"(succeeded: ~p, skipped: ~p, failed: ~p)",
[Succeeded, Skipped, Failed])
end
},
{ok, _Pid} = els_background_job:new(Config),
Expand All @@ -172,16 +173,17 @@ start(Group, Entries) ->
%% Internal functions
%%==============================================================================


%% @doc Try indexing a file.
-spec try_index_file(binary(), mode(), boolean(), string()) ->
ok | {error, any()}.
ok | skipped | {error, any()}.
try_index_file(FullName, Mode, SkipGeneratedFiles, GeneratedFilesTag) ->
Uri = els_uri:uri(FullName),
try
?LOG_DEBUG("Indexing file. [filename=~s, uri=~s]", [FullName, Uri]),
{ok, Text} = file:read_file(FullName),
ok = index_if_not_generated(Uri, Text, Mode,
SkipGeneratedFiles, GeneratedFilesTag)
index_if_not_generated(Uri, Text, Mode,
SkipGeneratedFiles, GeneratedFilesTag)
catch Type:Reason:St ->
?LOG_ERROR("Error indexing file "
"[filename=~s, uri=~s] "
Expand Down Expand Up @@ -210,40 +212,41 @@ register_reference(Uri, #{kind := Kind, id := Id, range := Range})
).

-spec index_dir(string(), mode()) ->
{non_neg_integer(), non_neg_integer()}.
{non_neg_integer(), non_neg_integer(), non_neg_integer()}.
index_dir(Dir, Mode) ->
SkipGeneratedFiles = els_config_indexing:get_skip_generated_files(),
GeneratedFilesTag = els_config_indexing:get_generated_files_tag(),
index_dir(Dir, Mode, SkipGeneratedFiles, GeneratedFilesTag).

-spec index_dir(string(), mode(), boolean(), string()) ->
{non_neg_integer(), non_neg_integer()}.
{non_neg_integer(), non_neg_integer(), non_neg_integer()}.
index_dir(Dir, Mode, SkipGeneratedFiles, GeneratedFilesTag) ->
?LOG_DEBUG("Indexing directory. [dir=~s] [mode=~s]", [Dir, Mode]),
F = fun(FileName, {Succeeded, Failed}) ->
F = fun(FileName, {Succeeded, Skipped, Failed}) ->
case try_index_file(els_utils:to_binary(FileName), Mode,
SkipGeneratedFiles, GeneratedFilesTag) of
ok -> {Succeeded + 1, Failed};
{error, _Error} -> {Succeeded, Failed + 1}
ok -> {Succeeded + 1, Skipped, Failed};
skipped -> {Succeeded, Skipped + 1, Failed};
{error, _Error} -> {Succeeded, Skipped, Failed + 1}
end
end,
Filter = fun(Path) ->
Ext = filename:extension(Path),
lists:member(Ext, [".erl", ".hrl", ".escript"])
end,

{Time, {Succeeded, Failed}} = timer:tc( els_utils
, fold_files
, [ F
, Filter
, Dir
, {0, 0}
]
),
{Time, {Succeeded, Skipped, Failed}} = timer:tc( els_utils
, fold_files
, [ F
, Filter
, Dir
, {0, 0, 0}
]
),
?LOG_DEBUG("Finished indexing directory. [dir=~s] [mode=~s] [time=~p] "
"[succeeded=~p] "
"[failed=~p]", [Dir, Mode, Time/1000/1000, Succeeded, Failed]),
{Succeeded, Failed}.
"[succeeded=~p] [skipped=~p] [failed=~p]",
[Dir, Mode, Time/1000/1000, Succeeded, Skipped, Failed]),
{Succeeded, Skipped, Failed}.

-spec entries_apps() -> [{string(), 'deep' | 'shallow'}].
entries_apps() ->
Expand Down
6 changes: 3 additions & 3 deletions apps/els_lsp/test/els_indexer_SUITE.erl
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ do_not_skip_generated_file_by_tag_by_default(Config) ->
DataDir = data_dir(Config),
GeneratedByTagUri = uri(DataDir, "generated_file_by_tag.erl"),
GeneratedByCustomTagUri = uri(DataDir, "generated_file_by_custom_tag.erl"),
?assertEqual({4, 0}, els_indexing:index_dir(DataDir, 'deep')),
?assertEqual({4, 0, 0}, els_indexing:index_dir(DataDir, 'deep')),
{ok, [#{ id := generated_file_by_tag
, kind := module
}
Expand All @@ -133,7 +133,7 @@ skip_generated_file_by_tag(Config) ->
DataDir = data_dir(Config),
GeneratedByTagUri = uri(DataDir, "generated_file_by_tag.erl"),
GeneratedByCustomTagUri = uri(DataDir, "generated_file_by_custom_tag.erl"),
?assertEqual({4, 0}, els_indexing:index_dir(DataDir, 'deep')),
?assertEqual({3, 1, 0}, els_indexing:index_dir(DataDir, 'deep')),
{ok, []} = els_dt_document:lookup(GeneratedByTagUri),
{ok, [#{ id := generated_file_by_custom_tag
, kind := module
Expand All @@ -150,7 +150,7 @@ skip_generated_file_by_custom_tag(Config) ->
DataDir = data_dir(Config),
GeneratedByTagUri = uri(DataDir, "generated_file_by_tag.erl"),
GeneratedByCustomTagUri = uri(DataDir, "generated_file_by_custom_tag.erl"),
?assertEqual({4, 0}, els_indexing:index_dir(DataDir, 'deep')),
?assertEqual({3, 1, 0}, els_indexing:index_dir(DataDir, 'deep')),
{ok, [#{ id := generated_file_by_tag
, kind := module
}
Expand Down

0 comments on commit 2ed1070

Please sign in to comment.