Generated by: prefact v0.1.30 Generated on: 2026-03-31T09:35:12.106715 Total issues: 222 active, 0 completed
- code2docs/init.py:11 - Relative import (level=1): '.config'
- code2docs/init.py:24 - Relative import (level=1): '.generators.readme_gen'
- code2docs/init.py:27 - Relative import (level=1): '.generators'
- code2docs/analyzers/init.py:3 - Relative import (level=1): '.project_scanner'
- code2docs/analyzers/init.py:4 - Relative import (level=1): '.endpoint_detector'
- code2docs/analyzers/init.py:5 - Relative import (level=1): '.docstring_extractor'
- code2docs/main.py:3 - Relative import (level=1): '.cli'
- code2docs/main.py:5 - module execution block
- code2docs/analyzers/dependency_scanner.py:6 - Unused Optional imported from typing
- code2docs/analyzers/dependency_scanner.py:6 - Unused import: 'Optional'
- code2docs/analyzers/dependency_scanner.py:12 - Duplicate import: 'tomllib' (first at line 9)
- code2docs/analyzers/endpoint_detector.py:107 - String concatenation can be converted to f-string
- code2docs/analyzers/endpoint_detector.py:3 - Unused import ast
- code2docs/analyzers/endpoint_detector.py:7 - Unused Dict imported from typing
- code2docs/analyzers/endpoint_detector.py:3 - Unused import: 'ast'
- code2docs/analyzers/docstring_extractor.py:139 - String concatenation can be converted to f-string
- code2docs/analyzers/docstring_extractor.py:136 - String concatenation can be converted to f-string
- code2docs/analyzers/docstring_extractor.py:137 - String concatenation can be converted to f-string
- code2docs/analyzers/docstring_extractor.py:3 - Unused import ast
- code2docs/analyzers/docstring_extractor.py:5 - Unused Path imported from pathlib
- code2docs/analyzers/docstring_extractor.py:6 - Unused Tuple imported from typing
- code2docs/analyzers/project_scanner.py:8 - Relative import (level=2): '..config'
- code2docs/analyzers/project_scanner.py:3 - Unused Path imported from pathlib
- code2docs/analyzers/project_scanner.py:6 - Unused FAST_CONFIG imported from code2llm.api
- code2docs/analyzers/project_scanner.py:3 - Unused import: 'Path'
- code2docs/base.py:10 - Relative import (level=1): '.config'
- code2docs/examples/advanced_usage.py:8 - Unused Path imported from pathlib
- code2docs/examples/advanced_usage.py:8 - Unused import: 'Path'
- code2docs/examples/quickstart.py:8 - Unused Path imported from pathlib
- code2docs/examples/quickstart.py:11 - Unused analyze_and_document imported from code2docs
- code2docs/examples/quickstart.py:8 - Unused import: 'Path'
- code2docs/config.py:7 - Unused Dict imported from typing
- code2docs/config.py:7 - Unused Optional imported from typing
- code2docs/config.py:7 - Unused import: 'Dict'
- code2docs/config.py:42 - Example class in production code
- code2docs/cli.py:12 - Relative import (level=1): '.config'
- code2docs/cli.py:145 - Relative import (level=1): '.analyzers.project_scanner'
- code2docs/cli.py:146 - Relative import (level=1): '.base'
- code2docs/cli.py:29 - Function 'main' missing return type (suggested: -> None)
- code2docs/cli.py:44 - Function 'generate' missing return type (suggested: -> None)
- code2docs/cli.py:68 - Function 'sync' missing return type (suggested: -> None)
- code2docs/cli.py:24 - String concatenation can be converted to f-string
- code2docs/cli.py:10 - Unused Panel imported from rich.panel
- code2docs/cli.py:10 - Unused import: 'Panel'
- code2docs/cli.py:231 - Duplicate import: 'ProjectScanner' (first at line 145)
- code2docs/cli.py:301 - Duplicate import: 'ProjectScanner' (first at line 145)
- code2docs/cli.py:302 - Duplicate import: 'GenerateContext' (first at line 146)
- code2docs/cli.py:229 - Magic number: 80 - use named constant
- code2docs/cli.py:108 - Magic number: 80 - use named constant
- code2docs/cli.py:29 - standalone main function
- code2docs/formatters/init.py:3 - Relative import (level=1): '.markdown'
- code2docs/formatters/init.py:4 - Relative import (level=1): '.badges'
- code2docs/formatters/init.py:5 - Relative import (level=1): '.toc'
- code2docs/formatters/markdown.py:54 - String concatenation can be converted to f-string
- code2docs/formatters/markdown.py:55 - String concatenation can be converted to f-string
- code2docs/formatters/markdown.py:3 - Unused Dict imported from typing
- code2docs/formatters/markdown.py:3 - Unused Optional imported from typing
- code2docs/formatters/markdown.py:3 - Unused import: 'Dict'
- code2docs/generators/init.py:3 - Relative import (level=1): '.readme_gen'
- code2docs/generators/init.py:4 - Relative import (level=1): '.api_reference_gen'
- code2docs/generators/init.py:5 - Relative import (level=1): '.module_docs_gen'
- code2docs/generators/init.py:35 - Function 'generate_docs' missing return type (suggested: -> Any)
- code2docs/generators/init.py:6 - Suspicious import: from examples_gen
- code2docs/formatters/toc.py:7 - LLM-style docstring in generate_toc
- code2docs/generators/_registry_adapters.py:8 - Relative import (level=2): '..base'
- code2docs/generators/_registry_adapters.py:9 - Relative import (level=2): '..config'
- code2docs/generators/_registry_adapters.py:20 - Relative import (level=1): '.readme_gen'
- code2docs/generators/_registry_adapters.py:25 - String concatenation can be converted to f-string
- code2docs/generators/_registry_adapters.py:263 - String concatenation can be converted to f-string
- code2docs/generators/_registry_adapters.py:9 - Unused Code2DocsConfig imported from config
- code2docs/generators/_registry_adapters.py:10 - Unused AnalysisResult imported from code2llm.api
- code2docs/generators/_registry_adapters.py:9 - Unused import: 'Code2DocsConfig'
- code2docs/generators/_registry_adapters.py:144 - Suspicious import: from examples_gen
- code2docs/generators/_registry_adapters.py:25 - Magic number in comparison: 500
- code2docs/generators/_registry_adapters.py:263 - Magic number in comparison: 500
- code2docs/generators/_registry_adapters.py:25 - Magic number: 500 - use named constant
- code2docs/generators/_registry_adapters.py:137 - Example class in production code
- code2docs/generators/_source_links.py:8 - Relative import (level=2): '..config'
- code2docs/generators/architecture_gen.py:8 - Relative import (level=2): '..config'
- code2docs/generators/architecture_gen.py:9 - Relative import (level=2): '..llm_helper'
- code2docs/generators/architecture_gen.py:135 - String concatenation can be converted to f-string
- code2docs/generators/architecture_gen.py:6 - Unused ModuleInfo imported from code2llm.api
- code2docs/generators/architecture_gen.py:6 - Unused import: 'ModuleInfo'
- code2docs/generators/architecture_gen.py:214 - Magic number: 15 - use named constant
- code2docs/generators/api_reference_gen.py:9 - Relative import (level=2): '..config'
- code2docs/generators/api_reference_gen.py:10 - Relative import (level=1): '._source_links'
- code2docs/generators/api_reference_gen.py:76 - String concatenation can be converted to f-string
- code2docs/generators/api_reference_gen.py:81 - String concatenation can be converted to f-string
- code2docs/generators/api_reference_gen.py:94 - String concatenation can be converted to f-string
- code2docs/generators/api_reference_gen.py:5 - Unused Optional imported from typing
- code2docs/generators/api_reference_gen.py:5 - Unused import: 'Optional'
- code2docs/generators/api_changelog_gen.py:10 - Relative import (level=2): '..config'
- code2docs/generators/api_changelog_gen.py:4 - Unused field imported from dataclasses
- code2docs/generators/api_changelog_gen.py:6 - Unused Tuple imported from typing
- code2docs/generators/api_changelog_gen.py:4 - Unused import: 'field'
- code2docs/generators/changelog_gen.py:10 - Relative import (level=2): '..config'
- code2docs/generators/changelog_gen.py:4 - Unused field imported from dataclasses
- code2docs/generators/changelog_gen.py:4 - Unused import: 'field'
- code2docs/generators/code2llm_gen.py:9 - Relative import (level=2): '..config'
- code2docs/generators/code2llm_gen.py:199 - Relative import (level=2): '..analyzers.project_scanner'
- code2docs/generators/code2llm_gen.py:150 - String concatenation can be converted to f-string
- code2docs/generators/code2llm_gen.py:5 - Unused Set imported from typing
- code2docs/generators/code2llm_gen.py:5 - Unused import: 'Set'
- code2docs/generators/code2llm_gen.py:188 - LLM-style docstring in generate_code2llm_analysis
- code2docs/generators/code2llm_gen.py:79 - LLM-style docstring in generate_all
- code2docs/generators/config_docs_gen.py:8 - Relative import (level=2): '..config'
- code2docs/generators/config_docs_gen.py:4 - Unused Any imported from typing
- code2docs/generators/config_docs_gen.py:4 - Unused import: 'Any'
- code2docs/generators/contributing_gen.py:7 - Relative import (level=2): '..config'
- code2docs/generators/contributing_gen.py:8 - Relative import (level=2): '..analyzers.dependency_scanner'
- code2docs/generators/contributing_gen.py:3 - Unused List imported from typing
- code2docs/generators/contributing_gen.py:3 - Unused import: 'List'
- code2docs/generators/coverage_gen.py:7 - Relative import (level=2): '..config'
- code2docs/generators/coverage_gen.py:8 - Relative import (level=2): '..analyzers.docstring_extractor'
- code2docs/generators/coverage_gen.py:64 - String concatenation can be converted to f-string
- code2docs/generators/coverage_gen.py:67 - String concatenation can be converted to f-string
- code2docs/generators/coverage_gen.py:41 - Magic number in comparison: 80
- code2docs/generators/coverage_gen.py:41 - Magic number: 80 - use named constant
- code2docs/generators/coverage_gen.py:41 - Magic number in comparison: 50
- code2docs/generators/depgraph_gen.py:9 - Relative import (level=2): '..config'
- code2docs/generators/depgraph_gen.py:104 - String concatenation can be converted to f-string
- code2docs/generators/depgraph_gen.py:105 - String concatenation can be converted to f-string
- code2docs/generators/depgraph_gen.py:7 - Unused ModuleInfo imported from code2llm.api
- code2docs/generators/depgraph_gen.py:7 - Unused import: 'ModuleInfo'
- code2docs/generators/mkdocs_gen.py:10 - Relative import (level=2): '..config'
- code2docs/generators/examples_gen.py:8 - Relative import (level=2): '..config'
- code2docs/generators/examples_gen.py:159 - String concatenation can be converted to f-string
- code2docs/generators/examples_gen.py:161 - String concatenation can be converted to f-string
- code2docs/generators/examples_gen.py:145 - String concatenation can be converted to f-string
- code2docs/generators/examples_gen.py:159 - Magic number: 50 - use named constant
- code2docs/generators/examples_gen.py:161 - Magic number: 50 - use named constant
- code2docs/generators/examples_gen.py:145 - Magic number: 50 - use named constant
- code2docs/generators/examples_gen.py:54 - Example class in production code
- code2docs/generators/getting_started_gen.py:7 - Relative import (level=2): '..config'
- code2docs/generators/getting_started_gen.py:8 - Relative import (level=2): '..analyzers.dependency_scanner'
- code2docs/generators/getting_started_gen.py:9 - Relative import (level=2): '..llm_helper'
- code2docs/generators/getting_started_gen.py:3 - Unused Optional imported from typing
- code2docs/generators/getting_started_gen.py:3 - Unused import: 'Optional'
- code2docs/generators/module_docs_gen.py:10 - Relative import (level=2): '..config'
- code2docs/generators/module_docs_gen.py:11 - Relative import (level=1): '._source_links'
- code2docs/generators/org_readme_gen.py:8 - Relative import (level=2): '..config'
- code2docs/generators/org_readme_gen.py:9 - Relative import (level=2): '..analyzers.project_scanner'
- code2docs/generators/org_readme_gen.py:141 - String concatenation can be converted to f-string
- code2docs/generators/org_readme_gen.py:144 - String concatenation can be converted to f-string
- code2docs/generators/org_readme_gen.py:120 - String concatenation can be converted to f-string
- code2docs/generators/org_readme_gen.py:4 - Unused List imported from typing
- code2docs/generators/org_readme_gen.py:4 - Unused import: 'List'
- code2docs/generators/org_readme_gen.py:154 - Duplicate import: 'tomllib' (first at line 92)
- code2docs/generators/org_readme_gen.py:173 - Duplicate import: 'tomllib' (first at line 92)
- code2docs/generators/org_readme_gen.py:132 - Magic number: 300 - use named constant
- code2docs/generators/org_readme_gen.py:143 - Magic number in comparison: 20
- code2docs/generators/org_readme_gen.py:143 - Magic number: 20 - use named constant
- code2docs/generators/readme_gen.py:11 - Relative import (level=2): '..config'
- code2docs/generators/readme_gen.py:12 - Relative import (level=2): '..analyzers.dependency_scanner'
- code2docs/generators/readme_gen.py:13 - Relative import (level=2): '..analyzers.endpoint_detector'
- code2docs/generators/readme_gen.py:356 - String concatenation can be converted to f-string
- code2docs/generators/readme_gen.py:451 - String concatenation can be converted to f-string
- code2docs/generators/readme_gen.py:9 - Unused FunctionInfo imported from code2llm.api
- code2docs/generators/readme_gen.py:9 - Unused ClassInfo imported from code2llm.api
- code2docs/generators/readme_gen.py:15 - Unused generate_toc imported from formatters.toc
- code2docs/generators/readme_gen.py:298 - Duplicate import: 'tomllib' (first at line 194)
- code2docs/generators/readme_gen.py:247 - Duplicate import: 'subprocess' (first at line 229)
- code2docs/generators/readme_gen.py:407 - Magic number: 20 - use named constant
- code2docs/generators/readme_gen.py:411 - Magic number: 30 - use named constant
- code2docs/generators/readme_gen.py:157 - Magic number: 15 - use named constant
- code2docs/generators/readme_gen.py:216 - boilerplate copyright
- code2docs/sync/init.py:3 - Relative import (level=1): '.differ'
- code2docs/sync/init.py:4 - Relative import (level=1): '.updater'
- code2docs/registry.py:7 - Relative import (level=1): '.base'
- code2docs/registry.py:3 - Unused Dict imported from typing
- code2docs/registry.py:3 - Unused Optional imported from typing
- code2docs/registry.py:3 - Unused Type imported from typing
- code2docs/sync/differ.py:9 - Relative import (level=2): '..config'
- code2docs/sync/differ.py:5 - Unused field imported from dataclasses
- code2docs/sync/differ.py:5 - Unused import: 'field'
- code2docs/sync/updater.py:6 - Relative import (level=2): '..config'
- code2docs/sync/updater.py:7 - Relative import (level=1): '.differ'
- code2docs/sync/updater.py:18 - Relative import (level=2): '..analyzers.project_scanner'
- code2docs/sync/watcher.py:7 - Relative import (level=2): '..config'
- code2docs/sync/watcher.py:52 - Relative import (level=1): '.differ'
- code2docs/sync/watcher.py:53 - Relative import (level=1): '.updater'
- code2docs/sync/watcher.py:34 - Function 'on_modified' missing return type (suggested: -> None)
- docs/examples/advanced_usage.py:24 - Invalid assignment target
- docs/examples/quickstart.py:8 - Unused Path imported from pathlib
- docs/examples/quickstart.py:11 - Unused analyze_and_document imported from code2docs
- docs/examples/quickstart.py:8 - Unused import: 'Path'
- examples/01_cli_usage.py:1 - High comment-to-code ratio: 27/23
- examples/01_cli_usage.py:67 - module execution block
- examples/02_configuration.py:151 - module execution block
- examples/03_programmatic_api.py:7 - Unused Path imported from pathlib
- examples/03_programmatic_api.py:7 - Unused import: 'Path'
- examples/03_programmatic_api.py:154 - module execution block
- examples/04_sync_and_watch.py:144 - Function 'signal_handler' missing return type (suggested: -> None)
- examples/04_sync_and_watch.py:74 - Duplicate import: 'ChangeInfo' (first at line 9)
- examples/04_sync_and_watch.py:91 - LLM-style docstring in watch_and_auto_regenerate
- examples/04_sync_and_watch.py:207 - module execution block
- examples/05_custom_generators.py:79 - String concatenation can be converted to f-string
- examples/05_custom_generators.py:170 - String concatenation can be converted to f-string
- examples/05_custom_generators.py:171 - String concatenation can be converted to f-string
- examples/05_custom_generators.py:8 - Unused dataclass imported from dataclasses
- examples/05_custom_generators.py:8 - Unused import: 'dataclass'
- examples/05_custom_generators.py:219 - module execution block
- examples/06_formatters.py:209 - String concatenation can be converted to f-string
- examples/06_formatters.py:121 - Magic number: 85 - use named constant
- examples/06_formatters.py:123 - Magic number: 5000 - use named constant
- examples/06_formatters.py:197 - Magic number: 90 - use named constant
- examples/06_formatters.py:234 - module execution block
- examples/advanced_usage.py:8 - Unused Path imported from pathlib
- examples/advanced_usage.py:8 - Unused import: 'Path'
- examples/07_web_frameworks.py:198 - String concatenation can be converted to f-string
- examples/07_web_frameworks.py:211 - module execution block
- examples/class_examples.py:6 - Suspicious import: from code2docs.generators.examples_gen
- examples/entry_points.py:20 - Duplicate import: code2docs.formatters.markdown.init
- examples/entry_points.py:20 - Duplicate import: 'init' (first at line 9)
- examples/entry_points.py:1 - High comment-to-code ratio: 8/11
- examples/basic_usage.py:4 - Unused MarkdownFormatter imported from code2docs.formatters.markdown
- examples/basic_usage.py:5 - Unused ReadmeGenerator imported from code2docs.generators.readme_gen
- examples/basic_usage.py:6 - Unused ChangeInfo imported from code2docs.sync.differ
- examples/quickstart.py:8 - Unused Path imported from pathlib
- examples/quickstart.py:11 - Unused analyze_and_document imported from code2docs
- examples/quickstart.py:8 - Unused import: 'Path'
- code2docs/llm_helper.py:10 - Relative import (level=1): '.config'
To execute all tasks, run: prefact -a --execute-todos