Coverage report: 95%

Files Functions Classes

coverage.py v7.13.4, created at 2026-04-28 02:54 +0000

File function   statements missing excluded   coverage
src / python_commitlint / __init__.py (no function)   5 0 0   100%
src / python_commitlint / cli.py commitlint   0 0 0   100%
src / python_commitlint / cli.py lint_command   14 3 0   79%
src / python_commitlint / cli.py convert_command   11 3 0   73%
src / python_commitlint / cli.py _get_commit_message   3 0 0   100%
src / python_commitlint / cli.py _print_text_output   4 0 0   100%
src / python_commitlint / cli.py _print_error_lines   2 0 0   100%
src / python_commitlint / cli.py _print_warning_lines   2 1 0   50%
src / python_commitlint / cli.py _print_status_summary   5 0 0   100%
src / python_commitlint / cli.py _print_error_count   5 1 0   80%
src / python_commitlint / cli.py _print_json_output   2 0 0   100%
src / python_commitlint / cli.py (no function)   31 1 0   97%
src / python_commitlint / config / __init__.py (no function)   3 0 0   100%
src / python_commitlint / config / configuration.py ConfigurationLoader.load   2 0 0   100%
src / python_commitlint / config / configuration.py ConfigurationLoader._load_raw_config   7 1 0   86%
src / python_commitlint / config / configuration.py ConfigurationLoader._read_config_file   16 0 0   100%
src / python_commitlint / config / configuration.py ConfigurationLoader._parse_configuration   10 2 0   80%
src / python_commitlint / config / configuration.py ConfigurationLoader._parse_rule_config   5 1 0   80%
src / python_commitlint / config / configuration.py ConfigurationLoader._parse_list_rule   10 1 0   90%
src / python_commitlint / config / configuration.py ConfigurationLoader._parse_dict_rule   7 2 0   71%
src / python_commitlint / config / configuration.py ConfigurationLoader._parse_condition   4 2 0   50%
src / python_commitlint / config / configuration.py ConfigurationLoaderFactory.create   1 0 0   100%
src / python_commitlint / config / configuration.py (no function)   23 0 0   100%
src / python_commitlint / config / converter.py CommitlintConfigConverter.js_to_yaml   2 0 0   100%
src / python_commitlint / config / converter.py CommitlintConfigConverter._parse_js_config   14 0 0   100%
src / python_commitlint / config / converter.py CommitlintConfigConverter._parse_rules   13 3 0   77%
src / python_commitlint / config / converter.py CommitlintConfigConverter._parse_array   23 1 0   96%
src / python_commitlint / config / converter.py CommitlintConfigConverter._handle_string_state   5 0 0   100%
src / python_commitlint / config / converter.py CommitlintConfigConverter._handle_special_chars   10 1 0   90%
src / python_commitlint / config / converter.py CommitlintConfigConverter._parse_value   12 3 0   75%
src / python_commitlint / config / converter.py CommitlintConfigConverter._generate_yaml   14 0 0   100%
src / python_commitlint / config / converter.py convert_js_to_yaml   8 0 0   100%
src / python_commitlint / config / converter.py (no function)   24 0 0   100%
src / python_commitlint / core / __init__.py (no function)   5 0 0   100%
src / python_commitlint / core / enums.py (no function)   17 0 0   100%
src / python_commitlint / core / exceptions.py (no function)   1 0 0   100%
src / python_commitlint / core / models.py LintResult.has_errors   1 0 0   100%
src / python_commitlint / core / models.py LintResult.has_warnings   1 0 0   100%
src / python_commitlint / core / models.py (no function)   47 0 0   100%
src / python_commitlint / core / protocols.py CommitParserProtocol.parse   0 0 1   100%
src / python_commitlint / core / protocols.py RuleProtocol.name   0 0 1   100%
src / python_commitlint / core / protocols.py RuleProtocol.validate   0 0 1   100%
src / python_commitlint / core / protocols.py ConfigurationLoaderProtocol.load   0 0 1   100%
src / python_commitlint / core / protocols.py CommitLinterProtocol.lint   0 0 1   100%
src / python_commitlint / core / protocols.py (no function)   13 0 7   100%
src / python_commitlint / linter.py _categorize_violation   4 0 0   100%
src / python_commitlint / linter.py CommitLinter.__init__   3 0 0   100%
src / python_commitlint / linter.py CommitLinter.lint   5 0 0   100%
src / python_commitlint / linter.py CommitLinter._collect_violations   5 0 0   100%
src / python_commitlint / linter.py CommitLinter._apply_rule   8 0 0   100%
src / python_commitlint / linter.py CommitLinter._is_merge_commit   2 0 0   100%
src / python_commitlint / linter.py CommitLinterFactory.create   7 0 0   100%
src / python_commitlint / linter.py (no function)   17 0 0   100%
src / python_commitlint / parser.py ConventionalCommitParser.parse   14 0 0   100%
src / python_commitlint / parser.py ConventionalCommitParser._extract_header   3 1 0   67%
src / python_commitlint / parser.py ConventionalCommitParser._extract_body   2 0 0   100%
src / python_commitlint / parser.py ConventionalCommitParser._extract_footer   2 0 0   100%
src / python_commitlint / parser.py ConventionalCommitParser._split_body_footer   13 2 0   85%
src / python_commitlint / parser.py ConventionalCommitParser._first_non_blank   4 1 0   75%
src / python_commitlint / parser.py ConventionalCommitParser._find_footer_split   4 0 0   100%
src / python_commitlint / parser.py ConventionalCommitParser._rstrip_blank   4 1 0   75%
src / python_commitlint / parser.py ConventionalCommitParser._is_footer_line   1 0 0   100%
src / python_commitlint / parser.py CommitParserFactory.create   1 0 0   100%
src / python_commitlint / parser.py (no function)   20 0 0   100%
src / python_commitlint / rules / __init__.py (no function)   7 0 0   100%
src / python_commitlint / rules / base.py config_value_or   1 0 0   100%
src / python_commitlint / rules / base.py BaseRule.name   0 0 0   100%
src / python_commitlint / rules / base.py BaseRule.validate   0 0 0   100%
src / python_commitlint / rules / base.py BaseRule._create_error   1 0 0   100%
src / python_commitlint / rules / base.py (no function)   11 0 0   100%
src / python_commitlint / rules / body_rules.py BodyEmptyRule.name   1 0 0   100%
src / python_commitlint / rules / body_rules.py BodyEmptyRule.validate   6 0 0   100%
src / python_commitlint / rules / body_rules.py BodyLeadingBlankRule.name   1 0 0   100%
src / python_commitlint / rules / body_rules.py BodyLeadingBlankRule.validate   11 0 0   100%
src / python_commitlint / rules / body_rules.py BodyMaxLengthRule.name   1 0 0   100%
src / python_commitlint / rules / body_rules.py BodyMaxLengthRule.validate   8 0 0   100%
src / python_commitlint / rules / body_rules.py BodyMaxLineLengthRule.name   1 0 0   100%
src / python_commitlint / rules / body_rules.py BodyMaxLineLengthRule.validate   11 1 0   91%
src / python_commitlint / rules / body_rules.py BodyMinLengthRule.name   1 0 0   100%
src / python_commitlint / rules / body_rules.py BodyMinLengthRule.validate   8 0 0   100%
src / python_commitlint / rules / body_rules.py BodyFullStopRule.name   1 0 0   100%
src / python_commitlint / rules / body_rules.py BodyFullStopRule.validate   9 0 0   100%
src / python_commitlint / rules / body_rules.py BodyCaseRule.name   1 0 0   100%
src / python_commitlint / rules / body_rules.py BodyCaseRule.validate   8 0 0   100%
src / python_commitlint / rules / body_rules.py (no function)   34 0 0   100%
src / python_commitlint / rules / case_validators.py CaseValidator.is_lower_case   3 1 0   67%
src / python_commitlint / rules / case_validators.py CaseValidator.is_upper_case   1 0 0   100%
src / python_commitlint / rules / case_validators.py CaseValidator.is_camel_case   4 0 0   100%
src / python_commitlint / rules / case_validators.py CaseValidator.is_kebab_case   2 0 0   100%
src / python_commitlint / rules / case_validators.py CaseValidator.is_pascal_case   4 0 0   100%
src / python_commitlint / rules / case_validators.py CaseValidator.is_sentence_case   3 0 0   100%
src / python_commitlint / rules / case_validators.py CaseValidator.is_snake_case   2 0 0   100%
src / python_commitlint / rules / case_validators.py CaseValidator.is_start_case   4 0 0   100%
src / python_commitlint / rules / case_validators.py CaseValidator.validate   4 1 0   75%
src / python_commitlint / rules / case_validators.py (no function)   24 0 0   100%
src / python_commitlint / rules / footer_rules.py _is_footer_token_line   1 0 0   100%
src / python_commitlint / rules / footer_rules.py FooterEmptyRule.name   1 0 0   100%
src / python_commitlint / rules / footer_rules.py FooterEmptyRule.validate   6 0 0   100%
src / python_commitlint / rules / footer_rules.py FooterLeadingBlankRule.name   1 0 0   100%
src / python_commitlint / rules / footer_rules.py FooterLeadingBlankRule.validate   11 0 0   100%
src / python_commitlint / rules / footer_rules.py FooterLeadingBlankRule._find_footer_start   5 1 0   80%
src / python_commitlint / rules / footer_rules.py FooterMaxLengthRule.name   1 0 0   100%
src / python_commitlint / rules / footer_rules.py FooterMaxLengthRule.validate   8 0 0   100%
src / python_commitlint / rules / footer_rules.py FooterMaxLineLengthRule.name   1 0 0   100%
src / python_commitlint / rules / footer_rules.py FooterMaxLineLengthRule.validate   9 1 0   89%
src / python_commitlint / rules / footer_rules.py FooterMinLengthRule.name   1 0 0   100%
src / python_commitlint / rules / footer_rules.py FooterMinLengthRule.validate   8 0 0   100%
src / python_commitlint / rules / footer_rules.py (no function)   27 0 0   100%
src / python_commitlint / rules / header_rules.py HeaderMaxLengthRule.name   1 0 0   100%
src / python_commitlint / rules / header_rules.py HeaderMaxLengthRule.validate   6 0 0   100%
src / python_commitlint / rules / header_rules.py HeaderMinLengthRule.name   1 0 0   100%
src / python_commitlint / rules / header_rules.py HeaderMinLengthRule.validate   6 0 0   100%
src / python_commitlint / rules / header_rules.py HeaderTrimRule.name   1 0 0   100%
src / python_commitlint / rules / header_rules.py HeaderTrimRule.validate   5 0 0   100%
src / python_commitlint / rules / header_rules.py HeaderFullStopRule.name   1 0 0   100%
src / python_commitlint / rules / header_rules.py HeaderFullStopRule.validate   9 0 0   100%
src / python_commitlint / rules / header_rules.py HeaderCaseRule.name   1 0 0   100%
src / python_commitlint / rules / header_rules.py HeaderCaseRule.validate   8 0 0   100%
src / python_commitlint / rules / header_rules.py (no function)   24 0 0   100%
src / python_commitlint / rules / registry.py RuleRegistry.__init__   1 0 0   100%
src / python_commitlint / rules / registry.py RuleRegistry.register   1 0 0   100%
src / python_commitlint / rules / registry.py RuleRegistry.get   1 0 0   100%
src / python_commitlint / rules / registry.py RuleRegistry.get_all   1 1 0   0%
src / python_commitlint / rules / registry.py RuleRegistryFactory.create   1 1 0   0%
src / python_commitlint / rules / registry.py RuleRegistryFactory.create_with_default_rules   5 0 0   100%
src / python_commitlint / rules / registry.py (no function)   17 0 0   100%
src / python_commitlint / rules / scope_rules.py _split_scope   7 0 0   100%
src / python_commitlint / rules / scope_rules.py _build_case_validation   4 4 0   0%
src / python_commitlint / rules / scope_rules.py _build_scope_enum_validation   4 4 0   0%
src / python_commitlint / rules / scope_rules.py ScopeEmptyRule.name   1 0 0   100%
src / python_commitlint / rules / scope_rules.py ScopeEmptyRule.validate   6 0 0   100%
src / python_commitlint / rules / scope_rules.py ScopeCaseRule.name   1 0 0   100%
src / python_commitlint / rules / scope_rules.py ScopeCaseRule.validate   14 3 0   79%
src / python_commitlint / rules / scope_rules.py ScopeEnumRule.name   1 0 0   100%
src / python_commitlint / rules / scope_rules.py ScopeEnumRule.validate   17 3 0   82%
src / python_commitlint / rules / scope_rules.py ScopeMinLengthRule.name   1 0 0   100%
src / python_commitlint / rules / scope_rules.py ScopeMinLengthRule.validate   8 0 0   100%
src / python_commitlint / rules / scope_rules.py ScopeMaxLengthRule.name   1 0 0   100%
src / python_commitlint / rules / scope_rules.py ScopeMaxLengthRule.validate   8 0 0   100%
src / python_commitlint / rules / scope_rules.py (no function)   30 0 0   100%
src / python_commitlint / rules / subject_rules.py SubjectEmptyRule.name   1 0 0   100%
src / python_commitlint / rules / subject_rules.py SubjectEmptyRule.validate   6 0 0   100%
src / python_commitlint / rules / subject_rules.py SubjectCaseRule.name   1 0 0   100%
src / python_commitlint / rules / subject_rules.py SubjectCaseRule.validate   8 0 0   100%
src / python_commitlint / rules / subject_rules.py SubjectFullStopRule.name   1 0 0   100%
src / python_commitlint / rules / subject_rules.py SubjectFullStopRule.validate   9 0 0   100%
src / python_commitlint / rules / subject_rules.py SubjectMinLengthRule.name   1 0 0   100%
src / python_commitlint / rules / subject_rules.py SubjectMinLengthRule.validate   8 0 0   100%
src / python_commitlint / rules / subject_rules.py SubjectMaxLengthRule.name   1 0 0   100%
src / python_commitlint / rules / subject_rules.py SubjectMaxLengthRule.validate   8 0 0   100%
src / python_commitlint / rules / subject_rules.py (no function)   24 0 0   100%
src / python_commitlint / rules / type_rules.py TypeEmptyRule.name   1 0 0   100%
src / python_commitlint / rules / type_rules.py TypeEmptyRule.validate   6 0 0   100%
src / python_commitlint / rules / type_rules.py TypeCaseRule.name   1 0 0   100%
src / python_commitlint / rules / type_rules.py TypeCaseRule.validate   8 0 0   100%
src / python_commitlint / rules / type_rules.py TypeEnumRule.name   1 0 0   100%
src / python_commitlint / rules / type_rules.py TypeEnumRule.validate   11 0 0   100%
src / python_commitlint / rules / type_rules.py TypeMinLengthRule.name   1 0 0   100%
src / python_commitlint / rules / type_rules.py TypeMinLengthRule.validate   8 0 0   100%
src / python_commitlint / rules / type_rules.py TypeMaxLengthRule.name   1 0 0   100%
src / python_commitlint / rules / type_rules.py TypeMaxLengthRule.validate   8 0 0   100%
src / python_commitlint / rules / type_rules.py (no function)   25 0 0   100%
Total     1086 52 12   95%

No items found using the specified filter.