defmodule ExCrap.MixProject do
use Mix.Project
@version "0.1.0"
@source_url "https://github.com/germsvel/ex_crap"
def project do
[
app: :ex_crap,
version: @version,
elixir: "~> 1.18",
description: description(),
package: package(),
source_url: @source_url,
homepage_url: @source_url,
docs: docs(),
start_permanent: Mix.env() == :prod,
test_ignore_filters: [~r{^test/fixtures/}],
compilers: [:boundary] ++ Mix.compilers(),
aliases: [
doc: "docs",
"test.crap": [
"test --cover --export-coverage default",
"test.coverage",
"crap"
],
precommit: [
"format",
"test.crap",
"boundary.spec.check",
"credo --strict",
"sobelow --skip"
],
mutate:
"muex --mutators arithmetic,boolean,comparison,conditional,function_call,literal,return_value",
"mutate.fast":
"muex --mutators arithmetic,boolean,comparison,conditional,function_call,literal,return_value --optimize-level aggressive --max-per-function 5"
],
deps: [
{:stream_data, "~> 1.3", only: :test},
{:ex_doc, "~> 0.34", only: :dev, runtime: false},
{:muex, "~> 0.6", only: [:dev, :test], runtime: false},
{:credo, "~> 1.7", only: [:dev, :test], runtime: false},
{:quokka, "~> 2.13", only: [:dev, :test], runtime: false},
{:boundary, "~> 0.10", runtime: false},
{:sobelow, "~> 0.14", only: [:dev, :test], runtime: false}
]
]
end
def application do
[extra_applications: [:logger, :tools]]
end
def cli do
[
preferred_envs: [
precommit: :test,
"test.crap": :test,
"boundary.spec.check": :test,
credo: :test,
sobelow: :test
]
]
end
defp description do
"Calculate Change Risk Anti-Patterns scores from cyclomatic complexity and test coverage."
end
defp package do
[
files: [
"lib/ex_crap.ex",
"lib/ex_crap/complexity.ex",
"lib/ex_crap/coverage.ex",
"lib/ex_crap/mix.ex",
"lib/ex_crap/report.ex",
"lib/ex_crap/scanner.ex",
"lib/ex_crap/score.ex",
"lib/mix/tasks/crap.ex",
"mix.exs",
"README.md",
"CHANGELOG.md",
"LICENSE.md"
],
licenses: ["MIT"],
links: %{"GitHub" => @source_url}
]
end
defp docs do
[
main: "readme",
extras: ["README.md", "CHANGELOG.md"],
source_ref: "v#{@version}",
source_url: @source_url
]
end
end