# christopheradams/elixir_style_guide

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/christopheradams-elixir-style-guide).**

4,427 stars · 301 forks · Elixir

## Links

- GitHub: https://github.com/christopheradams/elixir_style_guide
- awesome-repositories: https://awesome-repositories.com/repository/christopheradams-elixir-style-guide.md

## Topics

`elixir` `elixir-lang` `style-guide` `styleguide`

## Description

This project is a static analysis tool and linter for Elixir designed to enforce a unified visual structure across codebases. It serves as a specification for code formatting, naming conventions, and documentation standards.

The tool provides a standardized system for casing and prefixes used in files, functions, and variables. It also establishes guidelines for formatting module and function descriptions to ensure consistent technical documentation.

The project covers a broad range of code quality areas, including the organization of module layouts, the implementation of commenting patterns, and the standardization of test assertions. It also provides guidance on idiomatic language expression and the definition of type specifications.

## Tags

### Development Tools & Productivity

- [Elixir Linters](https://awesome-repositories.com/f/development-tools-productivity/elixir-linters.md) — Functions as a utility for identifying naming, formatting, and layout errors in Elixir files.
- [Static Source Analysis](https://awesome-repositories.com/f/development-tools-productivity/static-source-analysis.md) — Analyzes source code without execution to detect structural inconsistencies and style violations.
- [Static Code Analysis](https://awesome-repositories.com/f/development-tools-productivity/static-code-analysis.md) — Scans Elixir files without execution to identify style violations and structural inconsistencies.
- [Metadata Scanning](https://awesome-repositories.com/f/development-tools-productivity/attribute-metadata-annotations/metadata-scanning.md) — Scans module and function attributes to ensure required documentation blocks and type definitions are present.
- [Comment Formatting Utilities](https://awesome-repositories.com/f/development-tools-productivity/comment-formatting-utilities.md) — Formats comments and technical debt annotations using a consistent set of uppercase keywords and markers. ([source](https://github.com/christopheradams/elixir_style_guide#readme))

### Part of an Awesome List

- [Code Formatting and Linting](https://awesome-repositories.com/f/awesome-lists/devtools/code-formatting-and-linting.md) — Identifies style violations and formatting errors in source files to enforce a unified visual structure.

### Programming Languages & Runtimes

- [Elixir Code Formatting Specifications](https://awesome-repositories.com/f/programming-languages-runtimes/elixir-code-formatting-specifications.md) — Defines rules for whitespace, indentation, and module layout to create a uniform visual structure.
- [Elixir Code Standardization](https://awesome-repositories.com/f/programming-languages-runtimes/elixir-code-standardization.md) — Provides a standardized system for casing, prefixes, and formatting to ensure consistency across Elixir codebases.
- [Elixir Naming Conventions](https://awesome-repositories.com/f/programming-languages-runtimes/elixir-naming-conventions.md) — Enforces a standardized system for casing and prefixes used in files, functions, and variables.
- [Elixir Static Analyzers](https://awesome-repositories.com/f/programming-languages-runtimes/elixir-static-analyzers.md) — Scans Elixir source code without execution to detect structural inconsistencies and style violations.
- [Module Organization](https://awesome-repositories.com/f/programming-languages-runtimes/module-organization.md) — Arranges attributes, directives, and macros in a logical order to clarify the relationship between modules and files. ([source](https://github.com/christopheradams/elixir_style_guide#readme))
- [Internal Definition Ordering](https://awesome-repositories.com/f/programming-languages-runtimes/module-organization/component-based-module-organizations/file-based-module-separation/internal-definition-ordering.md) — Organizes code by limiting each file to one module and prescribing the internal order of definitions. ([source](https://github.com/christopheradams/elixir_style_guide/blob/master/README.md))
- [Idiomatic Elixir Development](https://awesome-repositories.com/f/programming-languages-runtimes/idiomatic-elixir-development.md) — Guides the use of best practices for control-flow structures and collection syntax to improve readability.

### Software Engineering & Architecture

- [Lexical Layout Validations](https://awesome-repositories.com/f/software-engineering-architecture/automatic-configuration/automatic-layout-engines/layout-validators/javadoc-layout-validations/lexical-layout-validations.md) — Checks the specific ordering of module directives and attributes to ensure a consistent internal file structure.
- [Code Documentation Standards](https://awesome-repositories.com/f/software-engineering-architecture/code-documentation-standards.md) — Sets requirements for module descriptions and punctuation to ensure functions are documented consistently. ([source](https://github.com/christopheradams/elixir_style_guide/blob/master/README.md))
- [Documentation Standards](https://awesome-repositories.com/f/software-engineering-architecture/development-methodologies/engineering-best-practices/code-craftsmanship-standards/coding-standards/documentation-standards.md) — Establishes requirements for module and function descriptions using specific attributes and formatted text blocks. ([source](https://github.com/christopheradams/elixir_style_guide#readme))
- [Naming Conventions](https://awesome-repositories.com/f/software-engineering-architecture/development-methodologies/engineering-best-practices/code-craftsmanship-standards/coding-standards/naming-conventions.md) — Applies consistent casing rules to files, functions, and variables to maintain clarity. ([source](https://github.com/christopheradams/elixir_style_guide/blob/master/README.md))
- [Identifier Casing Enforcement](https://awesome-repositories.com/f/software-engineering-architecture/identifier-casing-enforcement.md) — Validates that variable and function names adhere to specific casing rules through static analysis.
- [Source Code Formatting](https://awesome-repositories.com/f/software-engineering-architecture/source-code-formatting.md) — Applies rules for whitespace, indentation, and line length to create a consistent visual structure. ([source](https://github.com/christopheradams/elixir_style_guide#readme))
- [Variable Naming Conventions](https://awesome-repositories.com/f/software-engineering-architecture/variable-naming-conventions.md) — Dictates casing and prefix patterns for variables and booleans to ensure semantic consistency. ([source](https://github.com/christopheradams/elixir_style_guide#readme))
- [Documentation Governance Frameworks](https://awesome-repositories.com/f/software-engineering-architecture/documentation-governance-frameworks.md) — Establishes requirements for module and function descriptions to maintain professional and uniform technical documentation.
- [Idiomatic Coding Standards](https://awesome-repositories.com/f/software-engineering-architecture/idiomatic-coding-standards.md) — Applies best practices for control-flow structures and collection syntax to improve code readability. ([source](https://github.com/christopheradams/elixir_style_guide#readme))
- [Rule-Based Pattern Matching](https://awesome-repositories.com/f/software-engineering-architecture/naming-conventions/rule-based-pattern-matching.md) — Identifies naming and formatting violations by comparing source code patterns against regular expression rules.
- [Regular Expression Validations](https://awesome-repositories.com/f/software-engineering-architecture/regular-expression-validations.md) — Uses regular expression validations to identify naming and formatting violations in source code.
- [Type Specifications](https://awesome-repositories.com/f/software-engineering-architecture/typescript-type-definitions/static-type-checking/type-specifications.md) — Creates guidelines for declaring custom types to assist static analysis tools and developers. ([source](https://github.com/christopheradams/elixir_style_guide#readme))
