diff --git a/lib/credo/check.ex b/lib/credo/check.ex index 3e09f81e5..101fb3e4e 100644 --- a/lib/credo/check.ex +++ b/lib/credo/check.ex @@ -402,7 +402,8 @@ defmodule Credo.Check do source_files |> Task.async_stream(fn source -> run_on_source_file(exec, source, params) end, max_concurrency: exec.max_concurrent_check_runs, - timeout: :infinity + timeout: :infinity, + ordered: false ) |> Stream.run() diff --git a/lib/credo/check/consistency/collector.ex b/lib/credo/check/consistency/collector.ex index 45c3ceef9..a4696d329 100644 --- a/lib/credo/check/consistency/collector.ex +++ b/lib/credo/check/consistency/collector.ex @@ -155,7 +155,7 @@ defmodule Credo.Check.Consistency.Collector do ) do frequencies_per_source_file = source_files - |> Task.async_stream(&{&1, collector.collect_matches(&1, params)}, timeout: :infinity) + |> Task.async_stream(&{&1, collector.collect_matches(&1, params)}, timeout: :infinity, ordered: false) |> Enum.map(fn {:ok, frequencies} -> frequencies end) frequencies = total_frequencies(frequencies_per_source_file) @@ -167,7 +167,7 @@ defmodule Credo.Check.Consistency.Collector do result = frequencies_per_source_file |> source_files_with_issues(most_frequent_match) - |> Task.async_stream(&issue_formatter.(most_frequent_match, &1, params), timeout: :infinity) + |> Task.async_stream(&issue_formatter.(most_frequent_match, &1, params), timeout: :infinity, ordered: false) |> Enum.flat_map(fn {:ok, issue} -> issue end) result diff --git a/lib/credo/check/design/duplicated_code.ex b/lib/credo/check/design/duplicated_code.ex index 8a29ce19e..1f5aeb399 100644 --- a/lib/credo/check/design/duplicated_code.ex +++ b/lib/credo/check/design/duplicated_code.ex @@ -56,9 +56,10 @@ defmodule Credo.Check.Design.DuplicatedCode do found_hashes |> Task.async_stream( &do_append_issues_via_issue_service(&1, source_files, nodes_threshold, params, exec), - timeout: :infinity + timeout: :infinity, + ordered: false ) - |> Enum.map(fn {:ok, result} -> result end) + |> Stream.run() end defp do_append_issues_via_issue_service( @@ -90,7 +91,7 @@ defmodule Credo.Check.Design.DuplicatedCode do chunked_nodes = source_files |> Enum.chunk_every(30) - |> Task.async_stream(&calculate_hashes_for_chunk(&1, mass_threshold), timeout: :infinity) + |> Task.async_stream(&calculate_hashes_for_chunk(&1, mass_threshold), timeout: :infinity, ordered: false) |> Enum.map(fn {:ok, hashes} -> hashes end) nodes = diff --git a/lib/credo/check/runner.ex b/lib/credo/check/runner.ex index 6c309dd27..e44388d0b 100644 --- a/lib/credo/check/runner.ex +++ b/lib/credo/check/runner.ex @@ -20,12 +20,7 @@ defmodule Credo.Check.Runner do |> fix_deprecated_notation_for_checks_without_params() check_tuples - |> Task.async_stream( - fn check_tuple -> - run_check(exec, check_tuple) - end, - timeout: :infinity - ) + |> Task.async_stream(&run_check(exec, &1), timeout: :infinity, ordered: false) |> Stream.run() :ok diff --git a/lib/credo/cli/output/summary.ex b/lib/credo/cli/output/summary.ex index a733ed711..a48c51f2d 100644 --- a/lib/credo/cli/output/summary.ex +++ b/lib/credo/cli/output/summary.ex @@ -167,7 +167,7 @@ defmodule Credo.CLI.Output.Summary do defp scope_count(source_files) when is_list(source_files) do source_files - |> Task.async_stream(&scope_count/1) + |> Task.async_stream(&scope_count/1, ordered: false) |> Enum.reduce(0, fn {:ok, n}, sum -> n + sum end) end