Current section

Files

Jump to
elixir_structure_manager lib mix tasks ca.test.ex
Raw

lib/mix/tasks/ca.test.ex

defmodule Mix.Tasks.Ca.Test do
@moduledoc """
Run common static code analysis tools and tests for the project
Examples:
$ mix ca.test
It generates the following files:
* _build/release/credo_sonarqube.json
* _build/release/excoveralls.xml
* _build/release/generic_test_execution_sonarqube.xml
* _build/release/sobelow.json
* _build/release/sobelow_sonarqube.json
* _build/release/test-junit-report.xml
"""
alias ElixirStructureManager.Utils.{FileGenerator, TokenHelper}
alias Mix.Tasks.Ca.BaseTask
use BaseTask,
name: "ca.test",
description: "Run common static code analysis tools and tests for the project",
switches: [],
aliases: []
def execute(_any) do
Mix.shell().info([:green, "* Executing analysis and tests"])
sonar_base_folder = Application.get_env(:elixir_structure_manager, :sonar_base_folder, "")
args = %{
folders: [
"_build/release"
],
transformations: [
{:cmd,
"mix credo --sonarqube-base-folder {sonar_base_folder} --sonarqube-file _build/release/credo_sonarqube.json --mute-exit-status"},
{:cmd, "mix sobelow -f json --out _build/release/sobelow.json"},
{:cmd,
"mix ca.sobelow.sonar -i _build/release/sobelow.json -o _build/release/sobelow_sonarqube.json"},
{:cmd, "mix coveralls.xml"},
{:cmd,
"mv generic_test_execution_sonarqube.xml _build/release/generic_test_execution_sonarqube.xml"}
]
}
FileGenerator.execute_actions(args, TokenHelper.add("sonar_base_folder", sonar_base_folder))
Mix.shell().info([:green, "* Analysis executed"])
end
end