Coverage report: 95%

Files Functions Classes

coverage.py v7.13.4, created at 2026-02-13 20:29 +0800

File function   statements missing excluded   coverage
src / __init__.py (no function)   1 0 0   100%
src / analytics / __init__.py (no function)   0 0 0   100%
src / analytics / geo_analyzer.py (no function)   2 0 0   100%
src / analytics / gsc_connector.py (no function)   2 2 0   0%
src / analytics / metrics_tracker.py MetricsTracker.__init__   1 0 0   100%
src / analytics / metrics_tracker.py MetricsTracker.record   1 1 0   0%
src / analytics / metrics_tracker.py MetricsTracker.get_metrics   1 1 0   0%
src / analytics / metrics_tracker.py GSCConnector.__init__   1 1 0   0%
src / analytics / metrics_tracker.py GSCConnector.get_search_queries   1 1 0   0%
src / analytics / metrics_tracker.py GEOAnalyzer.analyze_geo_performance   1 0 0   100%
src / analytics / metrics_tracker.py Reporter.generate_html_report   5 0 0   100%
src / analytics / metrics_tracker.py Reporter.generate_json_report   1 0 0   100%
src / analytics / metrics_tracker.py (no function)   24 0 0   100%
src / analytics / reporter.py (no function)   2 0 0   100%
src / cli.py keywords   1 0 0   100%
src / cli.py content   1 1 0   0%
src / cli.py adapt   1 1 0   0%
src / cli.py analytics   1 1 0   0%
src / cli.py main   1 1 0   0%
src / cli.py (no function)   13 0 2   100%
src / content_generator / __init__.py (no function)   0 0 0   100%
src / content_generator / geo_optimizer.py GEOOptimizer.__init__   1 0 0   100%
src / content_generator / geo_optimizer.py GEOOptimizer.extract_entities   2 0 0   100%
src / content_generator / geo_optimizer.py GEOOptimizer.calculate_entity_density   5 1 0   80%
src / content_generator / geo_optimizer.py GEOOptimizer.calculate_semantic_completeness   9 0 0   100%
src / content_generator / geo_optimizer.py GEOOptimizer.optimize   7 0 0   100%
src / content_generator / geo_optimizer.py (no function)   17 0 0   100%
src / content_generator / schema_builder.py SchemaBuilder.build_faq_schema   1 0 0   100%
src / content_generator / schema_builder.py SchemaBuilder.build_howto_schema   1 0 0   100%
src / content_generator / schema_builder.py SchemaBuilder.build_article_schema   1 0 0   100%
src / content_generator / schema_builder.py (no function)   8 0 0   100%
src / content_generator / seo_optimizer.py SEOOptimizer.__init__   3 0 0   100%
src / content_generator / seo_optimizer.py SEOOptimizer.calculate_keyword_density   7 1 0   86%
src / content_generator / seo_optimizer.py SEOOptimizer.calculate_readability   10 0 0   100%
src / content_generator / seo_optimizer.py SEOOptimizer.calculate_readability.count_syllables   12 0 0   100%
src / content_generator / seo_optimizer.py SEOOptimizer.optimize_title   6 0 0   100%
src / content_generator / seo_optimizer.py SEOOptimizer.generate_meta_description   4 0 0   100%
src / content_generator / seo_optimizer.py SEOOptimizer.optimize   24 0 0   100%
src / content_generator / seo_optimizer.py (no function)   19 0 0   100%
src / content_generator / template_engine.py TemplateEngine.__init__   3 1 0   67%
src / content_generator / template_engine.py TemplateEngine.render   2 0 0   100%
src / content_generator / template_engine.py TemplateEngine.render_file   2 2 0   0%
src / content_generator / template_engine.py (no function)   7 0 0   100%
src / keyword_research / __init__.py (no function)   0 0 0   100%
src / keyword_research / analyzer.py KeywordAnalyzer.__init__   1 0 0   100%
src / keyword_research / analyzer.py KeywordAnalyzer.calculate_volume_score   4 1 0   75%
src / keyword_research / analyzer.py KeywordAnalyzer.calculate_competition_score   8 0 0   100%
src / keyword_research / analyzer.py KeywordAnalyzer.calculate_value_score   3 0 0   100%
src / keyword_research / analyzer.py KeywordAnalyzer.analyze   11 0 0   100%
src / keyword_research / analyzer.py (no function)   17 0 2   100%
src / keyword_research / batch_processor.py BatchProcessor.__init__   3 0 0   100%
src / keyword_research / batch_processor.py BatchProcessor.process   6 0 0   100%
src / keyword_research / batch_processor.py BatchProcessor.process.process_one   14 4 0   71%
src / keyword_research / batch_processor.py BatchProcessor.process_with_progress   4 0 0   100%
src / keyword_research / batch_processor.py (no function)   13 0 2   100%
src / keyword_research / google_planner.py KeywordData.to_dict   3 0 0   100%
src / keyword_research / google_planner.py GoogleKeywordPlanner.__init__   6 0 0   100%
src / keyword_research / google_planner.py GoogleKeywordPlanner.__aenter__   2 0 0   100%
src / keyword_research / google_planner.py GoogleKeywordPlanner.__aexit__   2 0 0   100%
src / keyword_research / google_planner.py GoogleKeywordPlanner._get_cache_path   2 0 0   100%
src / keyword_research / google_planner.py GoogleKeywordPlanner._is_cache_valid   4 0 0   100%
src / keyword_research / google_planner.py GoogleKeywordPlanner._fetch_from_api   3 0 0   100%
src / keyword_research / google_planner.py GoogleKeywordPlanner.get_keyword_data   10 0 0   100%
src / keyword_research / google_planner.py (no function)   19 0 0   100%
src / platform_adapter / __init__.py (no function)   0 0 0   100%
src / platform_adapter / base_adapter.py BaseAdapter.__init__   1 0 0   100%
src / platform_adapter / base_adapter.py BaseAdapter.get_max_length   1 1 0   0%
src / platform_adapter / base_adapter.py BaseAdapter.format_content   1 1 0   0%
src / platform_adapter / base_adapter.py BaseAdapter.truncate_content   4 0 0   100%
src / platform_adapter / base_adapter.py (no function)   16 0 0   100%
src / platform_adapter / linkedin_adapter.py LinkedInAdapter.get_max_length   1 0 0   100%
src / platform_adapter / linkedin_adapter.py LinkedInAdapter.format_content   2 0 0   100%
src / platform_adapter / linkedin_adapter.py (no function)   6 0 0   100%
src / platform_adapter / medium_adapter.py MediumAdapter.get_max_length   1 0 0   100%
src / platform_adapter / medium_adapter.py MediumAdapter.format_content   2 0 0   100%
src / platform_adapter / medium_adapter.py (no function)   6 0 0   100%
src / platform_adapter / quora_adapter.py QuoraAdapter.get_max_length   1 0 0   100%
src / platform_adapter / quora_adapter.py QuoraAdapter.format_content   2 0 0   100%
src / platform_adapter / quora_adapter.py (no function)   6 0 0   100%
src / platform_adapter / reddit_adapter.py RedditAdapter.get_max_length   1 0 0   100%
src / platform_adapter / reddit_adapter.py RedditAdapter.format_content   2 0 0   100%
src / platform_adapter / reddit_adapter.py (no function)   6 0 0   100%
src / platform_adapter / twitter_adapter.py TwitterAdapter.get_max_length   1 0 0   100%
src / platform_adapter / twitter_adapter.py TwitterAdapter.format_content   4 0 0   100%
src / platform_adapter / twitter_adapter.py TwitterAdapter._create_thread   13 0 0   100%
src / platform_adapter / twitter_adapter.py (no function)   7 0 0   100%
src / utils / __init__.py (no function)   3 0 0   100%
src / utils / config.py Settings.from_yaml   9 2 0   78%
src / utils / config.py _flatten_config   7 1 0   86%
src / utils / config.py load_settings   6 2 0   67%
src / utils / config.py (no function)   21 0 0   100%
src / utils / logger.py get_logger   17 0 0   100%
src / utils / logger.py (no function)   5 0 0   100%
src / utils / rate_limiter.py TokenBucketRateLimiter.__new__   3 0 0   100%
src / utils / rate_limiter.py TokenBucketRateLimiter.__init__   7 0 0   100%
src / utils / rate_limiter.py TokenBucketRateLimiter.acquire   12 1 0   92%
src / utils / rate_limiter.py TokenBucketRateLimiter.__aenter__   2 0 0   100%
src / utils / rate_limiter.py TokenBucketRateLimiter.__aexit__   1 0 0   100%
src / utils / rate_limiter.py TokenBucketRateLimiter.get_status   1 1 0   0%
src / utils / rate_limiter.py (no function)   17 0 0   100%
src / utils / validators.py validate_keyword   20 1 0   95%
src / utils / validators.py validate_url   12 0 0   100%
src / utils / validators.py validate_content_length   8 0 0   100%
src / utils / validators.py validate_platform   8 0 0   100%
src / utils / validators.py (no function)   7 0 0   100%
Total     597 30 6   95%

No items found using the specified filter.