diff --git a/.gitignore b/.gitignore index 1c3ddd5..8f801ab 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ +# Ignore code quality reports +*.csv +*.txt + # Ignore specific folders pyrasbt/ alpyproj/ @@ -54,4 +58,165 @@ docs/_build/ *.egg-info/ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/latest/usage/project/#working-with-version-control +.pdm.toml +.pdm-python +.pdm-build/ + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ diff --git a/README.md b/README.md index 7b2ceb7..36c4b62 100644 --- a/README.md +++ b/README.md @@ -39,8 +39,11 @@ A comprehensive Python code quality analysis tool that detects code smells, arch ### Install from source ```bash -Download the repository +# Download the repository cd "the_repository" +# Activate the virtual environment +python3 -m venv venv +# Instal the dependencies pip install -e . ``` diff --git a/code_analysis.log b/code_analysis.log deleted file mode 100644 index 0f8ee40..0000000 --- a/code_analysis.log +++ /dev/null @@ -1,536 +0,0 @@ -2024-11-27 10:23:26,101 - code_quality_analyzer.main - INFO - Loading configuration from: code_quality_config.yaml -2024-11-27 10:23:26,128 - code_quality_analyzer.config_handler - INFO - Loading configuration from: code_quality_config.yaml -2024-11-27 10:23:26,129 - code_quality_analyzer.config_handler - INFO - Loaded thresholds: {'code_smells': {'LONG_METHOD_LINES': 45, 'LARGE_CLASS_METHODS': 15, 'PRIMITIVE_OBSESSION_COUNT': 4, 'LONG_PARAMETER_LIST': 5, 'COMPLEX_CONDITIONAL': 3, 'DIVERGENT_CHANGE_PREFIXES': 4, 'SHOTGUN_SURGERY_CALLS': 5, 'EXCESSIVE_COMMENTS_RATIO': 0.3, 'LAZY_CLASS_METHODS': 4, 'FEATURE_ENVY_CALLS': 3, 'INAPPROPRIATE_INTIMACY_SHARED': 3, 'MESSAGE_CHAIN_LENGTH': 3, 'DATA_CLUMPS_THRESHOLD': 6, 'TEMPORARY_FIELD_THRESHOLD': 3, 'ALTERNATIVE_CLASSES_THRESHOLD': 3, 'DUPLICATE_CODE_THRESHOLD': 15, 'DEAD_CODE_THRESHOLD': 3, 'SPECULATIVE_GENERALITY_THRESHOLD': 4, 'MIDDLE_MAN_RATIO': 0.5, 'DIVERGENT_CHANGE_METHODS': 5, 'SHOTGUN_SURGERY_CONTEXTS': 3, 'DUPLICATE_CODE_MIN_LINES': 5, 'LARGE_COMMENT_BLOCKS': 5}, 'architectural_smells': {'GOD_OBJECT_FUNCTIONS': 20, 'UNSTABLE_DEPENDENCY_THRESHOLD': 0.8, 'HUB_LIKE_DEPENDENCY_RATIO': 0.3, 'REDUNDANT_ABSTRACTION_SIMILARITY': 0.7, 'IMPROPER_API_USAGE_RATIO': 0.7, 'CYCLIC_DEPENDENCY_MAX_LENGTH': 3}, 'structural_smells': {'NOM_THRESHOLD': 10, 'WMPC1_THRESHOLD': 20, 'WMPC2_THRESHOLD': 20, 'SIZE2_THRESHOLD': 15, 'WAC_THRESHOLD': 10, 'LCOM_THRESHOLD': 10, 'RFC_THRESHOLD': 20, 'NOCC_THRESHOLD': 10, 'DIT_THRESHOLD': 3, 'LOC_THRESHOLD': 150, 'MPC_THRESHOLD': 25, 'CBO_THRESHOLD': 5, 'NOC_THRESHOLD': 7, 'CYCLOMATIC_COMPLEXITY_THRESHOLD': 10, 'MAX_FANOUT': 15, 'MAX_FANIN': 15, 'MAX_FILE_LENGTH': 250, 'MAX_BRANCHES': 10, 'MAX_NESTING_DEPTH': 4}} -2024-11-27 10:23:26,523 - code_quality_analyzer.code_smell_detector - ERROR - Error in detect_speculative_generality analyzing src\code_quality_analyzer\architectural_smell_detector.py: 'UNUSED_PARAMETERS_THRESHOLD' -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 91, in detect_smells - detect_method(module, file_path) - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 868, in detect_speculative_generality - len(unused_params) >= self.thresholds["UNUSED_PARAMETERS_THRESHOLD"]): - ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -KeyError: 'UNUSED_PARAMETERS_THRESHOLD' -2024-11-27 10:23:26,548 - code_quality_analyzer.code_smell_detector - ERROR - Unexpected error analyzing src\code_quality_analyzer\architectural_smell_detector.py: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\architectural_smell_detector.py -Line: None -Function: detect_speculative_generality -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 91, in detect_smells - detect_method(module, file_path) - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 868, in detect_speculative_generality - len(unused_params) >= self.thresholds["UNUSED_PARAMETERS_THRESHOLD"]): - ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -KeyError: 'UNUSED_PARAMETERS_THRESHOLD' - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 97, in detect_smells - raise CodeAnalysisError( -code_quality_analyzer.exceptions.CodeAnalysisError: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\architectural_smell_detector.py -Line: None -Function: detect_speculative_generality -2024-11-27 10:23:26,550 - code_quality_analyzer.main - ERROR - Error analyzing src\code_quality_analyzer\architectural_smell_detector.py: Unexpected error: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\architectural_smell_detector.py -Line: None -Function: detect_speculative_generality -File: src\code_quality_analyzer\architectural_smell_detector.py -Line: None -Function: None -2024-11-27 10:23:26,638 - code_quality_analyzer.code_smell_detector - ERROR - Error in detect_speculative_generality analyzing src\code_quality_analyzer\code_smell_detector.py: 'UNUSED_PARAMETERS_THRESHOLD' -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 91, in detect_smells - detect_method(module, file_path) - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 868, in detect_speculative_generality - len(unused_params) >= self.thresholds["UNUSED_PARAMETERS_THRESHOLD"]): - ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -KeyError: 'UNUSED_PARAMETERS_THRESHOLD' -2024-11-27 10:23:26,641 - code_quality_analyzer.code_smell_detector - ERROR - Unexpected error analyzing src\code_quality_analyzer\code_smell_detector.py: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\code_smell_detector.py -Line: None -Function: detect_speculative_generality -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 91, in detect_smells - detect_method(module, file_path) - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 868, in detect_speculative_generality - len(unused_params) >= self.thresholds["UNUSED_PARAMETERS_THRESHOLD"]): - ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -KeyError: 'UNUSED_PARAMETERS_THRESHOLD' - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 97, in detect_smells - raise CodeAnalysisError( -code_quality_analyzer.exceptions.CodeAnalysisError: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\code_smell_detector.py -Line: None -Function: detect_speculative_generality -2024-11-27 10:23:26,644 - code_quality_analyzer.main - ERROR - Error analyzing src\code_quality_analyzer\code_smell_detector.py: Unexpected error: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\code_smell_detector.py -Line: None -Function: detect_speculative_generality -File: src\code_quality_analyzer\code_smell_detector.py -Line: None -Function: None -2024-11-27 10:23:26,653 - code_quality_analyzer.code_smell_detector - ERROR - Error in detect_speculative_generality analyzing src\code_quality_analyzer\config_handler.py: 'UNUSED_PARAMETERS_THRESHOLD' -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 91, in detect_smells - detect_method(module, file_path) - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 868, in detect_speculative_generality - len(unused_params) >= self.thresholds["UNUSED_PARAMETERS_THRESHOLD"]): - ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -KeyError: 'UNUSED_PARAMETERS_THRESHOLD' -2024-11-27 10:23:26,654 - code_quality_analyzer.code_smell_detector - ERROR - Unexpected error analyzing src\code_quality_analyzer\config_handler.py: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\config_handler.py -Line: None -Function: detect_speculative_generality -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 91, in detect_smells - detect_method(module, file_path) - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 868, in detect_speculative_generality - len(unused_params) >= self.thresholds["UNUSED_PARAMETERS_THRESHOLD"]): - ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -KeyError: 'UNUSED_PARAMETERS_THRESHOLD' - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 97, in detect_smells - raise CodeAnalysisError( -code_quality_analyzer.exceptions.CodeAnalysisError: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\config_handler.py -Line: None -Function: detect_speculative_generality -2024-11-27 10:23:26,660 - code_quality_analyzer.main - ERROR - Error analyzing src\code_quality_analyzer\config_handler.py: Unexpected error: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\config_handler.py -Line: None -Function: detect_speculative_generality -File: src\code_quality_analyzer\config_handler.py -Line: None -Function: None -2024-11-27 10:23:26,664 - code_quality_analyzer.code_smell_detector - ERROR - Error in detect_speculative_generality analyzing src\code_quality_analyzer\exceptions.py: 'UNUSED_PARAMETERS_THRESHOLD' -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 91, in detect_smells - detect_method(module, file_path) - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 868, in detect_speculative_generality - len(unused_params) >= self.thresholds["UNUSED_PARAMETERS_THRESHOLD"]): - ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -KeyError: 'UNUSED_PARAMETERS_THRESHOLD' -2024-11-27 10:23:26,667 - code_quality_analyzer.code_smell_detector - ERROR - Unexpected error analyzing src\code_quality_analyzer\exceptions.py: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\exceptions.py -Line: None -Function: detect_speculative_generality -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 91, in detect_smells - detect_method(module, file_path) - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 868, in detect_speculative_generality - len(unused_params) >= self.thresholds["UNUSED_PARAMETERS_THRESHOLD"]): - ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -KeyError: 'UNUSED_PARAMETERS_THRESHOLD' - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 97, in detect_smells - raise CodeAnalysisError( -code_quality_analyzer.exceptions.CodeAnalysisError: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\exceptions.py -Line: None -Function: detect_speculative_generality -2024-11-27 10:23:26,669 - code_quality_analyzer.main - ERROR - Error analyzing src\code_quality_analyzer\exceptions.py: Unexpected error: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\exceptions.py -Line: None -Function: detect_speculative_generality -File: src\code_quality_analyzer\exceptions.py -Line: None -Function: None -2024-11-27 10:23:26,827 - code_quality_analyzer.code_smell_detector - ERROR - Error in detect_speculative_generality analyzing src\code_quality_analyzer\structural_smell_detector.py: 'UNUSED_PARAMETERS_THRESHOLD' -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 91, in detect_smells - detect_method(module, file_path) - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 868, in detect_speculative_generality - len(unused_params) >= self.thresholds["UNUSED_PARAMETERS_THRESHOLD"]): - ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -KeyError: 'UNUSED_PARAMETERS_THRESHOLD' -2024-11-27 10:23:26,829 - code_quality_analyzer.code_smell_detector - ERROR - Unexpected error analyzing src\code_quality_analyzer\structural_smell_detector.py: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\structural_smell_detector.py -Line: None -Function: detect_speculative_generality -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 91, in detect_smells - detect_method(module, file_path) - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 868, in detect_speculative_generality - len(unused_params) >= self.thresholds["UNUSED_PARAMETERS_THRESHOLD"]): - ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -KeyError: 'UNUSED_PARAMETERS_THRESHOLD' - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 97, in detect_smells - raise CodeAnalysisError( -code_quality_analyzer.exceptions.CodeAnalysisError: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\structural_smell_detector.py -Line: None -Function: detect_speculative_generality -2024-11-27 10:23:26,836 - code_quality_analyzer.main - ERROR - Error analyzing src\code_quality_analyzer\structural_smell_detector.py: Unexpected error: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\structural_smell_detector.py -Line: None -Function: detect_speculative_generality -File: src\code_quality_analyzer\structural_smell_detector.py -Line: None -Function: None -2024-11-27 10:23:26,854 - code_quality_analyzer.main - WARNING - Errors encountered during code smell analysis: -2024-11-27 10:23:26,855 - code_quality_analyzer.main - WARNING - -File: src\code_quality_analyzer\architectural_smell_detector.py -Error Type: CodeAnalysisError -Error Message: Unexpected error: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\architectural_smell_detector.py -Line: None -Function: detect_speculative_generality -File: src\code_quality_analyzer\architectural_smell_detector.py -Line: None -Function: None -Detector: CodeSmellDetector -Function: None - -2024-11-27 10:23:26,857 - code_quality_analyzer.main - WARNING - -File: src\code_quality_analyzer\code_smell_detector.py -Error Type: CodeAnalysisError -Error Message: Unexpected error: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\code_smell_detector.py -Line: None -Function: detect_speculative_generality -File: src\code_quality_analyzer\code_smell_detector.py -Line: None -Function: None -Detector: CodeSmellDetector -Function: None - -2024-11-27 10:23:26,860 - code_quality_analyzer.main - WARNING - -File: src\code_quality_analyzer\config_handler.py -Error Type: CodeAnalysisError -Error Message: Unexpected error: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\config_handler.py -Line: None -Function: detect_speculative_generality -File: src\code_quality_analyzer\config_handler.py -Line: None -Function: None -Detector: CodeSmellDetector -Function: None - -2024-11-27 10:23:26,861 - code_quality_analyzer.main - WARNING - -File: src\code_quality_analyzer\exceptions.py -Error Type: CodeAnalysisError -Error Message: Unexpected error: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\exceptions.py -Line: None -Function: detect_speculative_generality -File: src\code_quality_analyzer\exceptions.py -Line: None -Function: None -Detector: CodeSmellDetector -Function: None - -2024-11-27 10:23:26,863 - code_quality_analyzer.main - WARNING - -File: src\code_quality_analyzer\structural_smell_detector.py -Error Type: CodeAnalysisError -Error Message: Unexpected error: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\structural_smell_detector.py -Line: None -Function: detect_speculative_generality -File: src\code_quality_analyzer\structural_smell_detector.py -Line: None -Function: None -Detector: CodeSmellDetector -Function: None - -2024-11-27 10:23:26,865 - code_quality_analyzer.architectural_smell_detector - INFO - Analyzing directory structure: src -2024-11-27 10:23:28,370 - numexpr.utils - INFO - Note: NumExpr detected 20 cores but "NUMEXPR_MAX_THREADS" not set, so enforcing safe limit of 8. -2024-11-27 10:23:28,372 - numexpr.utils - INFO - NumExpr defaulting to 8 threads. -2024-11-27 10:23:29,360 - code_quality_analyzer.structural_smell_detector - INFO - Analyzing directory structure: src -2024-11-27 10:23:29,360 - code_quality_analyzer.structural_smell_detector - INFO - Starting analysis of directory: src -2024-11-27 10:23:29,642 - code_quality_analyzer.structural_smell_detector - INFO - -Analysis Summary: ----------------- -Files analyzed: 7 -Files with errors: 0 -Success rate: 100.0% - -2024-11-27 10:23:29,644 - code_quality_analyzer.structural_smell_detector - INFO - Detecting NOM smells with threshold: 10 -2024-11-27 10:23:29,645 - code_quality_analyzer.structural_smell_detector - INFO - Detected NOM smell in code_quality_analyzer.architectural_smell_detector.ArchitecturalSmellDetector: 15 methods -2024-11-27 10:23:29,646 - code_quality_analyzer.structural_smell_detector - INFO - Detected NOM smell in code_quality_analyzer.code_smell_detector.CodeSmellDetector: 24 methods -2024-11-27 10:23:29,647 - code_quality_analyzer.structural_smell_detector - INFO - Detected NOM smell in code_quality_analyzer.structural_smell_detector.StructuralSmellDetector: 34 methods -2024-11-27 10:23:29,836 - code_quality_analyzer.structural_smell_detector - INFO - Analysis complete. Found 94 structural smells. -2024-11-27 10:23:29,836 - code_quality_analyzer.main - INFO - Structural smell analysis complete. Found 94 smells. -2024-11-27 10:23:29,843 - code_quality_analyzer.main - INFO - CSV report generated and saved to code_quality_report.csv -2024-11-27 16:05:33,733 - code_quality_analyzer.main - INFO - Loading configuration from: code_quality_config.yaml -2024-11-27 16:05:33,760 - code_quality_analyzer.config_handler - INFO - Loading configuration from: code_quality_config.yaml -2024-11-27 16:05:33,762 - code_quality_analyzer.config_handler - INFO - Loaded thresholds: {'code_smells': {'LONG_METHOD_LINES': 45, 'LARGE_CLASS_METHODS': 15, 'PRIMITIVE_OBSESSION_COUNT': 4, 'LONG_PARAMETER_LIST': 5, 'COMPLEX_CONDITIONAL': 3, 'DIVERGENT_CHANGE_PREFIXES': 4, 'SHOTGUN_SURGERY_CALLS': 5, 'EXCESSIVE_COMMENTS_RATIO': 0.3, 'LAZY_CLASS_METHODS': 4, 'FEATURE_ENVY_CALLS': 3, 'INAPPROPRIATE_INTIMACY_SHARED': 3, 'MESSAGE_CHAIN_LENGTH': 3, 'DATA_CLUMPS_THRESHOLD': 6, 'TEMPORARY_FIELD_THRESHOLD': 3, 'ALTERNATIVE_CLASSES_THRESHOLD': 3, 'DUPLICATE_CODE_THRESHOLD': 15, 'DEAD_CODE_THRESHOLD': 3, 'SPECULATIVE_GENERALITY_THRESHOLD': 4, 'MIDDLE_MAN_RATIO': 0.5, 'DIVERGENT_CHANGE_METHODS': 5, 'SHOTGUN_SURGERY_CONTEXTS': 3, 'DUPLICATE_CODE_MIN_LINES': 5, 'LARGE_COMMENT_BLOCKS': 5}, 'architectural_smells': {'GOD_OBJECT_FUNCTIONS': 20, 'UNSTABLE_DEPENDENCY_THRESHOLD': 0.8, 'HUB_LIKE_DEPENDENCY_RATIO': 0.3, 'REDUNDANT_ABSTRACTION_SIMILARITY': 0.7, 'IMPROPER_API_USAGE_RATIO': 0.7, 'CYCLIC_DEPENDENCY_MAX_LENGTH': 3}, 'structural_smells': {'NOM_THRESHOLD': 10, 'WMPC1_THRESHOLD': 20, 'WMPC2_THRESHOLD': 20, 'SIZE2_THRESHOLD': 15, 'WAC_THRESHOLD': 10, 'LCOM_THRESHOLD': 10, 'RFC_THRESHOLD': 20, 'NOCC_THRESHOLD': 10, 'DIT_THRESHOLD': 3, 'LOC_THRESHOLD': 150, 'MPC_THRESHOLD': 25, 'CBO_THRESHOLD': 5, 'NOC_THRESHOLD': 7, 'CYCLOMATIC_COMPLEXITY_THRESHOLD': 10, 'MAX_FANOUT': 15, 'MAX_FANIN': 15, 'MAX_FILE_LENGTH': 250, 'MAX_BRANCHES': 10, 'MAX_NESTING_DEPTH': 4}} -2024-11-27 16:05:34,253 - code_quality_analyzer.code_smell_detector - ERROR - Error in detect_speculative_generality analyzing src\code_quality_analyzer\architectural_smell_detector.py: 'UNUSED_PARAMETERS_THRESHOLD' -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 91, in detect_smells - detect_method(module, file_path) - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 868, in detect_speculative_generality - len(unused_params) >= self.thresholds["UNUSED_PARAMETERS_THRESHOLD"]): - ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -KeyError: 'UNUSED_PARAMETERS_THRESHOLD' -2024-11-27 16:05:34,289 - code_quality_analyzer.code_smell_detector - ERROR - Unexpected error analyzing src\code_quality_analyzer\architectural_smell_detector.py: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\architectural_smell_detector.py -Line: None -Function: detect_speculative_generality -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 91, in detect_smells - detect_method(module, file_path) - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 868, in detect_speculative_generality - len(unused_params) >= self.thresholds["UNUSED_PARAMETERS_THRESHOLD"]): - ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -KeyError: 'UNUSED_PARAMETERS_THRESHOLD' - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 97, in detect_smells - raise CodeAnalysisError( -code_quality_analyzer.exceptions.CodeAnalysisError: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\architectural_smell_detector.py -Line: None -Function: detect_speculative_generality -2024-11-27 16:05:34,300 - code_quality_analyzer.main - ERROR - Error analyzing src\code_quality_analyzer\architectural_smell_detector.py: Unexpected error: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\architectural_smell_detector.py -Line: None -Function: detect_speculative_generality -File: src\code_quality_analyzer\architectural_smell_detector.py -Line: None -Function: None -2024-11-27 16:05:34,429 - code_quality_analyzer.code_smell_detector - ERROR - Error in detect_speculative_generality analyzing src\code_quality_analyzer\code_smell_detector.py: 'UNUSED_PARAMETERS_THRESHOLD' -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 91, in detect_smells - detect_method(module, file_path) - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 868, in detect_speculative_generality - len(unused_params) >= self.thresholds["UNUSED_PARAMETERS_THRESHOLD"]): - ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -KeyError: 'UNUSED_PARAMETERS_THRESHOLD' -2024-11-27 16:05:34,432 - code_quality_analyzer.code_smell_detector - ERROR - Unexpected error analyzing src\code_quality_analyzer\code_smell_detector.py: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\code_smell_detector.py -Line: None -Function: detect_speculative_generality -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 91, in detect_smells - detect_method(module, file_path) - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 868, in detect_speculative_generality - len(unused_params) >= self.thresholds["UNUSED_PARAMETERS_THRESHOLD"]): - ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -KeyError: 'UNUSED_PARAMETERS_THRESHOLD' - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 97, in detect_smells - raise CodeAnalysisError( -code_quality_analyzer.exceptions.CodeAnalysisError: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\code_smell_detector.py -Line: None -Function: detect_speculative_generality -2024-11-27 16:05:34,438 - code_quality_analyzer.main - ERROR - Error analyzing src\code_quality_analyzer\code_smell_detector.py: Unexpected error: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\code_smell_detector.py -Line: None -Function: detect_speculative_generality -File: src\code_quality_analyzer\code_smell_detector.py -Line: None -Function: None -2024-11-27 16:05:34,450 - code_quality_analyzer.code_smell_detector - ERROR - Error in detect_speculative_generality analyzing src\code_quality_analyzer\config_handler.py: 'UNUSED_PARAMETERS_THRESHOLD' -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 91, in detect_smells - detect_method(module, file_path) - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 868, in detect_speculative_generality - len(unused_params) >= self.thresholds["UNUSED_PARAMETERS_THRESHOLD"]): - ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -KeyError: 'UNUSED_PARAMETERS_THRESHOLD' -2024-11-27 16:05:34,455 - code_quality_analyzer.code_smell_detector - ERROR - Unexpected error analyzing src\code_quality_analyzer\config_handler.py: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\config_handler.py -Line: None -Function: detect_speculative_generality -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 91, in detect_smells - detect_method(module, file_path) - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 868, in detect_speculative_generality - len(unused_params) >= self.thresholds["UNUSED_PARAMETERS_THRESHOLD"]): - ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -KeyError: 'UNUSED_PARAMETERS_THRESHOLD' - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 97, in detect_smells - raise CodeAnalysisError( -code_quality_analyzer.exceptions.CodeAnalysisError: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\config_handler.py -Line: None -Function: detect_speculative_generality -2024-11-27 16:05:34,461 - code_quality_analyzer.main - ERROR - Error analyzing src\code_quality_analyzer\config_handler.py: Unexpected error: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\config_handler.py -Line: None -Function: detect_speculative_generality -File: src\code_quality_analyzer\config_handler.py -Line: None -Function: None -2024-11-27 16:05:34,468 - code_quality_analyzer.code_smell_detector - ERROR - Error in detect_speculative_generality analyzing src\code_quality_analyzer\exceptions.py: 'UNUSED_PARAMETERS_THRESHOLD' -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 91, in detect_smells - detect_method(module, file_path) - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 868, in detect_speculative_generality - len(unused_params) >= self.thresholds["UNUSED_PARAMETERS_THRESHOLD"]): - ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -KeyError: 'UNUSED_PARAMETERS_THRESHOLD' -2024-11-27 16:05:34,472 - code_quality_analyzer.code_smell_detector - ERROR - Unexpected error analyzing src\code_quality_analyzer\exceptions.py: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\exceptions.py -Line: None -Function: detect_speculative_generality -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 91, in detect_smells - detect_method(module, file_path) - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 868, in detect_speculative_generality - len(unused_params) >= self.thresholds["UNUSED_PARAMETERS_THRESHOLD"]): - ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -KeyError: 'UNUSED_PARAMETERS_THRESHOLD' - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 97, in detect_smells - raise CodeAnalysisError( -code_quality_analyzer.exceptions.CodeAnalysisError: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\exceptions.py -Line: None -Function: detect_speculative_generality -2024-11-27 16:05:34,480 - code_quality_analyzer.main - ERROR - Error analyzing src\code_quality_analyzer\exceptions.py: Unexpected error: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\exceptions.py -Line: None -Function: detect_speculative_generality -File: src\code_quality_analyzer\exceptions.py -Line: None -Function: None -2024-11-27 16:05:34,638 - code_quality_analyzer.code_smell_detector - ERROR - Error in detect_speculative_generality analyzing src\code_quality_analyzer\structural_smell_detector.py: 'UNUSED_PARAMETERS_THRESHOLD' -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 91, in detect_smells - detect_method(module, file_path) - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 868, in detect_speculative_generality - len(unused_params) >= self.thresholds["UNUSED_PARAMETERS_THRESHOLD"]): - ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -KeyError: 'UNUSED_PARAMETERS_THRESHOLD' -2024-11-27 16:05:34,642 - code_quality_analyzer.code_smell_detector - ERROR - Unexpected error analyzing src\code_quality_analyzer\structural_smell_detector.py: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\structural_smell_detector.py -Line: None -Function: detect_speculative_generality -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 91, in detect_smells - detect_method(module, file_path) - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 868, in detect_speculative_generality - len(unused_params) >= self.thresholds["UNUSED_PARAMETERS_THRESHOLD"]): - ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -KeyError: 'UNUSED_PARAMETERS_THRESHOLD' - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "c:\users\karth\desktop\code_quality_analyser\python_smells_detector-90a0\src\code_quality_analyzer\code_smell_detector.py", line 97, in detect_smells - raise CodeAnalysisError( -code_quality_analyzer.exceptions.CodeAnalysisError: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\structural_smell_detector.py -Line: None -Function: detect_speculative_generality -2024-11-27 16:05:34,650 - code_quality_analyzer.main - ERROR - Error analyzing src\code_quality_analyzer\structural_smell_detector.py: Unexpected error: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\structural_smell_detector.py -Line: None -Function: detect_speculative_generality -File: src\code_quality_analyzer\structural_smell_detector.py -Line: None -Function: None -2024-11-27 16:05:34,657 - code_quality_analyzer.main - WARNING - Errors encountered during code smell analysis: -2024-11-27 16:05:34,657 - code_quality_analyzer.main - WARNING - -File: src\code_quality_analyzer\architectural_smell_detector.py -Error Type: CodeAnalysisError -Error Message: Unexpected error: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\architectural_smell_detector.py -Line: None -Function: detect_speculative_generality -File: src\code_quality_analyzer\architectural_smell_detector.py -Line: None -Function: None -Detector: CodeSmellDetector -Function: None - -2024-11-27 16:05:34,660 - code_quality_analyzer.main - WARNING - -File: src\code_quality_analyzer\code_smell_detector.py -Error Type: CodeAnalysisError -Error Message: Unexpected error: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\code_smell_detector.py -Line: None -Function: detect_speculative_generality -File: src\code_quality_analyzer\code_smell_detector.py -Line: None -Function: None -Detector: CodeSmellDetector -Function: None - -2024-11-27 16:05:34,663 - code_quality_analyzer.main - WARNING - -File: src\code_quality_analyzer\config_handler.py -Error Type: CodeAnalysisError -Error Message: Unexpected error: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\config_handler.py -Line: None -Function: detect_speculative_generality -File: src\code_quality_analyzer\config_handler.py -Line: None -Function: None -Detector: CodeSmellDetector -Function: None - -2024-11-27 16:05:34,666 - code_quality_analyzer.main - WARNING - -File: src\code_quality_analyzer\exceptions.py -Error Type: CodeAnalysisError -Error Message: Unexpected error: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\exceptions.py -Line: None -Function: detect_speculative_generality -File: src\code_quality_analyzer\exceptions.py -Line: None -Function: None -Detector: CodeSmellDetector -Function: None - -2024-11-27 16:05:34,671 - code_quality_analyzer.main - WARNING - -File: src\code_quality_analyzer\structural_smell_detector.py -Error Type: CodeAnalysisError -Error Message: Unexpected error: Error in detect_speculative_generality: 'UNUSED_PARAMETERS_THRESHOLD' -File: src\code_quality_analyzer\structural_smell_detector.py -Line: None -Function: detect_speculative_generality -File: src\code_quality_analyzer\structural_smell_detector.py -Line: None -Function: None -Detector: CodeSmellDetector -Function: None - -2024-11-27 16:05:34,675 - code_quality_analyzer.architectural_smell_detector - INFO - Analyzing directory structure: src -2024-11-27 16:05:36,025 - numexpr.utils - INFO - Note: NumExpr detected 20 cores but "NUMEXPR_MAX_THREADS" not set, so enforcing safe limit of 8. -2024-11-27 16:05:36,026 - numexpr.utils - INFO - NumExpr defaulting to 8 threads. -2024-11-27 16:05:37,057 - code_quality_analyzer.structural_smell_detector - INFO - Analyzing directory structure: src -2024-11-27 16:05:37,059 - code_quality_analyzer.structural_smell_detector - INFO - Starting analysis of directory: src -2024-11-27 16:05:37,266 - code_quality_analyzer.structural_smell_detector - INFO - -Analysis Summary: ----------------- -Files analyzed: 7 -Files with errors: 0 -Success rate: 100.0% - -2024-11-27 16:05:37,268 - code_quality_analyzer.structural_smell_detector - INFO - Detecting NOM smells with threshold: 10 -2024-11-27 16:05:37,269 - code_quality_analyzer.structural_smell_detector - INFO - Detected NOM smell in code_quality_analyzer.architectural_smell_detector.ArchitecturalSmellDetector: 15 methods -2024-11-27 16:05:37,270 - code_quality_analyzer.structural_smell_detector - INFO - Detected NOM smell in code_quality_analyzer.code_smell_detector.CodeSmellDetector: 24 methods -2024-11-27 16:05:37,271 - code_quality_analyzer.structural_smell_detector - INFO - Detected NOM smell in code_quality_analyzer.structural_smell_detector.StructuralSmellDetector: 34 methods -2024-11-27 16:05:37,435 - code_quality_analyzer.structural_smell_detector - INFO - Analysis complete. Found 94 structural smells. -2024-11-27 16:05:37,437 - code_quality_analyzer.main - INFO - Structural smell analysis complete. Found 94 smells. -2024-11-27 16:05:37,444 - code_quality_analyzer.main - INFO - CSV report generated and saved to code_quality_report.csv diff --git a/code_quality_config.yaml b/code_quality_config.yaml index 9a388e5..1db2731 100644 --- a/code_quality_config.yaml +++ b/code_quality_config.yaml @@ -71,6 +71,10 @@ code_smells: value: 4 explanation: "Abstract classes with no concrete implementations may indicate speculative generality." + UNUSED_PARAMETERS_THRESHOLD: + value: 2 + explanation: "The minimun allowed number of unused parameters" + MIDDLE_MAN_RATIO: value: 0.5 explanation: "Classes where more than this ratio of methods simply delegate to another class may be middle men." diff --git a/setup.py b/setup.py index c711451..6ed6896 100644 --- a/setup.py +++ b/setup.py @@ -10,6 +10,7 @@ "networkx", "pyyaml", "pytest", + "tqdm" ], entry_points={ "console_scripts": [ diff --git a/src/code_quality_analyzer/__pycache__/__init__.cpython-311.pyc b/src/code_quality_analyzer/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 4f5ac2c..0000000 Binary files a/src/code_quality_analyzer/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/src/code_quality_analyzer/__pycache__/architectural_smell_detector.cpython-311.pyc b/src/code_quality_analyzer/__pycache__/architectural_smell_detector.cpython-311.pyc deleted file mode 100644 index 630c0fc..0000000 Binary files a/src/code_quality_analyzer/__pycache__/architectural_smell_detector.cpython-311.pyc and /dev/null differ diff --git a/src/code_quality_analyzer/__pycache__/code_smell_detector.cpython-311.pyc b/src/code_quality_analyzer/__pycache__/code_smell_detector.cpython-311.pyc deleted file mode 100644 index 5358e6e..0000000 Binary files a/src/code_quality_analyzer/__pycache__/code_smell_detector.cpython-311.pyc and /dev/null differ diff --git a/src/code_quality_analyzer/__pycache__/config_handler.cpython-311.pyc b/src/code_quality_analyzer/__pycache__/config_handler.cpython-311.pyc deleted file mode 100644 index e25bb7c..0000000 Binary files a/src/code_quality_analyzer/__pycache__/config_handler.cpython-311.pyc and /dev/null differ diff --git a/src/code_quality_analyzer/__pycache__/main.cpython-311.pyc b/src/code_quality_analyzer/__pycache__/main.cpython-311.pyc deleted file mode 100644 index c98e7f6..0000000 Binary files a/src/code_quality_analyzer/__pycache__/main.cpython-311.pyc and /dev/null differ diff --git a/src/code_quality_analyzer/__pycache__/structural_smell_detector.cpython-311.pyc b/src/code_quality_analyzer/__pycache__/structural_smell_detector.cpython-311.pyc deleted file mode 100644 index 690c372..0000000 Binary files a/src/code_quality_analyzer/__pycache__/structural_smell_detector.cpython-311.pyc and /dev/null differ diff --git a/src/code_quality_analyzer/architectural_smell_detector.py b/src/code_quality_analyzer/architectural_smell_detector.py index c574ddf..6768d30 100644 --- a/src/code_quality_analyzer/architectural_smell_detector.py +++ b/src/code_quality_analyzer/architectural_smell_detector.py @@ -7,7 +7,10 @@ import sys import importlib.util import logging + +from code_quality_analyzer.const import IGNORE_PATHS from .exceptions import CodeAnalysisError +from tqdm import tqdm # Set up logger logger = logging.getLogger(__name__) @@ -90,7 +93,7 @@ def detect_smells(self, directory_path): self.analyze_directory(directory_path) # Then run each detection method - for detect_method, method_name in detection_methods: + for detect_method, method_name in tqdm(detection_methods): try: logger.debug(f"Running {method_name}") detect_method() @@ -118,6 +121,14 @@ def analyze_directory(self, directory_path): """ for root, _, files in os.walk(directory_path): for file in files: + go = True + for ignored_path in IGNORE_PATHS.split(","): + if ignored_path in os.path.join(root, file): + print(f"Ignored {os.path.join(root, file)}") + go = False + break + if not go: + continue if file.endswith('.py'): file_path = os.path.join(root, file) self.analyze_file(file_path) diff --git a/src/code_quality_analyzer/const.py b/src/code_quality_analyzer/const.py new file mode 100644 index 0000000..e015e26 --- /dev/null +++ b/src/code_quality_analyzer/const.py @@ -0,0 +1 @@ +IGNORE_PATHS = "venv,tox,uml,log,pycache,scripts,test,nori" \ No newline at end of file diff --git a/src/code_quality_analyzer/main.py b/src/code_quality_analyzer/main.py index c3a3f0e..864e7ab 100644 --- a/src/code_quality_analyzer/main.py +++ b/src/code_quality_analyzer/main.py @@ -2,6 +2,8 @@ import argparse import csv import logging + +from code_quality_analyzer.const import IGNORE_PATHS from .code_smell_detector import CodeSmellDetector from .architectural_smell_detector import ArchitecturalSmellDetector from .structural_smell_detector import StructuralSmellDetector @@ -38,6 +40,14 @@ def analyze_code_smells(directory_path, detector): for root, _, files in os.walk(directory_path): for file in files: + go = True + for ignored_path in IGNORE_PATHS.split(","): + if ignored_path in os.path.join(root, file): + print(f"Ignored {os.path.join(root, file)}") + go = False + break + if not go: + continue if file.endswith('.py'): file_path = os.path.join(root, file) try: diff --git a/src/code_quality_analyzer/structural_smell_detector.py b/src/code_quality_analyzer/structural_smell_detector.py index bbe2bb3..47e6a10 100644 --- a/src/code_quality_analyzer/structural_smell_detector.py +++ b/src/code_quality_analyzer/structural_smell_detector.py @@ -5,6 +5,8 @@ from dataclasses import dataclass import yaml import logging + +from code_quality_analyzer.const import IGNORE_PATHS from .exceptions import CodeAnalysisError # Set up logger @@ -149,6 +151,14 @@ def analyze_directory(self, directory_path): for root, _, files in os.walk(directory_path): for file in files: + go = True + for ignored_path in IGNORE_PATHS.split(","): + if ignored_path in os.path.join(root, file): + print(f"Ignored {os.path.join(root, file)}") + go = False + break + if not go: + continue if file.endswith('.py'): file_path = os.path.join(root, file) try: diff --git a/tests/__pycache__/test_architectural_smell_detector.cpython-311-pytest-7.2.2.pyc b/tests/__pycache__/test_architectural_smell_detector.cpython-311-pytest-7.2.2.pyc deleted file mode 100644 index 77ecf80..0000000 Binary files a/tests/__pycache__/test_architectural_smell_detector.cpython-311-pytest-7.2.2.pyc and /dev/null differ diff --git a/tests/__pycache__/test_code_smell_detector.cpython-311-pytest-7.2.2.pyc b/tests/__pycache__/test_code_smell_detector.cpython-311-pytest-7.2.2.pyc deleted file mode 100644 index 6c8daaf..0000000 Binary files a/tests/__pycache__/test_code_smell_detector.cpython-311-pytest-7.2.2.pyc and /dev/null differ diff --git a/tests/__pycache__/test_structural_smell_detector.cpython-311-pytest-7.2.2.pyc b/tests/__pycache__/test_structural_smell_detector.cpython-311-pytest-7.2.2.pyc deleted file mode 100644 index dd58b0b..0000000 Binary files a/tests/__pycache__/test_structural_smell_detector.cpython-311-pytest-7.2.2.pyc and /dev/null differ