TaskValidator.Config (TaskValidator v0.9.2)

View Source

Configuration module for TaskValidator.

Provides a centralized way to access and validate configuration options for the TaskValidator library. All configuration is read from the Application environment under the :task_validator key.

Configuration Options

Validation Rules

  • :valid_statuses - List of valid task statuses. Default: ["Planned", "In Progress", "Review", "Completed", "Blocked"]

  • :valid_priorities - List of valid task priorities. Default: ["Critical", "High", "Medium", "Low"]

  • :id_regex - Regular expression for validating task IDs. Default: ~r/^[A-Z]{2,4}\d{3,4}(-\d+|[a-z])?$/

  • :rating_regex - Regular expression for validating review ratings. Default: ~r/^([1-5](\.)?) *((partial))?$/

Code Quality KPIs

  • :max_functions_per_module - Maximum allowed functions per module. Default: 8

  • :max_lines_per_function - Maximum allowed lines per function. Default: 15

  • :max_call_depth - Maximum allowed call depth. Default: 3

Elixir-Specific Code Quality KPIs

  • :max_pattern_match_depth - Maximum allowed pattern matching depth. Default: 4

  • :max_dialyzer_warnings - Maximum allowed Dialyzer warnings. Default: 0

  • :min_credo_score - Minimum required Credo score (out of 10). Default: 8.0

  • :max_genserver_state_complexity - Maximum GenServer state fields. Default: 5

  • :max_phoenix_context_boundaries - Maximum contexts per feature. Default: 3

  • :max_ecto_query_complexity - Maximum Ecto query depth. Default: 4

Task Categories

  • :category_ranges - Map of category names to number ranges. Default (Elixir/Phoenix-specific):
    %{
      "otp_genserver" => {1, 99},
      "phoenix_web" => {100, 199},
      "business_logic" => {200, 299},
      "data_layer" => {300, 399},
      "infrastructure" => {400, 499},
      "testing" => {500, 599}
    }

Example Configuration

# config/config.exs
config :task_validator,
  valid_statuses: ["Planning", "Active", "Done", "Paused"],
  max_functions_per_module: 7,
  category_ranges: %{
    "otp_genserver" => {1, 99},
    "phoenix_web" => {100, 199},
    "business_logic" => {200, 299},
    "data_layer" => {300, 399},
    "infrastructure" => {400, 499},
    "testing" => {500, 599}
  }

Summary

Functions

Gets a configuration value with validation.

Gets all configuration as a map.

Validates a configuration value.

Functions

get(key)

@spec get(atom()) :: any()

Gets a configuration value with validation.

Returns the configured value or the default if not set. Validates the configuration value matches expected type and constraints.

Examples

iex> TaskValidator.Config.get(:valid_statuses)
["Planned", "In Progress", "Review", "Completed", "Blocked"]

iex> TaskValidator.Config.get(:max_functions_per_module)
5

get_all()

@spec get_all() :: map()

Gets all configuration as a map.

Returns a map with all configuration values, using defaults for any unconfigured options.

validate_config_value(key, value)

@spec validate_config_value(atom(), any()) :: :ok | {:error, String.t()}

Validates a configuration value.

Returns :ok if valid, or {:error, reason} if invalid.