codeaudit 1.8.1__tar.gz → 1.9.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- codeaudit-1.9.1/.github/workflows/python-test.yml +31 -0
- codeaudit-1.9.1/.github/workflows/sast_validation.yml +45 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/CHANGELOG.md +46 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/PKG-INFO +14 -12
- {codeaudit-1.8.1 → codeaudit-1.9.1}/README.md +11 -9
- {codeaudit-1.8.1 → codeaudit-1.9.1}/SECURITY.md +1 -1
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/CONTRIBUTE.md +52 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/_config.yml +1 -1
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/exception_check.md +1 -1
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/cimode.md +7 -7
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/codeauditcommands.md +84 -45
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/codeauditoverview.md +15 -8
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/examples/codeauditchecks.html +1 -1
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/examples/demoscan.json +2 -2
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/filescan.md +16 -13
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/intro.md +2 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/makeitbetter.md +1 -1
- {codeaudit-1.8.1 → codeaudit-1.9.1}/pyproject.toml +4 -5
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/codeaudit/__about__.py +1 -1
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/codeaudit/api_interfaces.py +43 -16
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/codeaudit/corecli.py +1 -1
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/codeaudit/filehelpfunctions.py +8 -14
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/codeaudit/pypi_package_scan.py +73 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/codeaudit/reporting.py +118 -63
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/dashboard/dashboardapp.py +62 -62
- codeaudit-1.9.1/tests/test_filescan_api.py +130 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_hashstrenght.py +3 -0
- codeaudit-1.9.1/tests/test_valid_python.py +122 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/unit_tests/test_filehelpfunctions.py +9 -15
- codeaudit-1.9.1/tests/validationfiles/incorrect_python_file.py +0 -0
- codeaudit-1.9.1/tests/validationfiles/linkaudit-0.9.9.tar.gz +0 -0
- codeaudit-1.8.1/.github/workflows/python-test.yml +0 -24
- {codeaudit-1.8.1 → codeaudit-1.9.1}/.gitignore +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/CONTRIBUTE.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/LICENSE.txt +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/.gitignore +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/class_index.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/coverage_html_cb_dd2e7eb5.js +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/favicon_32_cb_c827f16f.png +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/function_index.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/index.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/keybd_closed_cb_900cfef5.png +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/status.json +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/style_cb_9ff733b0.css +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/z_15dab3f49bf85fa8___about___py.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/z_15dab3f49bf85fa8___init___py.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/z_15dab3f49bf85fa8_altairplots_py.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/z_15dab3f49bf85fa8_api_helpers_py.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/z_15dab3f49bf85fa8_api_interfaces_py.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/z_15dab3f49bf85fa8_api_reporting_py.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/z_15dab3f49bf85fa8_checkmodules_py.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/z_15dab3f49bf85fa8_codeaudit_dashboard_py.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/z_15dab3f49bf85fa8_codeaudit_py.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/z_15dab3f49bf85fa8_complexitycheck_py.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/z_15dab3f49bf85fa8_dashboard_reports_py.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/z_15dab3f49bf85fa8_filehelpfunctions_py.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/z_15dab3f49bf85fa8_htmlhelpfunctions_py.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/z_15dab3f49bf85fa8_issuevalidations_py.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/z_15dab3f49bf85fa8_privacy_lint_py.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/z_15dab3f49bf85fa8_pypi_package_scan_py.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/z_15dab3f49bf85fa8_reporting_py.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/z_15dab3f49bf85fa8_security_checks_py.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/z_15dab3f49bf85fa8_suppression_py.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/cov_html/z_15dab3f49bf85fa8_totals_py.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/CLIcommands.ipynb +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/_static/nocxstyle.css +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/_toc.yml +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/about.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/apidocs/api_intro.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/apidocs/codeaudit.rst +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/apidocs/modules.rst +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/architecture.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/changelog.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/assert_check.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/base64_check.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/binding_check.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/builtinfunctions_check.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/chmod_check.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/directorycreation_check.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/dynamicimport_check.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/ftp_check.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/hash_check.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/httpserver_check.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/input_check.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/loggingconf_check.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/marshal_check.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/mktemp_check.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/multiprocessing_check.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/pickle_check.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/random_check.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/shelve_check.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/shutil_check.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/subprocess_check.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/syscalls_check.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/systemcalls_check.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/tarfile_extract_check.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/xml_check.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checks/zipfile_check.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/checksinformation.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/codeauditchecks.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/complexitycheck.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/data_egress_implementation.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/data_exfiltration_detection.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/examples/ca_api_example_basic.ipynb +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/examples/ca_api_example_checks.ipynb +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/examples/ca_api_example_json.ipynb +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/examples/ca_api_example_overview.ipynb +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/examples/ca_api_example_scanning.ipynb +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/examples/ca_checks.ipynb +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/examples/demofile.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/examples/directoryscan.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/examples/example_risk_heatmap.ipynb +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/examples/example_weakness_perfile_view.ipynb +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/examples/filescan.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/examples/modulescan.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/examples/overview.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/features.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/filescan.png +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/handling_errors.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/help.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/howtoscan.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/images/OO.png +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/images/ROI_logo.png +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/images/YourLogoHere.png +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/images/ai_use.png +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/images/architecture_overview.png +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/images/codeauditlogo.png +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/images/filescan_screenshot_16012026.png +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/images/modulescan_screenshot_16012026.png +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/images/nocxbanner.png +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/images/overview_linkaudit.png +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/images/overview_screenshot_16012026.png +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/implementedvalidations.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/installation.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/issues.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/license.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/markingissues.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/modulescan.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/overviewplot.png +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/pca_overview.png +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/project_philosophy.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/sponsors.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/userguide.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/warnings.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/whatissast.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/docs/whysast.md +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/filescan.png +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/codeaudit/__init__.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/codeaudit/altairplots.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/codeaudit/api_helpers.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/codeaudit/api_reporting.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/codeaudit/checkmodules.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/codeaudit/ci_workflowscan.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/codeaudit/complexitycheck.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/codeaudit/dashboard_reports.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/codeaudit/data/sastchecks.csv +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/codeaudit/data/secretslist.txt +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/codeaudit/htmlhelpfunctions.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/codeaudit/issuevalidations.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/codeaudit/privacy_lint.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/codeaudit/security_checks.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/codeaudit/simple.css +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/codeaudit/suppression.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/codeaudit/totals.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/dashboard/__init__.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/dashboard/module_load_validation.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/dashboard/module_load_validation2.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/dashboard/pyodide/dashboardapp.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/dashboard/pyodide/dashboardapp.js +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/dashboard/pyodide/dashboardapp_171.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/dashboard/pyodide/dashboardapp_171.js +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/dashboard/pyodide/dashboardapp_version162.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/dashboard/pyodide/dashboardapp_version162.js +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/dashboard/pyodide/dashboardapp_version166.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/dashboard/pyodide/dashboardapp_version166.js +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/dashboard/pyodide/deployed/dashboardapp.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/dashboard/pyodide/deployed/dashboardapp.js +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/dashboard/pyodide/deployed/dashboardapp_171.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/dashboard/pyodide/deployed/dashboardapp_171.js +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/dashboard/pyodide/deployed/dashboardapp_180.html +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/dashboard/pyodide/deployed/dashboardapp_180.js +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/src/dashboard/requirements.txt +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/__init__.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/count_lines_file1.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/spytestdir/clean.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/spytestdir/elastic.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/spytestdir/example1.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/spytestdir/klyne.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/spytestdir/mixed.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/spytestdir/telemetry.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/spytestdir/telemetryfile2.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/suppression/sastsuppression_0.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/suppression/sastsuppression_1.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/suppression/sastsuppression_2.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_apicalls.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_apicalls2.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_base64.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_basicpatterns.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_chmod.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_constructspart2.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_correctexceptionuse.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_count_commentlines.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_directorycreation.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_directorycreation2.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_dynamic_import.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_edgecases.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_ftp.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_importlib_util.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_modulecheck.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_obfuscatingbuiltins.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_oschecks.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_pylintreport.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_pypiscan.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_random.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_secretfinding.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_standardlibconstructs.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_subprocess.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_suppression.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_suppressionlogic.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_totalscheck.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_wasmsafe_funtions.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/test_zstd.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/unit_tests/__init__.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/unit_tests/test_clean_import_list.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/unit_tests/test_collectsourcefiles.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/unit_tests/test_count_weaknesses.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/unit_tests/test_readinsourcefile.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/allshit.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/apivalidations.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/assert.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/base64.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/chmod_things.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/codeaudit_scan.json +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/complexitycheck.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/correctcounts.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/danger_imports.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/directorycreation.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/directorycreation2.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/dunderexec_with_parsing_error.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/eval.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/eval2.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/exception.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/file3.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/file_with_warnings.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/ftp.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/gzip.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/hashcheck.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/httpserver.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/inputstatement.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/malware.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/malwareAI.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/marshal.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/modulecheck.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/multiprocessing.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/obfuscating.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/oschecks.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/pickle.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/python2_file_willnotwork.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/random.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/shelve.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/shutil.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/subprocess.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/syslibrary.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/tarfilevalidation.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/tempcheck.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/validation1.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/validation2.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/xml.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/zipfile.py +0 -0
- {codeaudit-1.8.1 → codeaudit-1.9.1}/tests/validationfiles/zstd.py +0 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
name: Python Package Test
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
paths:
|
|
6
|
+
- 'src/**'
|
|
7
|
+
- 'tests/**'
|
|
8
|
+
pull_request:
|
|
9
|
+
paths:
|
|
10
|
+
- 'src/**'
|
|
11
|
+
- 'tests/**'
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
test:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v5
|
|
19
|
+
|
|
20
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
21
|
+
uses: actions/setup-python@v6
|
|
22
|
+
with:
|
|
23
|
+
python-version: 3.14
|
|
24
|
+
|
|
25
|
+
- name: Install dependencies
|
|
26
|
+
run: |
|
|
27
|
+
python -m pip install --upgrade pip hatch
|
|
28
|
+
|
|
29
|
+
- name: Test with hatch
|
|
30
|
+
run: |
|
|
31
|
+
hatch test -acr
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# SAST scan with Python Code Audit on GitHub Actions
|
|
2
|
+
# Uses the development version!! So make sure it always works -)
|
|
3
|
+
|
|
4
|
+
name: Python Code Audit SAST Scan
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
paths:
|
|
9
|
+
- 'src/**'
|
|
10
|
+
pull_request:
|
|
11
|
+
paths:
|
|
12
|
+
- 'src/**'
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
codeaudit-scan:
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
|
|
18
|
+
steps:
|
|
19
|
+
- name: Checkout repository
|
|
20
|
+
uses: actions/checkout@v5
|
|
21
|
+
|
|
22
|
+
- name: Set up Python
|
|
23
|
+
uses: actions/setup-python@v6
|
|
24
|
+
with:
|
|
25
|
+
python-version: "3.14"
|
|
26
|
+
|
|
27
|
+
- name: Upgrade pip
|
|
28
|
+
run: python -m pip install --upgrade pip
|
|
29
|
+
|
|
30
|
+
- name: Install Python Code Audit
|
|
31
|
+
run: python -m pip install -e .
|
|
32
|
+
|
|
33
|
+
- name: Show version
|
|
34
|
+
run: codeaudit --version
|
|
35
|
+
|
|
36
|
+
- name: Run SAST scan
|
|
37
|
+
run: |
|
|
38
|
+
codeaudit cimode . --output text | tee codeaudit-output.text
|
|
39
|
+
exit ${PIPESTATUS[0]}
|
|
40
|
+
|
|
41
|
+
- name: Upload scan artifact
|
|
42
|
+
uses: actions/upload-artifact@v6
|
|
43
|
+
with:
|
|
44
|
+
name: codeaudit-${{ github.ref_name }}
|
|
45
|
+
path: codeaudit-output.text
|
|
@@ -1,5 +1,51 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## Version 1.9.1:
|
|
4
|
+
|
|
5
|
+
**Added**
|
|
6
|
+
|
|
7
|
+
* Extra badge in the `README.md` for direct launch of the WASM version.
|
|
8
|
+
* A switch option in the UI for the WASM version to use or suppress markers in code when scanning.
|
|
9
|
+
* AI policy section for contributions in the manual.
|
|
10
|
+
|
|
11
|
+
**Changed**
|
|
12
|
+
|
|
13
|
+
* Adjusted validation values for checking `targz` files (`max_file_size = 15 * 1024 * 1024`, `max_tar_members = 12000`).
|
|
14
|
+
* Tightened security for validating Python files using `validate_python` from the `fileaudit` Python module.
|
|
15
|
+
* Dashboard version: Improved validation for valid PyPI names on the client side.
|
|
16
|
+
* Improved handling and status of tabs in the WASM version.
|
|
17
|
+
* Minor updates to the CLI help text.
|
|
18
|
+
* Changed the manual title from **Python Security Code Audit** to **Python Code Audit**.
|
|
19
|
+
|
|
20
|
+
**Fixed**
|
|
21
|
+
|
|
22
|
+
* Improved and updated unit tests for validating the correct working of excluded directories during scans (`test_excluded_dirs`).
|
|
23
|
+
|
|
24
|
+
**Documentation**
|
|
25
|
+
|
|
26
|
+
* General updates and fixes for the manual.
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
## Version 1.9.0:
|
|
30
|
+
|
|
31
|
+
**Added**
|
|
32
|
+
|
|
33
|
+
* Support for scanning local and remote `.tar.gz` files using the `filescan` API function, simplifying package scanning before PyPI publication (available via `codeaudit filescan` and `codeaudit overview` CLI commands).
|
|
34
|
+
* Added `"test"` to the default collection of excluded scan directories.
|
|
35
|
+
|
|
36
|
+
**Changed**
|
|
37
|
+
|
|
38
|
+
* Improved the `filescan` API function.
|
|
39
|
+
* Dropped active installation support for Python versions older than 3.12 (code analysis support for older Python versions remains available).
|
|
40
|
+
* Updated GitHub Actions to use Node.js 24.
|
|
41
|
+
* Optimized the GitHub testing workflow to ignore documentation-only changes.
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
**Documentation**
|
|
45
|
+
|
|
46
|
+
* Updated and improved unit tests to reflect current functionality and test coverage.
|
|
47
|
+
|
|
48
|
+
|
|
3
49
|
## Version 1.8.1:
|
|
4
50
|
|
|
5
51
|
**Added**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codeaudit
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.9.1
|
|
4
4
|
Summary: A modern Python security source code analyzer (SAST) based on distrust.
|
|
5
5
|
Project-URL: Homepage, https://codeaudit.nocomplexity.com
|
|
6
6
|
Project-URL: Documentation, https://github.com/nocomplexity/codeaudit#readme
|
|
@@ -15,14 +15,14 @@ Classifier: Environment :: Console
|
|
|
15
15
|
Classifier: Intended Audience :: Developers
|
|
16
16
|
Classifier: Intended Audience :: Science/Research
|
|
17
17
|
Classifier: Programming Language :: Python
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
19
18
|
Classifier: Programming Language :: Python :: 3.12
|
|
20
19
|
Classifier: Programming Language :: Python :: 3.13
|
|
21
20
|
Classifier: Programming Language :: Python :: 3.14
|
|
22
21
|
Classifier: Topic :: Security
|
|
23
22
|
Classifier: Topic :: Software Development :: Quality Assurance
|
|
24
|
-
Requires-Python: >=3.
|
|
23
|
+
Requires-Python: >=3.12
|
|
25
24
|
Requires-Dist: altair==6.0.0
|
|
25
|
+
Requires-Dist: fileaudit
|
|
26
26
|
Requires-Dist: fire==0.7.1
|
|
27
27
|
Requires-Dist: pandas>=2.3
|
|
28
28
|
Provides-Extra: test
|
|
@@ -35,7 +35,7 @@ Description-Content-Type: text/markdown
|
|
|
35
35
|
|
|
36
36
|
# Codeaudit
|
|
37
37
|
|
|
38
|
-

|
|
38
|
+
[](https://codeaudit.nocomplexity.com/)
|
|
39
39
|
|
|
40
40
|
[](https://github.com/nocomplexity/codeaudit)
|
|
41
41
|
[](https://pypi.org/project/codeaudit)
|
|
@@ -43,6 +43,7 @@ Description-Content-Type: text/markdown
|
|
|
43
43
|
[](https://www.bestpractices.dev/projects/10970)
|
|
44
44
|
[](https://nocomplexity.com/documents/codeaudit/intro.html)
|
|
45
45
|
[](https://nocomplexity.com/documents/codeaudit/license.html)
|
|
46
|
+
[](https://nocomplexity.com/codeauditapp/dashboardapp.html)
|
|
46
47
|
[](https://pepy.tech/projects/codeaudit)
|
|
47
48
|
|
|
48
49
|
Python Code Audit - A modern Python security source code analyzer based on distrust.
|
|
@@ -51,6 +52,15 @@ Python Code Audit is a static application security testing (SAST) tool designed
|
|
|
51
52
|
|
|
52
53
|
This tool is designed for anyone who uses or creates Python programs and wants to understand and mitigate potential security risks.
|
|
53
54
|
|
|
55
|
+
> [!TIP]
|
|
56
|
+
> **Try it instantly — no installs, no setup, no excuses.**
|
|
57
|
+
>
|
|
58
|
+
> 👉 [Launch the browser version](https://nocomplexity.com/codeauditapp/dashboardapp.html)
|
|
59
|
+
|
|
60
|
+
It runs **100% locally** in your browser via WebAssembly (WASM). See the full power of **Python Code Audit** within 60 seconds.
|
|
61
|
+
No downloads. No dependencies. Just click and run a security audit on any Python package on PyPI!
|
|
62
|
+
|
|
63
|
+
|
|
54
64
|
This tool is created for:
|
|
55
65
|
|
|
56
66
|
- Python Users who want to assess the security risks in the Python code they use.
|
|
@@ -82,14 +92,6 @@ Python Code Audit has the following features:
|
|
|
82
92
|
|
|
83
93
|
## Installation
|
|
84
94
|
|
|
85
|
-
> [!TIP]
|
|
86
|
-
> Try it instantly—no installs, no setup, no excuses.
|
|
87
|
-
>
|
|
88
|
-
> 👉 Launch the browser version [here](https://nocomplexity.com/codeauditapp/dashboardapp.html)
|
|
89
|
-
|
|
90
|
-
It runs 100% locally in your browser using WebAssembly (WASM). See the power of the tool in under 60 seconds.
|
|
91
|
-
No downloads. No dependencies. Just click and do a security audit on Python Code.
|
|
92
|
-
|
|
93
95
|
Loved the browser version? Unlock the full power. For advanced security code inspections, CI/CD integration, and all professional features, install the complete Python package:
|
|
94
96
|
|
|
95
97
|
```console
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Codeaudit
|
|
2
2
|
|
|
3
|
-

|
|
3
|
+
[](https://codeaudit.nocomplexity.com/)
|
|
4
4
|
|
|
5
5
|
[](https://github.com/nocomplexity/codeaudit)
|
|
6
6
|
[](https://pypi.org/project/codeaudit)
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
[](https://www.bestpractices.dev/projects/10970)
|
|
9
9
|
[](https://nocomplexity.com/documents/codeaudit/intro.html)
|
|
10
10
|
[](https://nocomplexity.com/documents/codeaudit/license.html)
|
|
11
|
+
[](https://nocomplexity.com/codeauditapp/dashboardapp.html)
|
|
11
12
|
[](https://pepy.tech/projects/codeaudit)
|
|
12
13
|
|
|
13
14
|
Python Code Audit - A modern Python security source code analyzer based on distrust.
|
|
@@ -16,6 +17,15 @@ Python Code Audit is a static application security testing (SAST) tool designed
|
|
|
16
17
|
|
|
17
18
|
This tool is designed for anyone who uses or creates Python programs and wants to understand and mitigate potential security risks.
|
|
18
19
|
|
|
20
|
+
> [!TIP]
|
|
21
|
+
> **Try it instantly — no installs, no setup, no excuses.**
|
|
22
|
+
>
|
|
23
|
+
> 👉 [Launch the browser version](https://nocomplexity.com/codeauditapp/dashboardapp.html)
|
|
24
|
+
|
|
25
|
+
It runs **100% locally** in your browser via WebAssembly (WASM). See the full power of **Python Code Audit** within 60 seconds.
|
|
26
|
+
No downloads. No dependencies. Just click and run a security audit on any Python package on PyPI!
|
|
27
|
+
|
|
28
|
+
|
|
19
29
|
This tool is created for:
|
|
20
30
|
|
|
21
31
|
- Python Users who want to assess the security risks in the Python code they use.
|
|
@@ -47,14 +57,6 @@ Python Code Audit has the following features:
|
|
|
47
57
|
|
|
48
58
|
## Installation
|
|
49
59
|
|
|
50
|
-
> [!TIP]
|
|
51
|
-
> Try it instantly—no installs, no setup, no excuses.
|
|
52
|
-
>
|
|
53
|
-
> 👉 Launch the browser version [here](https://nocomplexity.com/codeauditapp/dashboardapp.html)
|
|
54
|
-
|
|
55
|
-
It runs 100% locally in your browser using WebAssembly (WASM). See the power of the tool in under 60 seconds.
|
|
56
|
-
No downloads. No dependencies. Just click and do a security audit on Python Code.
|
|
57
|
-
|
|
58
60
|
Loved the browser version? Unlock the full power. For advanced security code inspections, CI/CD integration, and all professional features, install the complete Python package:
|
|
59
61
|
|
|
60
62
|
```console
|
|
@@ -20,7 +20,7 @@ I will send a response indicating the next steps in handling your report. After
|
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
> [!TIP]
|
|
23
|
-
> To learn more about security, please visit [Simplify Cyber Security](https://nocomplexity.com/simplify-security/). And do not
|
|
23
|
+
> To learn more about security, please visit [Simplify Cyber Security](https://nocomplexity.com/simplify-security/). And do not hesitate to join-in to make these Free and Open Security Playbooks better!
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
|
|
@@ -63,6 +63,58 @@ See the [section Development](makeitbetter) for to get a head start when making
|
|
|
63
63
|
|
|
64
64
|
:::
|
|
65
65
|
|
|
66
|
+
(AI-policy)=
|
|
67
|
+
## Generative AI / LLM Policy
|
|
68
|
+
|
|
69
|
+
Everyone is free to make contributions with or without AI assistence. Especially since English is not the native language of many people and users.
|
|
70
|
+
|
|
71
|
+
**BUT:** Due to both legal and human reasons, we have to establish boundaries.
|
|
72
|
+
|
|
73
|
+
:::{caution}
|
|
74
|
+
- We take the responsibility for this project very seriously and we expect you to take your responsibility for your contributions seriously, too.
|
|
75
|
+
- Every contribution has to be backed by a human who unequivocally owns the copyright for all changes.
|
|
76
|
+
|
|
77
|
+
No LLM bots in `Co-authored-by:`s.
|
|
78
|
+
- Absolutely **no** unsupervised agentic tools like OpenClaw.
|
|
79
|
+
|
|
80
|
+
By submitting a pull request, you declare that:
|
|
81
|
+
- You are the author of the contribution.
|
|
82
|
+
- You **understand** the code.
|
|
83
|
+
- You accept full responsibility for it.
|
|
84
|
+
:::
|
|
85
|
+
|
|
86
|
+
### Legal
|
|
87
|
+
|
|
88
|
+
When you contribute to **Python Code Audit** (On PyPI `codeaudit`), your contributions (with or without AI support) are made under the same license as the file you are working on. You retain your copyright to your changes to this project.
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
### Human
|
|
92
|
+
|
|
93
|
+
We take responsibility to our users very serious. Every code change is reviewed manually before merging because it's our responsibility to keep the project **stable and secure**.
|
|
94
|
+
|
|
95
|
+
Please understand that by opening low-quality pull requests generated by AI you're not helping. Make small pull request that are easy to review and merge.
|
|
96
|
+
:::{note}
|
|
97
|
+
Every pull request must be created by a Human or reviewed by a human. A human is responsible for all text in an issue or pull request.
|
|
98
|
+
:::
|
|
99
|
+
|
|
100
|
+
We have no time to become part of your vibe coding loop where you drop LLM slop and we spend time and energy to review it, and you just feed it back into the LLM for another iteration.
|
|
101
|
+
|
|
102
|
+
In practice, this means:
|
|
103
|
+
|
|
104
|
+
- Pull requests that have an LLM product listed as co-author can't be merged and will be closed without further discussion.
|
|
105
|
+
|
|
106
|
+
If you used LLM tools during development, you may still submit. But you must remove all LLM author tags and take full ownership of every line.
|
|
107
|
+
|
|
108
|
+
- By submitting a pull request, **you** take full responsibility for the contents of the pull request.
|
|
109
|
+
|
|
110
|
+
*"An LLM wrote it"* is **not** an acceptable response to questions or review remarks.
|
|
111
|
+
|
|
112
|
+
So:
|
|
113
|
+
- Do **not** post LLM-generated review comments.
|
|
114
|
+
- Do **not** post summaries unless you've fact-checked them and take responsibility for 100% of their content.
|
|
115
|
+
|
|
116
|
+
*Attribution: This AI policy is based on [attrs' AI_POLICY.md](https://github.com/python-attrs/attrs/blob/main/.github/AI_POLICY.md).*
|
|
117
|
+
|
|
66
118
|
(CoC-label)=
|
|
67
119
|
## Code of Conduct
|
|
68
120
|
|
|
@@ -99,6 +99,6 @@ sphinx:
|
|
|
99
99
|
use_issues_button: True
|
|
100
100
|
home_page_in_toc: True
|
|
101
101
|
logo:
|
|
102
|
-
text: <b>Python
|
|
102
|
+
text: <b>Python Code Audit</b>
|
|
103
103
|
extra_footer: '<p><a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a> This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p>'
|
|
104
104
|
|
|
@@ -198,12 +198,12 @@ jobs:
|
|
|
198
198
|
|
|
199
199
|
steps:
|
|
200
200
|
- name: Checkout repository
|
|
201
|
-
uses: actions/checkout@
|
|
201
|
+
uses: actions/checkout@v5
|
|
202
202
|
|
|
203
203
|
- name: Set up Python
|
|
204
|
-
uses: actions/setup-python@
|
|
204
|
+
uses: actions/setup-python@v6
|
|
205
205
|
with:
|
|
206
|
-
python-version: "3.
|
|
206
|
+
python-version: "3.14"
|
|
207
207
|
|
|
208
208
|
- name: Upgrade pip
|
|
209
209
|
run: python -m pip install --upgrade pip
|
|
@@ -220,7 +220,7 @@ jobs:
|
|
|
220
220
|
exit ${PIPESTATUS[0]}
|
|
221
221
|
|
|
222
222
|
- name: Upload scan artifact
|
|
223
|
-
uses: actions/upload-artifact@
|
|
223
|
+
uses: actions/upload-artifact@v5
|
|
224
224
|
with:
|
|
225
225
|
name: codeaudit-${{ github.ref_name }}
|
|
226
226
|
path: codeaudit-output.text
|
|
@@ -243,10 +243,10 @@ jobs:
|
|
|
243
243
|
|
|
244
244
|
steps:
|
|
245
245
|
- name: Checkout repository
|
|
246
|
-
uses: actions/checkout@
|
|
246
|
+
uses: actions/checkout@v5
|
|
247
247
|
|
|
248
248
|
- name: Set up Python
|
|
249
|
-
uses: actions/setup-python@
|
|
249
|
+
uses: actions/setup-python@v6
|
|
250
250
|
with:
|
|
251
251
|
python-version: "3.13"
|
|
252
252
|
|
|
@@ -263,7 +263,7 @@ jobs:
|
|
|
263
263
|
run: codeaudit cimode . --output html > codeaudit-output.html
|
|
264
264
|
|
|
265
265
|
- name: Upload scan artifact
|
|
266
|
-
uses: actions/upload-artifact@
|
|
266
|
+
uses: actions/upload-artifact@v6
|
|
267
267
|
with:
|
|
268
268
|
name: codeaudit-${{ github.ref_name }}
|
|
269
269
|
path: codeaudit-output.html
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
% THIS FILE IS GENERATED! - Use CLIcommands.ipynb to make it better!
|
|
2
2
|
# Commands Overview
|
|
3
|
-
Python Code Audit commands for: version: 1.
|
|
3
|
+
Python Code Audit commands for: version: 1.9.1
|
|
4
4
|
```
|
|
5
5
|
----------------------------------------------------
|
|
6
6
|
_ __ _
|
|
@@ -16,62 +16,88 @@ Usage: codeaudit COMMAND <directory|package> [report.html]
|
|
|
16
16
|
Depending on the command, you must specify a local directory, a Python file, or a package name hosted on PyPI.org.Reporting: The results are generated as a static HTML report for viewing in a web browser.
|
|
17
17
|
|
|
18
18
|
Commands:
|
|
19
|
-
overview
|
|
20
|
-
filescan
|
|
19
|
+
overview Generate an overview report of code complexity and security indicators.
|
|
20
|
+
filescan Scan Python source code, PyPI packages, or tar.gz archives for security weaknesses.
|
|
21
21
|
cimode Run a SAST scan for CI workflows.
|
|
22
22
|
modulescan Generate a report on known vulnerabilities in Python modules and packages.
|
|
23
23
|
checks Creates an HTML report of all implemented security checks.
|
|
24
24
|
version Prints the module version. Or use codeaudit [-v] [--v] [-version] or [--version].
|
|
25
25
|
|
|
26
|
-
Use the Python Code Audit documentation (https://codeaudit.nocomplexity.com) to audit and secure your Python programmes. Explore further essential open-source security tools at https://
|
|
26
|
+
Use the Python Code Audit documentation (https://codeaudit.nocomplexity.com) to audit and secure your Python programmes. Explore further essential open-source security tools at https://pythonsecurity.nocomplexity.com/
|
|
27
27
|
|
|
28
28
|
```
|
|
29
29
|
## codeaudit overview
|
|
30
30
|
```text
|
|
31
|
-
|
|
31
|
+
Generate an overview report of code complexity and security indicators.
|
|
32
32
|
|
|
33
|
-
This function analyzes a Python project
|
|
34
|
-
|
|
33
|
+
This function analyzes a Python project and generates a high-level HTML
|
|
34
|
+
overview of code complexity, project size, module dependencies, and
|
|
35
|
+
security-related indicators.
|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
- The name of a package hosted on PyPI.org
|
|
37
|
+
The input can be one of the following:
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
* A local directory containing Python source files
|
|
40
|
+
* A local or remote ``.tar.gz`` source archive
|
|
41
|
+
* The name of a package hosted on PyPI.org
|
|
41
42
|
|
|
42
|
-
|
|
43
|
+
codeaudit overview <package-name|directory|archive.tar.gz> [reportname.html]
|
|
44
|
+
|
|
45
|
+
For a local or remote ``.tar.gz`` archive, the archive is validated,
|
|
46
|
+
extracted to a temporary directory, scanned, and removed after the report
|
|
47
|
+
has been generated.
|
|
48
|
+
|
|
49
|
+
For a PyPI package, the source distribution (sdist) is downloaded,
|
|
43
50
|
extracted to a temporary directory, scanned, and removed after the report
|
|
44
|
-
|
|
51
|
+
has been generated.
|
|
52
|
+
|
|
53
|
+
The report includes:
|
|
45
54
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
55
|
+
* Summary statistics for the analyzed project
|
|
56
|
+
* Security concern indicators based on maximum code complexity
|
|
57
|
+
and total lines of code
|
|
58
|
+
* A list of discovered standard-library and external modules
|
|
59
|
+
* Detailed metrics for each Python source file
|
|
60
|
+
* A visual overview of the collected metrics
|
|
61
|
+
* Advice for performing a full SAST scan with ``codeaudit filescan``
|
|
49
62
|
|
|
50
63
|
Examples:
|
|
51
64
|
Generate an overview report for a local project directory::
|
|
52
65
|
|
|
53
66
|
codeaudit overview /projects/mycolleaguesproject
|
|
54
67
|
|
|
68
|
+
Generate an overview report for a local ``.tar.gz`` archive::
|
|
69
|
+
|
|
70
|
+
codeaudit overview /path/to/myproject.tar.gz
|
|
71
|
+
|
|
72
|
+
Generate an overview report for a remote ``.tar.gz`` archive::
|
|
73
|
+
|
|
74
|
+
codeaudit overview https://example.com/myproject.tar.gz
|
|
75
|
+
|
|
55
76
|
Generate an overview report for a PyPI package::
|
|
56
77
|
|
|
57
|
-
codeaudit overview linkaudit
|
|
78
|
+
codeaudit overview linkaudit
|
|
58
79
|
|
|
59
|
-
codeaudit overview pydantic
|
|
80
|
+
codeaudit overview pydantic
|
|
81
|
+
|
|
82
|
+
Specify an output report file::
|
|
83
|
+
|
|
84
|
+
codeaudit overview /projects/mycolleaguesproject report.html
|
|
60
85
|
|
|
61
86
|
Args:
|
|
62
|
-
directory (str): Path to a local directory containing Python source
|
|
63
|
-
or
|
|
87
|
+
directory (str): Path to a local directory containing Python source
|
|
88
|
+
files, a local or remote ``.tar.gz`` source archive, or the name of
|
|
89
|
+
a package available on PyPI.org.
|
|
64
90
|
filename (str, optional): Name (and optional path) of the HTML file to
|
|
65
|
-
write the overview report to. The filename should use the
|
|
66
|
-
extension. Defaults to ``DEFAULT_OUTPUT_FILE``.
|
|
91
|
+
write the overview report to. The filename should use the
|
|
92
|
+
``.html`` extension. Defaults to ``DEFAULT_OUTPUT_FILE``.
|
|
67
93
|
|
|
68
94
|
Returns:
|
|
69
|
-
None
|
|
95
|
+
None: The function writes a static HTML overview report to disk.
|
|
70
96
|
|
|
71
97
|
Raises:
|
|
72
|
-
SystemExit: If the provided path is not a directory, contains no
|
|
73
|
-
files,
|
|
74
|
-
package name.
|
|
98
|
+
SystemExit: If the provided path is not a directory, contains no
|
|
99
|
+
Python files, is an invalid ``.tar.gz`` archive, or is neither a
|
|
100
|
+
valid local input nor a valid PyPI package name.
|
|
75
101
|
str(object='') -> str
|
|
76
102
|
str(bytes_or_buffer[, encoding[, errors]]) -> str
|
|
77
103
|
|
|
@@ -133,26 +159,32 @@ errors defaults to 'strict'.
|
|
|
133
159
|
```
|
|
134
160
|
## codeaudit filescan
|
|
135
161
|
```text
|
|
136
|
-
|
|
162
|
+
Scan Python source code, PyPI packages, or tar.gz archives for security weaknesses.
|
|
163
|
+
|
|
137
164
|
This function performs static application security testing (SAST) on a
|
|
138
165
|
specified input. The input can be one of the following:
|
|
139
166
|
|
|
140
167
|
* A local directory containing Python source code
|
|
141
168
|
* A single local Python file
|
|
169
|
+
* A local or remote ``.tar.gz`` source archive
|
|
142
170
|
* The name of a package hosted on PyPI
|
|
143
171
|
|
|
144
|
-
codeaudit filescan <pythonfile|package-name|directory> [reportname.html] [--nosec]
|
|
172
|
+
codeaudit filescan <pythonfile|package-name|directory|archive.tar.gz> [reportname.html] [--nosec]
|
|
145
173
|
|
|
146
174
|
Based on the input type, the function analyzes the source code for potential
|
|
147
175
|
security issues, generates an HTML report summarizing the findings, and
|
|
148
176
|
writes the report to disk.
|
|
149
177
|
|
|
178
|
+
For a local or remote ``.tar.gz`` archive, the archive is validated,
|
|
179
|
+
extracted to a temporary directory, scanned as a source directory, and
|
|
180
|
+
cleaned up after the scan completes.
|
|
181
|
+
|
|
150
182
|
If a PyPI package name is provided, the function downloads the source
|
|
151
183
|
distribution (sdist), extracts it to a temporary directory, scans the
|
|
152
184
|
extracted source code, and cleans up all temporary files after the scan
|
|
153
185
|
completes.
|
|
154
186
|
|
|
155
|
-
|
|
187
|
+
Examples:
|
|
156
188
|
|
|
157
189
|
Scan a local directory and write the report to ``report.html``::
|
|
158
190
|
|
|
@@ -166,49 +198,56 @@ completes.
|
|
|
166
198
|
|
|
167
199
|
codeaudit filescan myexample.py
|
|
168
200
|
|
|
201
|
+
Scan a local tar.gz archive::
|
|
202
|
+
|
|
203
|
+
codeaudit filescan /path/to/package.tar.gz
|
|
204
|
+
|
|
205
|
+
Scan a remote tar.gz archive::
|
|
206
|
+
|
|
207
|
+
codeaudit filescan https://example.com/package.tar.gz
|
|
208
|
+
|
|
169
209
|
Scan a package hosted on PyPI::
|
|
170
210
|
|
|
171
211
|
codeaudit filescan linkaudit
|
|
172
212
|
|
|
173
213
|
codeaudit filescan requests
|
|
174
214
|
|
|
175
|
-
|
|
176
215
|
Specify an output report file::
|
|
177
216
|
|
|
178
217
|
codeaudit filescan /path/to/project report.html
|
|
179
218
|
|
|
180
|
-
Enable filtering of issues marked with ``#nosec`` or another marker
|
|
219
|
+
Enable filtering of issues marked with ``#nosec`` or another marker
|
|
220
|
+
indicating that potential code weaknesses have been reviewed or
|
|
221
|
+
intentionally ignored::
|
|
181
222
|
|
|
182
223
|
codeaudit filescan myexample.py --nosec
|
|
183
224
|
|
|
184
225
|
POSITIONAL ARGUMENTS
|
|
185
226
|
INPUT_PATH
|
|
186
|
-
Path to a local Python file or directory,
|
|
187
|
-
|
|
227
|
+
Path to a local Python file or directory, a local or remote ``.tar.gz``
|
|
228
|
+
archive, or the name of a package available on PyPI.
|
|
188
229
|
|
|
189
230
|
FLAGS
|
|
190
231
|
-f, --filename=FILENAME
|
|
191
232
|
Default: 'codeaudit-report.html'
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
Args:
|
|
233
|
+
Name (and optional path) of the HTML file to write the scan report to.
|
|
234
|
+
The filename should use the ``.html`` extension.
|
|
197
235
|
|
|
198
|
-
-f, --filename=FILENAME
|
|
199
|
-
Default: 'codeaudit-report.html'
|
|
200
|
-
Name (and optional path) of the HTML file to write the scan report to. The filename should use the ``.html`` extension. Defaults to ``DEFAULT_OUTPUT_FILE``.
|
|
201
236
|
-n, --nosec=NOSEC
|
|
202
237
|
Default: False
|
|
203
|
-
Whether to filter out issues marked as reviewed or ignored in the
|
|
238
|
+
Whether to filter out issues marked as reviewed or ignored in the
|
|
239
|
+
source code.
|
|
204
240
|
|
|
205
|
-
|
|
206
|
-
|
|
241
|
+
Args:
|
|
242
|
+
input_path (str): Path to a local Python file or directory, a local or
|
|
243
|
+
remote ``.tar.gz`` archive, or the name of a package available on
|
|
244
|
+
PyPI.
|
|
207
245
|
filename (str, optional): Name (and optional path) of the HTML file to
|
|
208
246
|
write the scan report to. The filename should use the ``.html``
|
|
209
247
|
extension. Defaults to ``DEFAULT_OUTPUT_FILE``.
|
|
210
248
|
nosec (bool, optional): Whether to filter out issues marked as reviewed
|
|
211
|
-
or ignored in the source code. Defaults to ``False``, no
|
|
249
|
+
or ignored in the source code. Defaults to ``False``, meaning no
|
|
250
|
+
filtering is applied.
|
|
212
251
|
|
|
213
252
|
Returns:
|
|
214
253
|
None: The function writes a static HTML security report to disk.
|
|
@@ -2,21 +2,28 @@
|
|
|
2
2
|
# Command `codeaudit overview`
|
|
3
3
|
|
|
4
4
|
|
|
5
|
+
Use this command to generate a quick security-relevant assessment of a Python project or package. It provides an overview of important security and code-complexity metrics for the project.
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
## Usage
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
codeaudit overview <package-path|package-name> [report-name.html]
|
|
9
|
+
```bash
|
|
10
|
+
codeaudit overview <package-path|package-name|package.tar.gz> [report-name.html]
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
Arguments
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
## Arguments
|
|
14
|
+
|
|
15
|
+
* `<package-path|package-name|package.tar.gz>` (Required)
|
|
16
|
+
|
|
17
|
+
Specify one of the following:
|
|
18
|
+
|
|
19
|
+
* A local directory containing Python files.
|
|
20
|
+
* The name of a Python package hosted on PyPI.org.
|
|
21
|
+
* A local `.tar.gz` source archive.
|
|
22
|
+
* A remote `.tar.gz` source archive URL (only HTTPS allowed!).
|
|
16
23
|
|
|
17
24
|
* `[report-name.html]` (Optional)
|
|
18
|
-
The filename for the generated security report. If omitted, the tool will use a default filename. If you provide a custom name, ensure it ends with the `.html` extension.
|
|
19
25
|
|
|
26
|
+
The filename for the generated overview report. If omitted, the tool will use a default filename. If you provide a custom name, ensure it ends with the `.html` extension.
|
|
20
27
|
|
|
21
28
|
|
|
22
29
|
For every Python file the following **security** relevant statistics are determined:
|
|
@@ -774,4 +774,4 @@ footer {
|
|
|
774
774
|
<td>Vulnerable to path traversal attacks if used with untrusted archives.</td>
|
|
775
775
|
</tr>
|
|
776
776
|
</tbody>
|
|
777
|
-
</table><br><p>Number of implemented security validations:<b>89</b></p><p>Version of codeaudit: <b>1.
|
|
777
|
+
</table><br><p>Number of implemented security validations:<b>89</b></p><p>Version of codeaudit: <b>1.9.1</b><p>Because Python and cybersecurity are constantly changing, issue reports <b>SHOULD</b> specify the codeaudit version used.</p><p><b>Disclaimer:</b> <i>This SAST tool <a href="https://github.com/nocomplexity/codeaudit" target="_blank"><b>Python Code Audit</b></a> provides a powerful, automatic security analysis for Python source code. However, it's not a substitute for human review in combination with business knowledge. Undetected vulnerabilities may still exist.</i></p><p>This Python security report was created on: <b>2026-10-09 11:58</b> with <a href="https://github.com/nocomplexity/codeaudit" target="_blank"><b>Python Code Audit</b></a> version <b>1.9.1</b></p><hr><footer><div class="footer-links">Check the <a href="https://nocomplexity.com/documents/codeaudit/intro.html" target="_blank">documentation</a> for help on found issues.<br>Codeaudit is made with <span class="heart">❤</span> by cyber security professionals who advocate for <a href="https://nocomplexity.com/simplify-security/" target="_blank">open simple security solutions</a>.<br><a href="https://nocomplexity.com/documents/codeaudit/CONTRIBUTE.html" target="_blank">Join the community</a> and contribute to make this tool better!</div></footer></div></body></html>
|