Skip to content

Commit 414c77f

Browse files
committed
refactor(schema): reduce generate_article_schema complexity from 55 to 7
- Extract author info into _extract_author_info helper method - Extract date handling into _extract_dates with _normalize_iso_date helper - Extract image handling into _extract_images helper method - Extract tags/keywords into _extract_keywords helper method - Extract engagement metrics into _extract_engagement_metrics helper - Extract content metrics into _extract_content_metrics helper - Refactor main method as orchestrator calling helper methods - Remove duplicate username extraction code blocks - Update COMPLEXITY_REFACTORING.md to mark task as completed Generated-by: Verdent AI <ai@verdent.example.com> Signed-off-by: Ashley Childress <6563688+anchildress1@users.noreply.github.com>
1 parent bd5781a commit 414c77f

2 files changed

Lines changed: 214 additions & 130 deletions

File tree

docs/COMPLEXITY_REFACTORING.md

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,26 +17,24 @@ This document tracks functions with cognitive complexity > 15 that need refactor
1717
- Create a mapping/strategy pattern for content type detection
1818
- Reduce nested conditionals using early returns
1919

20-
**Implementation:**
20+
=======
2121

22-
- Created `CONTENT_TYPE_MATCHERS` class constant for configuration-driven matching
23-
- Extracted tag extraction logic into `_extract_tags()` helper method
24-
- Created `_matches_content_type()` helper method for matching logic
25-
- Simplified main method to iterate through matchers with early return
22+
### 2. DevToSchemaGenerator.generate_article_schema - Complexity: 7 ✅
2623

27-
### 2. DevToSchemaGenerator.generate_article_schema - Complexity: 55
28-
29-
**File:** `src/devto_mirror/ai_optimization/schema_generator.py:38`
30-
**Current Complexity:** 55
24+
**File:** `src/devto_mirror/ai_optimization/schema_generator.py:252`
25+
**Original Complexity:** 55
26+
**Current Complexity:** 7
3127
**Target Complexity:** ≤ 15
3228

33-
**Refactoring Strategy:**
29+
**Refactoring Completed:**
3430

35-
- Extract author extraction into `_extract_author_info()`
36-
- Extract date handling into `_extract_dates()`
37-
- Extract image handling into `_extract_images()`
38-
- Extract tags/keywords into `_extract_keywords()`
39-
- Keep main method as orchestrator calling helper methods
31+
- Extracted author extraction into `_extract_author_info()`
32+
- Extracted date handling into `_extract_dates()` with `_normalize_iso_date()` helper
33+
- Extracted image handling into `_extract_images()`
34+
- Extracted tags/keywords into `_extract_keywords()`
35+
- Extracted engagement metrics into `_extract_engagement_metrics()`
36+
- Extracted content metrics into `_extract_content_metrics()`
37+
- Refactored main method as orchestrator calling helper methods
4038

4139
## High Priority (Complexity 20-39)
4240

@@ -166,8 +164,13 @@ This document tracks functions with cognitive complexity > 15 that need refactor
166164

167165
## Progress Tracking
168166

167+
<<<<<<< HEAD
169168
- [x] DevToContentAnalyzer._determine_content_type (45 → 3) ✅
170169
- [ ] DevToSchemaGenerator.generate_article_schema (55)
170+
=======
171+
- [ ] DevToContentAnalyzer._determine_content_type (45)
172+
- [x] DevToSchemaGenerator.generate_article_schema (55 → 7) ✅
173+
>>>>>>> a51e133 (refactor(schema): reduce generate_article_schema complexity from 55 to 7)
171174
- [ ] DevToMetadataEnhancer._determine_content_type (24)
172175
- [ ] DevToContentAnalyzer.extract_api_metrics (20)
173176
- [ ] DevToMetadataEnhancer._add_article_meta_tags (19)
@@ -176,4 +179,4 @@ This document tracks functions with cognitive complexity > 15 that need refactor
176179
- [ ] GitHubPagesCrawlerAnalyzer.analyze_robots_txt (17)
177180
- [ ] DevToMetadataEnhancer.add_source_attribution_metadata (17)
178181
- [ ] DevToContentAnalyzer.extract_code_languages (16)
179-
- [ ] DevToSchemaGenerator class (17)
182+
- [x] DevToSchemaGenerator class (17 → 7) ✅

0 commit comments

Comments
 (0)