Skip to content

Commit f06b2a8

Browse files
authored
feat: Implement CodeSmellsAssessor stub (fixes #87) (#99)
- Add CodeSmellsAssessor as Tier 4 stub assessor - Returns not_applicable with detailed explanation about requirements - Future implementation would analyze: - Long methods (>50 lines) - Large classes (>500 lines) - Long parameter lists (>5 params) - Duplicate code blocks - Magic numbers - Divergent change patterns - Recommends SonarQube, PMD, pylint for manual analysis - Remove duplicate code_smells stub from stub_assessors.py - Test: Correctly returns not_applicable for AgentReady
1 parent c3fabd4 commit f06b2a8

File tree

3 files changed

+44
-2
lines changed

3 files changed

+44
-2
lines changed

src/agentready/assessors/code_quality.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -791,3 +791,44 @@ def _create_remediation(self) -> Remediation:
791791
),
792792
],
793793
)
794+
795+
796+
class CodeSmellsAssessor(BaseAssessor):
797+
"""Assesses code smells: long methods, large classes, duplicate code.
798+
799+
Tier 4 Advanced (0.5% weight) - Requires advanced static analysis tools
800+
like SonarQube, PMD, or sophisticated AST parsing for accurate detection.
801+
This is a stub implementation that will return not_applicable until full
802+
code smell detection is implemented.
803+
"""
804+
805+
@property
806+
def attribute_id(self) -> str:
807+
return "code_smells"
808+
809+
@property
810+
def tier(self) -> int:
811+
return 4 # Advanced
812+
813+
@property
814+
def attribute(self) -> Attribute:
815+
return Attribute(
816+
id=self.attribute_id,
817+
name="Code Smell Elimination",
818+
category="Code Quality",
819+
tier=self.tier,
820+
description="Removing indicators of deeper problems: long methods, large classes, duplicate code",
821+
criteria="<5 major code smells per 1000 lines, zero critical smells",
822+
default_weight=0.005,
823+
)
824+
825+
def assess(self, repository: Repository) -> Finding:
826+
"""Stub implementation - requires advanced static analysis."""
827+
return Finding.not_applicable(
828+
self.attribute,
829+
reason="Requires advanced static analysis tools for comprehensive code smell detection. "
830+
"Future implementation will analyze: long methods (>50 lines), "
831+
"large classes (>500 lines), long parameter lists (>5 params), "
832+
"duplicate code blocks, magic numbers, and divergent change patterns. "
833+
"Consider using SonarQube, PMD, pylint, or similar tools.",
834+
)

src/agentready/assessors/stub_assessors.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,6 @@ def create_stub_assessors():
312312
StubAssessor(
313313
"performance_benchmarks", "Performance Benchmarks", "Performance", 4, 0.01
314314
),
315-
StubAssessor("code_smells", "Code Smell Elimination", "Code Quality", 4, 0.01),
316315
StubAssessor(
317316
"issue_pr_templates",
318317
"Issue & Pull Request Templates",

src/agentready/cli/main.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from importlib_metadata import version as get_version
1414

1515
from ..assessors.code_quality import (
16+
CodeSmellsAssessor,
1617
CyclomaticComplexityAssessor,
1718
SemanticNamingAssessor,
1819
StructuredLoggingAssessor,
@@ -99,8 +100,9 @@ def create_all_assessors():
99100
SemanticNamingAssessor(),
100101
StructuredLoggingAssessor(),
101102
OpenAPISpecsAssessor(),
102-
# Tier 4 Advanced (1 stub)
103+
# Tier 4 Advanced (2 stubs)
103104
BranchProtectionAssessor(),
105+
CodeSmellsAssessor(),
104106
]
105107

106108
# Add remaining stub assessors

0 commit comments

Comments
 (0)