Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions src/agentready/assessors/code_quality.py
Original file line number Diff line number Diff line change
Expand Up @@ -791,3 +791,44 @@ def _create_remediation(self) -> Remediation:
),
],
)


class CodeSmellsAssessor(BaseAssessor):
"""Assesses code smells: long methods, large classes, duplicate code.

Tier 4 Advanced (0.5% weight) - Requires advanced static analysis tools
like SonarQube, PMD, or sophisticated AST parsing for accurate detection.
This is a stub implementation that will return not_applicable until full
code smell detection is implemented.
"""

@property
def attribute_id(self) -> str:
return "code_smells"

@property
def tier(self) -> int:
return 4 # Advanced

@property
def attribute(self) -> Attribute:
return Attribute(
id=self.attribute_id,
name="Code Smell Elimination",
category="Code Quality",
tier=self.tier,
description="Removing indicators of deeper problems: long methods, large classes, duplicate code",
criteria="<5 major code smells per 1000 lines, zero critical smells",
default_weight=0.005,
)

def assess(self, repository: Repository) -> Finding:
"""Stub implementation - requires advanced static analysis."""
return Finding.not_applicable(
self.attribute,
reason="Requires advanced static analysis tools for comprehensive code smell detection. "
"Future implementation will analyze: long methods (>50 lines), "
"large classes (>500 lines), long parameter lists (>5 params), "
"duplicate code blocks, magic numbers, and divergent change patterns. "
"Consider using SonarQube, PMD, pylint, or similar tools.",
)
1 change: 0 additions & 1 deletion src/agentready/assessors/stub_assessors.py
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,6 @@ def create_stub_assessors():
StubAssessor(
"performance_benchmarks", "Performance Benchmarks", "Performance", 4, 0.01
),
StubAssessor("code_smells", "Code Smell Elimination", "Code Quality", 4, 0.01),
StubAssessor(
"issue_pr_templates",
"Issue & Pull Request Templates",
Expand Down
4 changes: 3 additions & 1 deletion src/agentready/cli/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
from importlib_metadata import version as get_version

from ..assessors.code_quality import (
CodeSmellsAssessor,
CyclomaticComplexityAssessor,
SemanticNamingAssessor,
StructuredLoggingAssessor,
Expand Down Expand Up @@ -99,8 +100,9 @@ def create_all_assessors():
SemanticNamingAssessor(),
StructuredLoggingAssessor(),
OpenAPISpecsAssessor(),
# Tier 4 Advanced (1 stub)
# Tier 4 Advanced (2 stubs)
BranchProtectionAssessor(),
CodeSmellsAssessor(),
]

# Add remaining stub assessors
Expand Down
Loading