Skip to content

Commit

Permalink
chore: update code for more recent Credo defaults
Browse files Browse the repository at this point in the history
In particular, `AliasOrder` should have been the default before, but for
whatever reason in #167 it was set to `false`.
  • Loading branch information
paulswartz committed Jan 3, 2024
1 parent 840be9a commit f5d0fa4
Show file tree
Hide file tree
Showing 23 changed files with 169 additions and 144 deletions.
253 changes: 140 additions & 113 deletions .credo.exs
Original file line number Diff line number Diff line change
Expand Up @@ -64,126 +64,153 @@
#
# {Credo.Check.Design.DuplicatedCode, false}
#
checks: [
#
## Consistency Checks
#
{Credo.Check.Consistency.ExceptionNames, []},
{Credo.Check.Consistency.LineEndings, []},
{Credo.Check.Consistency.ParameterPatternMatching, []},
{Credo.Check.Consistency.SpaceAroundOperators, []},
{Credo.Check.Consistency.SpaceInParentheses, []},
{Credo.Check.Consistency.TabsOrSpaces, []},
checks: %{
enabled: [
#
## Consistency Checks
#
{Credo.Check.Consistency.ExceptionNames, []},
{Credo.Check.Consistency.LineEndings, []},
{Credo.Check.Consistency.ParameterPatternMatching, []},
{Credo.Check.Consistency.SpaceAroundOperators, []},
{Credo.Check.Consistency.SpaceInParentheses, []},
{Credo.Check.Consistency.TabsOrSpaces, []},

#
## Design Checks
#
# You can customize the priority of any check
# Priority values are: `low, normal, high, higher`
#
{Credo.Check.Design.AliasUsage,
[priority: :low, if_nested_deeper_than: 2, if_called_more_often_than: 2]},
# You can also customize the exit_status of each check.
# If you don't want TODO comments to cause `mix credo` to fail, just
# set this value to 0 (zero).
#
{Credo.Check.Design.TagTODO, [exit_status: 2]},
{Credo.Check.Design.TagFIXME, []},
#
## Design Checks
#
# You can customize the priority of any check
# Priority values are: `low, normal, high, higher`
#
{Credo.Check.Design.AliasUsage,
[priority: :low, if_nested_deeper_than: 2, if_called_more_often_than: 0]},
{Credo.Check.Design.TagFIXME, []},
# You can also customize the exit_status of each check.
# If you don't want TODO comments to cause `mix credo` to fail, just
# set this value to 0 (zero).
#
{Credo.Check.Design.TagTODO, [exit_status: 2]},

#
## Readability Checks
#
{Credo.Check.Readability.AliasOrder, false},
{Credo.Check.Readability.FunctionNames, []},
{Credo.Check.Readability.LargeNumbers, []},
{Credo.Check.Readability.MaxLineLength, [priority: :low, max_length: 100]},
{Credo.Check.Readability.ModuleAttributeNames, []},
{Credo.Check.Readability.ModuleDoc, []},
{Credo.Check.Readability.ModuleNames, []},
{Credo.Check.Readability.ParenthesesInCondition, []},
{Credo.Check.Readability.ParenthesesOnZeroArityDefs, []},
{Credo.Check.Readability.PredicateFunctionNames, []},
{Credo.Check.Readability.PreferImplicitTry, []},
{Credo.Check.Readability.RedundantBlankLines, []},
{Credo.Check.Readability.Semicolons, []},
{Credo.Check.Readability.SpaceAfterCommas, []},
{Credo.Check.Readability.StringSigils, []},
{Credo.Check.Readability.TrailingBlankLine, []},
{Credo.Check.Readability.TrailingWhiteSpace, []},
{Credo.Check.Readability.UnnecessaryAliasExpansion, []},
{Credo.Check.Readability.VariableNames, []},
#
## Readability Checks
#
{Credo.Check.Readability.AliasOrder, []},
{Credo.Check.Readability.FunctionNames, []},
{Credo.Check.Readability.LargeNumbers, []},
{Credo.Check.Readability.MaxLineLength, [priority: :low, max_length: 120]},
{Credo.Check.Readability.ModuleAttributeNames, []},
{Credo.Check.Readability.ModuleDoc, []},
{Credo.Check.Readability.ModuleNames, []},
{Credo.Check.Readability.ParenthesesInCondition, []},
{Credo.Check.Readability.ParenthesesOnZeroArityDefs, []},
{Credo.Check.Readability.PipeIntoAnonymousFunctions, []},
{Credo.Check.Readability.PredicateFunctionNames, []},
{Credo.Check.Readability.PreferImplicitTry, []},
{Credo.Check.Readability.RedundantBlankLines, []},
{Credo.Check.Readability.Semicolons, []},
{Credo.Check.Readability.SpaceAfterCommas, []},
{Credo.Check.Readability.StringSigils, []},
{Credo.Check.Readability.TrailingBlankLine, []},
{Credo.Check.Readability.TrailingWhiteSpace, []},
{Credo.Check.Readability.UnnecessaryAliasExpansion, []},
{Credo.Check.Readability.VariableNames, []},
{Credo.Check.Readability.WithSingleClause, []},

#
## Refactoring Opportunities
#
{Credo.Check.Refactor.CondStatements, []},
{Credo.Check.Refactor.CyclomaticComplexity, []},
{Credo.Check.Refactor.FunctionArity, []},
{Credo.Check.Refactor.LongQuoteBlocks, []},
# {Credo.Check.Refactor.MapInto, []},
{Credo.Check.Refactor.MatchInCondition, []},
{Credo.Check.Refactor.NegatedConditionsInUnless, []},
{Credo.Check.Refactor.NegatedConditionsWithElse, []},
{Credo.Check.Refactor.Nesting, []},
{Credo.Check.Refactor.UnlessWithElse, []},
{Credo.Check.Refactor.WithClauses, []},
#
## Refactoring Opportunities
#
{Credo.Check.Refactor.Apply, []},
{Credo.Check.Refactor.CondStatements, []},
{Credo.Check.Refactor.CyclomaticComplexity, []},
{Credo.Check.Refactor.FilterCount, []},
{Credo.Check.Refactor.FilterFilter, []},
{Credo.Check.Refactor.FunctionArity, []},
{Credo.Check.Refactor.LongQuoteBlocks, []},
{Credo.Check.Refactor.MapJoin, []},
{Credo.Check.Refactor.MatchInCondition, []},
{Credo.Check.Refactor.NegatedConditionsInUnless, []},
{Credo.Check.Refactor.NegatedConditionsWithElse, []},
{Credo.Check.Refactor.Nesting, []},
{Credo.Check.Refactor.RedundantWithClauseResult, []},
{Credo.Check.Refactor.RejectReject, []},
{Credo.Check.Refactor.UnlessWithElse, []},
{Credo.Check.Refactor.WithClauses, []},

#
## Warnings
#
{Credo.Check.Warning.ApplicationConfigInModuleAttribute, []},
{Credo.Check.Warning.BoolOperationOnSameValues, []},
{Credo.Check.Warning.ExpensiveEmptyEnumCheck, []},
{Credo.Check.Warning.IExPry, []},
{Credo.Check.Warning.IoInspect, []},
# {Credo.Check.Warning.LazyLogging, []},
{Credo.Check.Warning.MixEnv, false},
{Credo.Check.Warning.OperationOnSameValues, []},
{Credo.Check.Warning.OperationWithConstantResult, []},
{Credo.Check.Warning.RaiseInsideRescue, []},
{Credo.Check.Warning.UnusedEnumOperation, []},
{Credo.Check.Warning.UnusedFileOperation, []},
{Credo.Check.Warning.UnusedKeywordOperation, []},
{Credo.Check.Warning.UnusedListOperation, []},
{Credo.Check.Warning.UnusedPathOperation, []},
{Credo.Check.Warning.UnusedRegexOperation, []},
{Credo.Check.Warning.UnusedStringOperation, []},
{Credo.Check.Warning.UnusedTupleOperation, []},
{Credo.Check.Warning.UnsafeExec, []},
#
## Warnings
#
{Credo.Check.Warning.ApplicationConfigInModuleAttribute, []},
{Credo.Check.Warning.BoolOperationOnSameValues, []},
{Credo.Check.Warning.Dbg, []},
{Credo.Check.Warning.ExpensiveEmptyEnumCheck, []},
{Credo.Check.Warning.IExPry, []},
{Credo.Check.Warning.IoInspect, []},
{Credo.Check.Warning.MissedMetadataKeyInLoggerConfig, []},
{Credo.Check.Warning.OperationOnSameValues, []},
{Credo.Check.Warning.OperationWithConstantResult, []},
{Credo.Check.Warning.RaiseInsideRescue, []},
{Credo.Check.Warning.SpecWithStruct, []},
{Credo.Check.Warning.UnsafeExec, []},
{Credo.Check.Warning.UnusedEnumOperation, []},
{Credo.Check.Warning.UnusedFileOperation, []},
{Credo.Check.Warning.UnusedKeywordOperation, []},
{Credo.Check.Warning.UnusedListOperation, []},
{Credo.Check.Warning.UnusedPathOperation, []},
{Credo.Check.Warning.UnusedRegexOperation, []},
{Credo.Check.Warning.UnusedStringOperation, []},
{Credo.Check.Warning.UnusedTupleOperation, []},
{Credo.Check.Warning.WrongTestFileExtension, []}
],
disabled: [
#
# Checks scheduled for next check update (opt-in for now, just replace `false` with `[]`)

#
# Checks scheduled for next check update (opt-in for now, just replace `false` with `[]`)
#
# Controversial and experimental checks (opt-in, just move the check to `:enabled`
# and be sure to use `mix credo --strict` to see low priority checks)
#
{Credo.Check.Consistency.MultiAliasImportRequireUse, []},
{Credo.Check.Consistency.UnusedVariableNames, []},
{Credo.Check.Design.DuplicatedCode, []},
{Credo.Check.Design.SkipTestWithoutComment, []},
{Credo.Check.Readability.AliasAs, []},
{Credo.Check.Readability.BlockPipe, []},
{Credo.Check.Readability.ImplTrue, []},
{Credo.Check.Readability.MultiAlias, []},
{Credo.Check.Readability.NestedFunctionCalls, []},
{Credo.Check.Readability.OneArityFunctionInPipe, []},
{Credo.Check.Readability.OnePipePerLine, []},
{Credo.Check.Readability.SeparateAliasRequire, []},
{Credo.Check.Readability.SingleFunctionToBlockPipe, []},
{Credo.Check.Readability.SinglePipe, []},
{Credo.Check.Readability.Specs, []},
{Credo.Check.Readability.StrictModuleLayout, []},
{Credo.Check.Readability.WithCustomTaggedTuple, []},
{Credo.Check.Refactor.ABCSize, []},
{Credo.Check.Refactor.AppendSingleItem, []},
{Credo.Check.Refactor.DoubleBooleanNegation, []},
{Credo.Check.Refactor.FilterReject, []},
{Credo.Check.Refactor.IoPuts, []},
{Credo.Check.Refactor.MapMap, []},
{Credo.Check.Refactor.ModuleDependencies, []},
{Credo.Check.Refactor.NegatedIsNil, []},
{Credo.Check.Refactor.PassAsyncInTestCases, []},
{Credo.Check.Refactor.PipeChainStart, []},
{Credo.Check.Refactor.RejectFilter, []},
{Credo.Check.Refactor.VariableRebinding, []},
{Credo.Check.Warning.LazyLogging, []},
{Credo.Check.Warning.LeakyEnvironment, []},
{Credo.Check.Warning.MapGetUnsafePass, []},
{Credo.Check.Warning.MixEnv, []},
{Credo.Check.Warning.UnsafeToAtom, []}

#
# Controversial and experimental checks (opt-in, just replace `false` with `[]`)
#
{Credo.Check.Consistency.MultiAliasImportRequireUse, false},
{Credo.Check.Consistency.UnusedVariableNames, false},
{Credo.Check.Design.DuplicatedCode, false},
{Credo.Check.Readability.AliasAs, false},
{Credo.Check.Readability.BlockPipe, false},
{Credo.Check.Readability.ImplTrue, false},
{Credo.Check.Readability.MultiAlias, false},
{Credo.Check.Readability.SeparateAliasRequire, false},
{Credo.Check.Readability.SinglePipe, false},
{Credo.Check.Readability.Specs, false},
{Credo.Check.Readability.StrictModuleLayout, false},
{Credo.Check.Readability.WithCustomTaggedTuple, false},
{Credo.Check.Refactor.ABCSize, false},
{Credo.Check.Refactor.AppendSingleItem, false},
{Credo.Check.Refactor.DoubleBooleanNegation, false},
{Credo.Check.Refactor.ModuleDependencies, false},
{Credo.Check.Refactor.NegatedIsNil, false},
{Credo.Check.Refactor.PipeChainStart, false},
{Credo.Check.Refactor.VariableRebinding, false},
{Credo.Check.Warning.LeakyEnvironment, false},
{Credo.Check.Warning.MapGetUnsafePass, false},
{Credo.Check.Warning.UnsafeToAtom, false}
# {Credo.Check.Refactor.MapInto, []},

#
# Custom checks can be created using `mix credo.gen.check`.
#
]
#
# Custom checks can be created using `mix credo.gen.check`.
#
]
}
}
]
}
6 changes: 3 additions & 3 deletions lib/concentrate.ex
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,8 @@ defmodule Concentrate do
routes: {&is_list/1, & &1},
excluded_routes: {&is_list/1, & &1},
fallback_url: {&is_binary/1, & &1},
username: {&is_possible_env_var/1, &process_possible_env_var/1},
password: {&is_possible_env_var/1, &process_possible_env_var/1},
username: {&possible_env_var?/1, &process_possible_env_var/1},
password: {&possible_env_var?/1, &process_possible_env_var/1},
topics: {&is_list/1, & &1},
max_future_time: {&is_integer/1, & &1},
fetch_after: {&is_integer/1, & &1},
Expand Down Expand Up @@ -187,7 +187,7 @@ defmodule Concentrate do
Keyword.new(acc)
end

defp is_possible_env_var(value) do
defp possible_env_var?(value) do
case value do
%{"system" => _} -> true
<<_::binary>> -> true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@ defmodule Concentrate.GroupFilter.RemoveUncertainStopTimeUpdates do
If no uncertainty values are configured, enabling this filter has no effect.
"""
alias Concentrate.TripDescriptor
alias Concentrate.StopTimeUpdate
alias Concentrate.{StopTimeUpdate, TripDescriptor}

@behaviour Concentrate.GroupFilter

Expand Down
2 changes: 1 addition & 1 deletion test/concentrate/encoder/gtfs_realtime_helpers_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ defmodule Concentrate.Encoder.GTFSRealtimeHelpersTest do
@moduledoc false
use ExUnit.Case, async: true
import Concentrate.Encoder.GTFSRealtimeHelpers
alias Concentrate.{TripDescriptor, VehiclePosition, StopTimeUpdate}
alias Concentrate.{StopTimeUpdate, TripDescriptor, VehiclePosition}

doctest Concentrate.Encoder.GTFSRealtimeHelpers

Expand Down
2 changes: 1 addition & 1 deletion test/concentrate/encoder/trip_updates/json_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ defmodule Concentrate.Encoder.TripUpdates.JSONTest do
use ExUnit.Case, async: true
import Concentrate.Encoder.TripUpdates.JSON
import Concentrate.Encoder.GTFSRealtimeHelpers, only: [group: 1]
alias Concentrate.{TripDescriptor, StopTimeUpdate}
alias Concentrate.{StopTimeUpdate, TripDescriptor}

describe "encode_groups/1" do
test "same output as EncoderTripUpdates.encode_groups/1 but in JSON" do
Expand Down
2 changes: 1 addition & 1 deletion test/concentrate/encoder/trip_updates_enhanced_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ defmodule Concentrate.Encoder.TripUpdatesEnhancedTest do
import Concentrate.Encoder.TripUpdatesEnhanced
import Concentrate.Encoder.GTFSRealtimeHelpers, only: [group: 1]
alias Concentrate.Parser.GTFSRealtimeEnhanced
alias Concentrate.{TripDescriptor, VehiclePosition, StopTimeUpdate}
alias Concentrate.{StopTimeUpdate, TripDescriptor, VehiclePosition}

describe "encode_groups/1" do
test "decoding and re-encoding TripUpdates_enhanced.json is a no-op" do
Expand Down
2 changes: 1 addition & 1 deletion test/concentrate/encoder/trip_updates_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ defmodule Concentrate.Encoder.TripUpdatesTest do
import Concentrate.TestHelpers
import Concentrate.Encoder.TripUpdates
import Concentrate.Encoder.GTFSRealtimeHelpers, only: [group: 1]
alias Concentrate.{FeedUpdate, TripDescriptor, VehiclePosition, StopTimeUpdate}
alias Concentrate.{FeedUpdate, StopTimeUpdate, TripDescriptor, VehiclePosition}
alias Concentrate.Parser.GTFSRealtime

describe "encode_groups/1" do
Expand Down
2 changes: 1 addition & 1 deletion test/concentrate/encoder/vehicle_positions_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ defmodule Concentrate.Encoder.VehiclePositionsTest do
import Concentrate.TestHelpers
import Concentrate.Encoder.VehiclePositions
import Concentrate.Encoder.GTFSRealtimeHelpers, only: [group: 1]
alias Concentrate.{FeedUpdate, TripDescriptor, VehiclePosition, StopTimeUpdate}
alias Concentrate.{FeedUpdate, StopTimeUpdate, TripDescriptor, VehiclePosition}
alias Concentrate.Parser.GTFSRealtime

describe "encode/1" do
Expand Down
2 changes: 1 addition & 1 deletion test/concentrate/group_filter/cancelled_trip_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ defmodule Concentrate.GroupFilter.CancelledTripTest do
@moduledoc false
use ExUnit.Case, async: true
import Concentrate.GroupFilter.CancelledTrip
alias Concentrate.{TripDescriptor, StopTimeUpdate}
alias Concentrate.{StopTimeUpdate, TripDescriptor}

@module Concentrate.Filter.FakeCancelledTrips

Expand Down
2 changes: 1 addition & 1 deletion test/concentrate/group_filter/closed_stop_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ defmodule Concentrate.GroupFilter.ClosedStopTest do
@moduledoc false
use ExUnit.Case, async: true
import Concentrate.GroupFilter.ClosedStop
alias Concentrate.{TripDescriptor, StopTimeUpdate, VehiclePosition}
alias Concentrate.{StopTimeUpdate, TripDescriptor, VehiclePosition}

@trip_update TripDescriptor.new(trip_id: "trip", direction_id: 1, route_id: "route")
@valid_date_time 8
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
defmodule Concentrate.GroupFilter.RemoveUncertainStopTimesTest do
use ExUnit.Case, async: true
alias Concentrate.GroupFilter.RemoveUncertainStopTimeUpdates
alias Concentrate.TripDescriptor
alias Concentrate.StopTimeUpdate
alias Concentrate.{StopTimeUpdate, TripDescriptor}

@mid_trip 60
@at_terminal 120
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ defmodule Concentrate.GroupFilter.RemoveUnneededTimesTest do
@moduledoc false
use ExUnit.Case, async: true
alias Concentrate.GroupFilter.RemoveUnneededTimes
alias Concentrate.{TripDescriptor, StopTimeUpdate}
alias Concentrate.{StopTimeUpdate, TripDescriptor}

defmodule FakeStopTimes do
@moduledoc "Fake implementation of GTFS.StopTimes"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ defmodule Concentrate.GroupFilter.ScheduledStopTimesTest do
@moduledoc false
use ExUnit.Case, async: true
alias Concentrate.GroupFilter.ScheduledStopTimes
alias Concentrate.{TripDescriptor, StopTimeUpdate}
alias Concentrate.{StopTimeUpdate, TripDescriptor}

defmodule FakeStopTimes do
def arrival_departure("trip1", 10, {2022, 1, 1}), do: {1_610_000_000, 1_610_000_001}
Expand Down
2 changes: 1 addition & 1 deletion test/concentrate/group_filter/shuttle_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ defmodule Concentrate.GroupFilter.ShuttleTest do
@moduledoc false
use ExUnit.Case, async: true
import Concentrate.GroupFilter.Shuttle
alias Concentrate.{TripDescriptor, StopTimeUpdate}
alias Concentrate.{StopTimeUpdate, TripDescriptor}

@trip_id "trip"
@route_id "route"
Expand Down
Loading

0 comments on commit f5d0fa4

Please sign in to comment.