diff --git a/.credo.exs b/.credo.exs new file mode 100644 index 0000000..baa1ea2 --- /dev/null +++ b/.credo.exs @@ -0,0 +1,217 @@ +# This file contains the configuration for Credo and you are probably reading +# this after creating it with `mix credo.gen.config`. +# +# If you find anything wrong or unclear in this file, please report an +# issue on GitHub: https://github.com/rrrene/credo/issues +# +%{ + # + # You can have as many configs as you like in the `configs:` field. + configs: [ + %{ + # + # Run any config using `mix credo -C `. If no config name is given + # "default" is used. + # + name: "default", + # + # These are the files included in the analysis: + files: %{ + # + # You can give explicit globs or simply directories. + # In the latter case `**/*.{ex,exs}` will be used. + # + included: [ + "lib/", + "src/", + "test/", + "web/", + "apps/*/lib/", + "apps/*/src/", + "apps/*/test/", + "apps/*/web/" + ], + excluded: [~r"/_build/", ~r"/deps/", ~r"/node_modules/"] + }, + # + # Load and configure plugins here: + # + plugins: [], + # + # If you create your own checks, you must specify the source files for + # them here, so they can be loaded by Credo before running the analysis. + # + requires: [], + # + # If you want to enforce a style guide and need a more traditional linting + # experience, you can change `strict` to `true` below: + # + strict: false, + # + # To modify the timeout for parsing files, change this value: + # + parse_timeout: 5000, + # + # If you want to use uncolored output by default, you can change `color` + # to `false` below: + # + color: true, + # + # You can customize the parameters of any check by adding a second element + # to the tuple. + # + # To disable a check put `false` as second element: + # + # {Credo.Check.Design.DuplicatedCode, false} + # + 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: 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, []}, + {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.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.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) + {Credo.Check.Refactor.UtcNowTruncate, []}, + + # + # 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, []} + + # {Credo.Check.Refactor.MapInto, []}, + + # + # Custom checks can be created using `mix credo.gen.check`. + # + ] + } + } + ] +} diff --git a/lib/kotisivut/accounts.ex b/lib/kotisivut/accounts.ex index d4f296d..811c74c 100644 --- a/lib/kotisivut/accounts.ex +++ b/lib/kotisivut/accounts.ex @@ -6,7 +6,7 @@ defmodule Kotisivut.Accounts do import Ecto.Query, warn: false alias Kotisivut.Repo - alias Kotisivut.Accounts.{User, UserToken, UserNotifier} + alias Kotisivut.Accounts.{User, UserNotifier, UserToken} ## Database getters diff --git a/lib/kotisivut/accounts/user.ex b/lib/kotisivut/accounts/user.ex index 1be1ddc..8eb1157 100644 --- a/lib/kotisivut/accounts/user.ex +++ b/lib/kotisivut/accounts/user.ex @@ -1,4 +1,8 @@ defmodule Kotisivut.Accounts.User do + @moduledoc """ + Schema for Users see Doc + """ + use Ecto.Schema import Ecto.Changeset diff --git a/lib/kotisivut/accounts/user_notifier.ex b/lib/kotisivut/accounts/user_notifier.ex index fd06334..ff3e530 100644 --- a/lib/kotisivut/accounts/user_notifier.ex +++ b/lib/kotisivut/accounts/user_notifier.ex @@ -1,4 +1,8 @@ defmodule Kotisivut.Accounts.UserNotifier do + @moduledoc """ + UserNotifier TODO + """ + import Swoosh.Email alias Kotisivut.Mailer diff --git a/lib/kotisivut/accounts/user_token.ex b/lib/kotisivut/accounts/user_token.ex index 03aa63d..dc2d161 100644 --- a/lib/kotisivut/accounts/user_token.ex +++ b/lib/kotisivut/accounts/user_token.ex @@ -1,4 +1,8 @@ defmodule Kotisivut.Accounts.UserToken do + @moduledoc """ + Schema for UserTokens, read comments for more + """ + use Ecto.Schema import Ecto.Query alias Kotisivut.Accounts.UserToken diff --git a/lib/kotisivut/blog/post.ex b/lib/kotisivut/blog/post.ex index 6ba2d84..cf144e6 100644 --- a/lib/kotisivut/blog/post.ex +++ b/lib/kotisivut/blog/post.ex @@ -1,4 +1,8 @@ defmodule Kotisivut.Blog.Post do + @moduledoc """ + Schema for Posts + """ + use Ecto.Schema import Ecto.Changeset diff --git a/lib/kotisivut_web/components/core_components.ex b/lib/kotisivut_web/components/core_components.ex index 0a711ec..35fa756 100644 --- a/lib/kotisivut_web/components/core_components.ex +++ b/lib/kotisivut_web/components/core_components.ex @@ -16,7 +16,10 @@ defmodule KotisivutWeb.CoreComponents do """ use Phoenix.Component + # my change + alias Phoenix.HTML.Form, as: PHF alias Phoenix.LiveView.JS + import KotisivutWeb.Gettext @doc """ @@ -305,7 +308,7 @@ defmodule KotisivutWeb.CoreComponents do def input(%{type: "checkbox"} = assigns) do assigns = assign_new(assigns, :checked, fn -> - Phoenix.HTML.Form.normalize_value("checkbox", assigns[:value]) + PHF.normalize_value("checkbox", assigns[:value]) end) ~H""" diff --git a/lib/kotisivut_web/user_auth.ex b/lib/kotisivut_web/user_auth.ex index 8c002f5..b5295b5 100644 --- a/lib/kotisivut_web/user_auth.ex +++ b/lib/kotisivut_web/user_auth.ex @@ -1,4 +1,8 @@ defmodule KotisivutWeb.UserAuth do + @moduledoc """ + User auth see doc + """ + use KotisivutWeb, :verified_routes import Plug.Conn diff --git a/test/kotisivut_web/user_auth_test.exs b/test/kotisivut_web/user_auth_test.exs index cac4c5d..b8c591d 100644 --- a/test/kotisivut_web/user_auth_test.exs +++ b/test/kotisivut_web/user_auth_test.exs @@ -1,9 +1,10 @@ defmodule KotisivutWeb.UserAuthTest do use KotisivutWeb.ConnCase, async: true - alias Phoenix.LiveView alias Kotisivut.Accounts alias KotisivutWeb.UserAuth + alias Phoenix.LiveView + import Kotisivut.AccountsFixtures @remember_me_cookie "_kotisivut_web_user_remember_me" diff --git a/test/support/data_case.ex b/test/support/data_case.ex index 48b6a9a..18774e5 100644 --- a/test/support/data_case.ex +++ b/test/support/data_case.ex @@ -13,6 +13,7 @@ defmodule Kotisivut.DataCase do by setting `use Kotisivut.DataCase, async: true`, although this option is not recommended for other databases. """ + alias Ecto.Adapters.SQL.Sandbox, as: EASS use ExUnit.CaseTemplate @@ -36,8 +37,8 @@ defmodule Kotisivut.DataCase do Sets up the sandbox based on the test tags. """ def setup_sandbox(tags) do - pid = Ecto.Adapters.SQL.Sandbox.start_owner!(Kotisivut.Repo, shared: not tags[:async]) - on_exit(fn -> Ecto.Adapters.SQL.Sandbox.stop_owner(pid) end) + pid = EASS.start_owner!(Kotisivut.Repo, shared: not tags[:async]) + on_exit(fn -> EASS.stop_owner(pid) end) end @doc """