codeaudit 1.9.0__tar.gz → 1.9.2__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.
Files changed (273) hide show
  1. {codeaudit-1.9.0 → codeaudit-1.9.2}/CHANGELOG.md +30 -0
  2. {codeaudit-1.9.0 → codeaudit-1.9.2}/PKG-INFO +12 -10
  3. {codeaudit-1.9.0 → codeaudit-1.9.2}/README.md +11 -9
  4. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/CONTRIBUTE.md +52 -0
  5. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/_config.yml +1 -1
  6. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/exception_check.md +1 -1
  7. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/codeauditcommands.md +2 -2
  8. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/examples/ca_api_example_scanning.ipynb +35 -29
  9. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/examples/codeauditchecks.html +1 -1
  10. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/examples/demoscan.json +2 -2
  11. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/intro.md +2 -0
  12. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/makeitbetter.md +1 -1
  13. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/codeaudit/__about__.py +1 -1
  14. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/codeaudit/api_interfaces.py +2 -10
  15. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/codeaudit/corecli.py +1 -1
  16. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/codeaudit/filehelpfunctions.py +7 -13
  17. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/codeaudit/pypi_package_scan.py +29 -3
  18. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/codeaudit/reporting.py +4 -10
  19. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/dashboard/dashboardapp.py +62 -62
  20. codeaudit-1.9.2/src/dashboard/pyodide/dashboardapp_191.html +299 -0
  21. codeaudit-1.9.2/src/dashboard/pyodide/dashboardapp_191.js +91 -0
  22. codeaudit-1.9.2/src/dashboard/pyodide/deployed/dashboardapp.html +299 -0
  23. codeaudit-1.9.2/src/dashboard/pyodide/deployed/dashboardapp.js +91 -0
  24. codeaudit-1.9.2/tests/test_valid_python.py +122 -0
  25. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/unit_tests/test_filehelpfunctions.py +7 -13
  26. codeaudit-1.9.2/tests/validationfiles/incorrect_python_file.py +0 -0
  27. codeaudit-1.9.0/src/dashboard/pyodide/deployed/dashboardapp.html +0 -295
  28. codeaudit-1.9.0/src/dashboard/pyodide/deployed/dashboardapp.js +0 -91
  29. {codeaudit-1.9.0 → codeaudit-1.9.2}/.github/workflows/python-test.yml +0 -0
  30. {codeaudit-1.9.0 → codeaudit-1.9.2}/.github/workflows/sast_validation.yml +0 -0
  31. {codeaudit-1.9.0 → codeaudit-1.9.2}/.gitignore +0 -0
  32. {codeaudit-1.9.0 → codeaudit-1.9.2}/CONTRIBUTE.md +0 -0
  33. {codeaudit-1.9.0 → codeaudit-1.9.2}/LICENSE.txt +0 -0
  34. {codeaudit-1.9.0 → codeaudit-1.9.2}/SECURITY.md +0 -0
  35. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/.gitignore +0 -0
  36. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/class_index.html +0 -0
  37. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/coverage_html_cb_dd2e7eb5.js +0 -0
  38. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/favicon_32_cb_c827f16f.png +0 -0
  39. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/function_index.html +0 -0
  40. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/index.html +0 -0
  41. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/keybd_closed_cb_900cfef5.png +0 -0
  42. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/status.json +0 -0
  43. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/style_cb_9ff733b0.css +0 -0
  44. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8___about___py.html +0 -0
  45. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8___init___py.html +0 -0
  46. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_altairplots_py.html +0 -0
  47. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_api_helpers_py.html +0 -0
  48. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_api_interfaces_py.html +0 -0
  49. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_api_reporting_py.html +0 -0
  50. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_checkmodules_py.html +0 -0
  51. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_codeaudit_dashboard_py.html +0 -0
  52. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_codeaudit_py.html +0 -0
  53. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_complexitycheck_py.html +0 -0
  54. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_dashboard_reports_py.html +0 -0
  55. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_filehelpfunctions_py.html +0 -0
  56. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_htmlhelpfunctions_py.html +0 -0
  57. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_issuevalidations_py.html +0 -0
  58. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_privacy_lint_py.html +0 -0
  59. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_pypi_package_scan_py.html +0 -0
  60. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_reporting_py.html +0 -0
  61. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_security_checks_py.html +0 -0
  62. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_suppression_py.html +0 -0
  63. {codeaudit-1.9.0 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_totals_py.html +0 -0
  64. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/CLIcommands.ipynb +0 -0
  65. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/_static/nocxstyle.css +0 -0
  66. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/_toc.yml +0 -0
  67. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/about.md +0 -0
  68. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/apidocs/api_intro.md +0 -0
  69. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/apidocs/codeaudit.rst +0 -0
  70. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/apidocs/modules.rst +0 -0
  71. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/architecture.md +0 -0
  72. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/changelog.md +0 -0
  73. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/assert_check.md +0 -0
  74. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/base64_check.md +0 -0
  75. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/binding_check.md +0 -0
  76. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/builtinfunctions_check.md +0 -0
  77. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/chmod_check.md +0 -0
  78. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/directorycreation_check.md +0 -0
  79. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/dynamicimport_check.md +0 -0
  80. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/ftp_check.md +0 -0
  81. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/hash_check.md +0 -0
  82. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/httpserver_check.md +0 -0
  83. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/input_check.md +0 -0
  84. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/loggingconf_check.md +0 -0
  85. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/marshal_check.md +0 -0
  86. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/mktemp_check.md +0 -0
  87. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/multiprocessing_check.md +0 -0
  88. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/pickle_check.md +0 -0
  89. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/random_check.md +0 -0
  90. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/shelve_check.md +0 -0
  91. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/shutil_check.md +0 -0
  92. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/subprocess_check.md +0 -0
  93. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/syscalls_check.md +0 -0
  94. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/systemcalls_check.md +0 -0
  95. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/tarfile_extract_check.md +0 -0
  96. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/xml_check.md +0 -0
  97. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checks/zipfile_check.md +0 -0
  98. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/checksinformation.md +0 -0
  99. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/cimode.md +0 -0
  100. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/codeauditchecks.md +0 -0
  101. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/codeauditoverview.md +0 -0
  102. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/complexitycheck.md +0 -0
  103. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/data_egress_implementation.md +0 -0
  104. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/data_exfiltration_detection.md +0 -0
  105. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/examples/ca_api_example_basic.ipynb +0 -0
  106. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/examples/ca_api_example_checks.ipynb +0 -0
  107. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/examples/ca_api_example_json.ipynb +0 -0
  108. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/examples/ca_api_example_overview.ipynb +0 -0
  109. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/examples/ca_checks.ipynb +0 -0
  110. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/examples/demofile.py +0 -0
  111. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/examples/directoryscan.html +0 -0
  112. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/examples/example_risk_heatmap.ipynb +0 -0
  113. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/examples/example_weakness_perfile_view.ipynb +0 -0
  114. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/examples/filescan.html +0 -0
  115. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/examples/modulescan.html +0 -0
  116. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/examples/overview.html +0 -0
  117. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/features.md +0 -0
  118. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/filescan.md +0 -0
  119. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/filescan.png +0 -0
  120. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/handling_errors.md +0 -0
  121. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/help.md +0 -0
  122. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/howtoscan.md +0 -0
  123. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/images/OO.png +0 -0
  124. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/images/ROI_logo.png +0 -0
  125. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/images/YourLogoHere.png +0 -0
  126. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/images/ai_use.png +0 -0
  127. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/images/architecture_overview.png +0 -0
  128. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/images/codeauditlogo.png +0 -0
  129. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/images/filescan_screenshot_16012026.png +0 -0
  130. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/images/modulescan_screenshot_16012026.png +0 -0
  131. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/images/nocxbanner.png +0 -0
  132. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/images/overview_linkaudit.png +0 -0
  133. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/images/overview_screenshot_16012026.png +0 -0
  134. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/implementedvalidations.md +0 -0
  135. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/installation.md +0 -0
  136. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/issues.md +0 -0
  137. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/license.md +0 -0
  138. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/markingissues.md +0 -0
  139. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/modulescan.md +0 -0
  140. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/overviewplot.png +0 -0
  141. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/pca_overview.png +0 -0
  142. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/project_philosophy.md +0 -0
  143. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/sponsors.md +0 -0
  144. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/userguide.md +0 -0
  145. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/warnings.md +0 -0
  146. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/whatissast.md +0 -0
  147. {codeaudit-1.9.0 → codeaudit-1.9.2}/docs/whysast.md +0 -0
  148. {codeaudit-1.9.0 → codeaudit-1.9.2}/filescan.png +0 -0
  149. {codeaudit-1.9.0 → codeaudit-1.9.2}/pyproject.toml +0 -0
  150. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/codeaudit/__init__.py +0 -0
  151. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/codeaudit/altairplots.py +0 -0
  152. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/codeaudit/api_helpers.py +0 -0
  153. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/codeaudit/api_reporting.py +0 -0
  154. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/codeaudit/checkmodules.py +0 -0
  155. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/codeaudit/ci_workflowscan.py +0 -0
  156. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/codeaudit/complexitycheck.py +0 -0
  157. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/codeaudit/dashboard_reports.py +0 -0
  158. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/codeaudit/data/sastchecks.csv +0 -0
  159. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/codeaudit/data/secretslist.txt +0 -0
  160. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/codeaudit/htmlhelpfunctions.py +0 -0
  161. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/codeaudit/issuevalidations.py +0 -0
  162. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/codeaudit/privacy_lint.py +0 -0
  163. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/codeaudit/security_checks.py +0 -0
  164. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/codeaudit/simple.css +0 -0
  165. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/codeaudit/suppression.py +0 -0
  166. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/codeaudit/totals.py +0 -0
  167. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/dashboard/__init__.py +0 -0
  168. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/dashboard/module_load_validation.html +0 -0
  169. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/dashboard/module_load_validation2.html +0 -0
  170. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/dashboard/pyodide/dashboardapp_171.html +0 -0
  171. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/dashboard/pyodide/dashboardapp_171.js +0 -0
  172. /codeaudit-1.9.0/src/dashboard/pyodide/dashboardapp.html → /codeaudit-1.9.2/src/dashboard/pyodide/dashboardapp_190.html +0 -0
  173. /codeaudit-1.9.0/src/dashboard/pyodide/dashboardapp.js → /codeaudit-1.9.2/src/dashboard/pyodide/dashboardapp_190.js +0 -0
  174. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/dashboard/pyodide/dashboardapp_version162.html +0 -0
  175. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/dashboard/pyodide/dashboardapp_version162.js +0 -0
  176. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/dashboard/pyodide/dashboardapp_version166.html +0 -0
  177. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/dashboard/pyodide/dashboardapp_version166.js +0 -0
  178. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/dashboard/pyodide/deployed/dashboardapp_171.html +0 -0
  179. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/dashboard/pyodide/deployed/dashboardapp_171.js +0 -0
  180. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/dashboard/pyodide/deployed/dashboardapp_180.html +0 -0
  181. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/dashboard/pyodide/deployed/dashboardapp_180.js +0 -0
  182. {codeaudit-1.9.0 → codeaudit-1.9.2}/src/dashboard/requirements.txt +0 -0
  183. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/__init__.py +0 -0
  184. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/count_lines_file1.py +0 -0
  185. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/spytestdir/clean.py +0 -0
  186. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/spytestdir/elastic.py +0 -0
  187. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/spytestdir/example1.py +0 -0
  188. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/spytestdir/klyne.py +0 -0
  189. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/spytestdir/mixed.py +0 -0
  190. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/spytestdir/telemetry.py +0 -0
  191. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/spytestdir/telemetryfile2.py +0 -0
  192. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/suppression/sastsuppression_0.py +0 -0
  193. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/suppression/sastsuppression_1.py +0 -0
  194. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/suppression/sastsuppression_2.py +0 -0
  195. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_apicalls.py +0 -0
  196. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_apicalls2.py +0 -0
  197. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_base64.py +0 -0
  198. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_basicpatterns.py +0 -0
  199. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_chmod.py +0 -0
  200. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_constructspart2.py +0 -0
  201. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_correctexceptionuse.py +0 -0
  202. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_count_commentlines.py +0 -0
  203. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_directorycreation.py +0 -0
  204. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_directorycreation2.py +0 -0
  205. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_dynamic_import.py +0 -0
  206. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_edgecases.py +0 -0
  207. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_filescan_api.py +0 -0
  208. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_ftp.py +0 -0
  209. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_hashstrenght.py +0 -0
  210. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_importlib_util.py +0 -0
  211. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_modulecheck.py +0 -0
  212. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_obfuscatingbuiltins.py +0 -0
  213. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_oschecks.py +0 -0
  214. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_pylintreport.py +0 -0
  215. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_pypiscan.py +0 -0
  216. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_random.py +0 -0
  217. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_secretfinding.py +0 -0
  218. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_standardlibconstructs.py +0 -0
  219. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_subprocess.py +0 -0
  220. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_suppression.py +0 -0
  221. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_suppressionlogic.py +0 -0
  222. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_totalscheck.py +0 -0
  223. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_wasmsafe_funtions.py +0 -0
  224. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/test_zstd.py +0 -0
  225. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/unit_tests/__init__.py +0 -0
  226. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/unit_tests/test_clean_import_list.py +0 -0
  227. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/unit_tests/test_collectsourcefiles.py +0 -0
  228. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/unit_tests/test_count_weaknesses.py +0 -0
  229. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/unit_tests/test_readinsourcefile.py +0 -0
  230. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/allshit.py +0 -0
  231. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/apivalidations.py +0 -0
  232. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/assert.py +0 -0
  233. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/base64.py +0 -0
  234. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/chmod_things.py +0 -0
  235. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/codeaudit_scan.json +0 -0
  236. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/complexitycheck.py +0 -0
  237. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/correctcounts.py +0 -0
  238. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/danger_imports.py +0 -0
  239. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/directorycreation.py +0 -0
  240. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/directorycreation2.py +0 -0
  241. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/dunderexec_with_parsing_error.py +0 -0
  242. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/eval.py +0 -0
  243. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/eval2.py +0 -0
  244. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/exception.py +0 -0
  245. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/file3.py +0 -0
  246. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/file_with_warnings.py +0 -0
  247. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/ftp.py +0 -0
  248. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/gzip.py +0 -0
  249. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/hashcheck.py +0 -0
  250. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/httpserver.py +0 -0
  251. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/inputstatement.py +0 -0
  252. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/linkaudit-0.9.9.tar.gz +0 -0
  253. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/malware.py +0 -0
  254. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/malwareAI.py +0 -0
  255. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/marshal.py +0 -0
  256. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/modulecheck.py +0 -0
  257. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/multiprocessing.py +0 -0
  258. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/obfuscating.py +0 -0
  259. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/oschecks.py +0 -0
  260. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/pickle.py +0 -0
  261. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/python2_file_willnotwork.py +0 -0
  262. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/random.py +0 -0
  263. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/shelve.py +0 -0
  264. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/shutil.py +0 -0
  265. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/subprocess.py +0 -0
  266. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/syslibrary.py +0 -0
  267. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/tarfilevalidation.py +0 -0
  268. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/tempcheck.py +0 -0
  269. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/validation1.py +0 -0
  270. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/validation2.py +0 -0
  271. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/xml.py +0 -0
  272. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/zipfile.py +0 -0
  273. {codeaudit-1.9.0 → codeaudit-1.9.2}/tests/validationfiles/zstd.py +0 -0
@@ -1,5 +1,35 @@
1
1
  # Change Log
2
2
 
3
+ ## Version 1.9.2:
4
+
5
+ * Fixed issue for API scan
6
+
7
+ ## Version 1.9.1:
8
+
9
+ **Added**
10
+
11
+ * Extra badge in the `README.md` for direct launch of the WASM version.
12
+ * A switch option in the UI for the WASM version to use or suppress markers in code when scanning.
13
+ * AI policy section for contributions in the manual.
14
+
15
+ **Changed**
16
+
17
+ * Adjusted validation values for checking `targz` files (`max_file_size = 15 * 1024 * 1024`, `max_tar_members = 12000`).
18
+ * Tightened security for validating Python files using `validate_python` from the `fileaudit` Python module.
19
+ * Dashboard version: Improved validation for valid PyPI names on the client side.
20
+ * Improved handling and status of tabs in the WASM version.
21
+ * Minor updates to the CLI help text.
22
+ * Changed the manual title from **Python Security Code Audit** to **Python Code Audit**.
23
+
24
+ **Fixed**
25
+
26
+ * Improved and updated unit tests for validating the correct working of excluded directories during scans (`test_excluded_dirs`).
27
+
28
+ **Documentation**
29
+
30
+ * General updates and fixes for the manual.
31
+
32
+
3
33
  ## Version 1.9.0:
4
34
 
5
35
  **Added**
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codeaudit
3
- Version: 1.9.0
3
+ Version: 1.9.2
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
@@ -35,7 +35,7 @@ Description-Content-Type: text/markdown
35
35
 
36
36
  # Codeaudit
37
37
 
38
- ![CodeauditLogo](https://github.com/nocomplexity/codeaudit/raw/main/docs/images/codeauditlogo.png)
38
+ [![CodeauditLogo](https://github.com/nocomplexity/codeaudit/raw/main/docs/images/codeauditlogo.png)](https://codeaudit.nocomplexity.com/)
39
39
 
40
40
  [![PythonCodeAudit Badge](https://img.shields.io/badge/Python%20Code%20Audit-Security%20Verified-FF0000?style=flat-square)](https://github.com/nocomplexity/codeaudit)
41
41
  [![PyPI - Version](https://img.shields.io/pypi/v/codeaudit.svg)](https://pypi.org/project/codeaudit)
@@ -43,6 +43,7 @@ Description-Content-Type: text/markdown
43
43
  [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/10970/badge)](https://www.bestpractices.dev/projects/10970)
44
44
  [![Documentation](https://img.shields.io/badge/Python%20Code%20Audit%20Handbook-Available-blue)](https://nocomplexity.com/documents/codeaudit/intro.html)
45
45
  [![License](https://img.shields.io/badge/License-GPLv3-FFD700)](https://nocomplexity.com/documents/codeaudit/license.html)
46
+ [![Try WebAssembly Version](https://img.shields.io/badge/Try_Live-In%20Your%20Browser-8A2BE2)](https://nocomplexity.com/codeauditapp/dashboardapp.html)
46
47
  [![PyPI Downloads](https://static.pepy.tech/badge/codeaudit)](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
- ![CodeauditLogo](https://github.com/nocomplexity/codeaudit/raw/main/docs/images/codeauditlogo.png)
3
+ [![CodeauditLogo](https://github.com/nocomplexity/codeaudit/raw/main/docs/images/codeauditlogo.png)](https://codeaudit.nocomplexity.com/)
4
4
 
5
5
  [![PythonCodeAudit Badge](https://img.shields.io/badge/Python%20Code%20Audit-Security%20Verified-FF0000?style=flat-square)](https://github.com/nocomplexity/codeaudit)
6
6
  [![PyPI - Version](https://img.shields.io/pypi/v/codeaudit.svg)](https://pypi.org/project/codeaudit)
@@ -8,6 +8,7 @@
8
8
  [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/10970/badge)](https://www.bestpractices.dev/projects/10970)
9
9
  [![Documentation](https://img.shields.io/badge/Python%20Code%20Audit%20Handbook-Available-blue)](https://nocomplexity.com/documents/codeaudit/intro.html)
10
10
  [![License](https://img.shields.io/badge/License-GPLv3-FFD700)](https://nocomplexity.com/documents/codeaudit/license.html)
11
+ [![Try WebAssembly Version](https://img.shields.io/badge/Try_Live-In%20Your%20Browser-8A2BE2)](https://nocomplexity.com/codeauditapp/dashboardapp.html)
11
12
  [![PyPI Downloads](https://static.pepy.tech/badge/codeaudit)](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
@@ -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 Security Code Audit</b>
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
 
@@ -1,4 +1,4 @@
1
- ## Exception Statements
1
+ # Exception Statements
2
2
 
3
3
  Python Code Audit detects the use of `pass` within an `except` block.
4
4
 
@@ -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.9.0
3
+ Python Code Audit commands for: version: 1.9.2
4
4
  ```
5
5
  ----------------------------------------------------
6
6
  _ __ _
@@ -23,7 +23,7 @@ Commands:
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://simplifysecurity.nocomplexity.com/
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
@@ -33,7 +33,15 @@
33
33
  "execution_count": 3,
34
34
  "id": "bbcc805d-0f4d-49fc-a0f5-3ad863fe6da8",
35
35
  "metadata": {},
36
- "outputs": [],
36
+ "outputs": [
37
+ {
38
+ "name": "stdout",
39
+ "output_type": "stream",
40
+ "text": [
41
+ "Exception: FileAudit Security Validation Failed - Only .py files are accepted (got extension ''): linkaudit\n"
42
+ ]
43
+ }
44
+ ],
37
45
  "source": [
38
46
  "result = filescan(packagename) # linkaudit is a package that is present on PyPI.org"
39
47
  ]
@@ -48,18 +56,20 @@
48
56
  "data": {
49
57
  "text/plain": [
50
58
  "{'name': 'Python_Code_Audit',\n",
51
- " 'version': '1.6.2',\n",
52
- " 'generated_on': '2026-04-10 16:09',\n",
59
+ " 'version': '1.9.1',\n",
60
+ " 'generated_on': '2026-10-09 19:26',\n",
53
61
  " 'package_name': 'linkaudit',\n",
54
- " 'package_release': '0.9.8',\n",
62
+ " 'package_release': '0.9.10',\n",
63
+ " 'update_date': '2026-10-08',\n",
64
+ " 'days_since_last_update': 1,\n",
55
65
  " 'statistics_overview': {'Number_Of_Files': 6,\n",
56
- " 'Number_Of_Lines': 523,\n",
57
- " 'AST_Nodes': 225,\n",
66
+ " 'Number_Of_Lines': 527,\n",
67
+ " 'AST_Nodes': 222,\n",
58
68
  " 'Core Modules': 6,\n",
59
- " 'External Modules': 3,\n",
69
+ " 'External Modules': 1,\n",
60
70
  " 'Functions': 16,\n",
61
71
  " 'Classes': 0,\n",
62
- " 'Comment_Lines': 194,\n",
72
+ " 'Comment_Lines': 189,\n",
63
73
  " 'Median_Complexity': 9.3,\n",
64
74
  " 'Maximum_Complexity': 26},\n",
65
75
  " 'module_overview': {'core_modules': ['asyncio',\n",
@@ -68,9 +78,9 @@
68
78
  " 'sys',\n",
69
79
  " 'urllib.error',\n",
70
80
  " 'urllib.request'],\n",
71
- " 'imported_modules': ['_version', 'fire', 'linkaudit']},\n",
81
+ " 'imported_modules': ['fire']},\n",
72
82
  " 'file_security_info': {0: {'FileName': '__init__.py',\n",
73
- " 'FilePath': '/tmp/codeaudit_sviyoehh/linkaudit-0.9.8/src/linkaudit/__init__.py',\n",
83
+ " 'FilePath': '/tmp/codeaudit_aftxsa3p/linkaudit-0.9.10/src/linkaudit/__init__.py',\n",
74
84
  " 'Number_Of_Lines': 10,\n",
75
85
  " 'AST_Nodes': 2,\n",
76
86
  " 'Std-Modules': 0,\n",
@@ -85,14 +95,14 @@
85
95
  " 'file_name': '__init__.py',\n",
86
96
  " 'sast_result': {}},\n",
87
97
  " 1: {'FileName': 'html_result.py',\n",
88
- " 'FilePath': '/tmp/codeaudit_sviyoehh/linkaudit-0.9.8/src/linkaudit/html_result.py',\n",
89
- " 'Number_Of_Lines': 83,\n",
90
- " 'AST_Nodes': 28,\n",
98
+ " 'FilePath': '/tmp/codeaudit_aftxsa3p/linkaudit-0.9.10/src/linkaudit/html_result.py',\n",
99
+ " 'Number_Of_Lines': 84,\n",
100
+ " 'AST_Nodes': 29,\n",
91
101
  " 'Std-Modules': 1,\n",
92
102
  " 'External-Modules': 0,\n",
93
103
  " 'Functions': 2,\n",
94
104
  " 'Classes': 0,\n",
95
- " 'Comment_Lines': 46,\n",
105
+ " 'Comment_Lines': 50,\n",
96
106
  " 'Complexity_Score': 6,\n",
97
107
  " 'warnings': 0,\n",
98
108
  " 'core_modules': ['os'],\n",
@@ -100,14 +110,14 @@
100
110
  " 'file_name': 'html_result.py',\n",
101
111
  " 'sast_result': {}},\n",
102
112
  " 2: {'FileName': 'markdownhelpers.py',\n",
103
- " 'FilePath': '/tmp/codeaudit_sviyoehh/linkaudit-0.9.8/src/linkaudit/markdownhelpers.py',\n",
104
- " 'Number_Of_Lines': 128,\n",
113
+ " 'FilePath': '/tmp/codeaudit_aftxsa3p/linkaudit-0.9.10/src/linkaudit/markdownhelpers.py',\n",
114
+ " 'Number_Of_Lines': 129,\n",
105
115
  " 'AST_Nodes': 50,\n",
106
116
  " 'Std-Modules': 2,\n",
107
117
  " 'External-Modules': 0,\n",
108
118
  " 'Functions': 4,\n",
109
119
  " 'Classes': 0,\n",
110
- " 'Comment_Lines': 37,\n",
120
+ " 'Comment_Lines': 38,\n",
111
121
  " 'Complexity_Score': 20,\n",
112
122
  " 'warnings': 0,\n",
113
123
  " 'core_modules': ['os', 're'],\n",
@@ -115,26 +125,22 @@
115
125
  " 'file_name': 'markdownhelpers.py',\n",
116
126
  " 'sast_result': {}},\n",
117
127
  " 3: {'FileName': 'linkaudit.py',\n",
118
- " 'FilePath': '/tmp/codeaudit_sviyoehh/linkaudit-0.9.8/src/linkaudit/linkaudit.py',\n",
119
- " 'Number_Of_Lines': 271,\n",
120
- " 'AST_Nodes': 135,\n",
128
+ " 'FilePath': '/tmp/codeaudit_aftxsa3p/linkaudit-0.9.10/src/linkaudit/linkaudit.py',\n",
129
+ " 'Number_Of_Lines': 273,\n",
130
+ " 'AST_Nodes': 131,\n",
121
131
  " 'Std-Modules': 5,\n",
122
132
  " 'External-Modules': 2,\n",
123
133
  " 'Functions': 9,\n",
124
134
  " 'Classes': 0,\n",
125
- " 'Comment_Lines': 84,\n",
135
+ " 'Comment_Lines': 74,\n",
126
136
  " 'Complexity_Score': 26,\n",
127
137
  " 'warnings': 0,\n",
128
138
  " 'core_modules': ['asyncio', 'os', 'sys', 'urllib.error', 'urllib.request'],\n",
129
139
  " 'imported_modules': ['fire', 'linkaudit'],\n",
130
140
  " 'file_name': 'linkaudit.py',\n",
131
- " 'sast_result': {171: {'line': 171,\n",
132
- " 'validation': 'input',\n",
133
- " 'severity': 'Low',\n",
134
- " 'info': 'User input must be strictly sanitized and validated to prevent injection vulnerabilities.',\n",
135
- " 'code': \"<pre><code class='language-python'> files_tocheck = markdownhelpers.collect_markdown_files(bookdirectory)\\n result_output = input(&quot;HTML output [H] (=Default) or TXT output [T]? )&quot;)\\n txtoutput = &quot;# Result of Link Audit for markdown files (URL checker) \\\\n\\\\n&quot;</code></pre>\"}}},\n",
141
+ " 'sast_result': {}},\n",
136
142
  " 4: {'FileName': '_version.py',\n",
137
- " 'FilePath': '/tmp/codeaudit_sviyoehh/linkaudit-0.9.8/src/linkaudit/_version.py',\n",
143
+ " 'FilePath': '/tmp/codeaudit_aftxsa3p/linkaudit-0.9.10/src/linkaudit/_version.py',\n",
138
144
  " 'Number_Of_Lines': 1,\n",
139
145
  " 'AST_Nodes': 1,\n",
140
146
  " 'Std-Modules': 0,\n",
@@ -149,7 +155,7 @@
149
155
  " 'file_name': '_version.py',\n",
150
156
  " 'sast_result': {}},\n",
151
157
  " 5: {'FileName': 'nocxhelpers.py',\n",
152
- " 'FilePath': '/tmp/codeaudit_sviyoehh/linkaudit-0.9.8/src/linkaudit/nocxhelpers.py',\n",
158
+ " 'FilePath': '/tmp/codeaudit_aftxsa3p/linkaudit-0.9.10/src/linkaudit/nocxhelpers.py',\n",
153
159
  " 'Number_Of_Lines': 30,\n",
154
160
  " 'AST_Nodes': 9,\n",
155
161
  " 'Std-Modules': 0,\n",
@@ -191,7 +197,7 @@
191
197
  "name": "python",
192
198
  "nbconvert_exporter": "python",
193
199
  "pygments_lexer": "ipython3",
194
- "version": "3.14.3"
200
+ "version": "3.14.7"
195
201
  }
196
202
  },
197
203
  "nbformat": 4,
@@ -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.9.0</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-08-23 12:20</b> with <a href="https://github.com/nocomplexity/codeaudit" target="_blank"><b>Python Code Audit</b></a> version <b>1.9.0</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">&#10084;</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>
777
+ </table><br><p>Number of implemented security validations:<b>89</b></p><p>Version of codeaudit: <b>1.9.2</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 19:31</b> with <a href="https://github.com/nocomplexity/codeaudit" target="_blank"><b>Python Code Audit</b></a> version <b>1.9.2</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">&#10084;</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>
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "Python_Code_Audit",
3
- "version": "1.9.0",
4
- "generated_on": "2026-08-23 12:20",
3
+ "version": "1.9.2",
4
+ "generated_on": "2026-10-09 19:31",
5
5
  "file_security_info": {
6
6
  "0": {
7
7
  "FileName": "demofile.py",
@@ -5,6 +5,8 @@
5
5
  [![PyPI - Version](https://img.shields.io/pypi/v/codeaudit.svg)](https://pypi.org/project/codeaudit)
6
6
  [![Documentation](https://img.shields.io/badge/Python%20Code%20Audit%20Handbook-Available-blue)](https://nocomplexity.com/documents/codeaudit/intro.html)
7
7
  [![License](https://img.shields.io/badge/License-GPLv3-FFD700)](https://nocomplexity.com/documents/codeaudit/license.html)
8
+ [![Try WebAssembly Version](https://img.shields.io/badge/Try_Live-In%20Your%20Browser-8A2BE2)](https://nocomplexity.com/codeauditapp/dashboardapp.html)
9
+
8
10
 
9
11
  ![CodeauditLogo](images/codeauditlogo.png)
10
12
 
@@ -18,7 +18,7 @@ When you contribute text or code to Python Code Audit, your contributions are ma
18
18
 
19
19
  :::{tip}
20
20
  All contributions are welcome!
21
- Think of corrections on the manual, code and more, or better tests.
21
+ Think of corrections on the manual, code and more, or better tests. But be careful with [AI contributions](AI-policy).
22
22
 
23
23
  * Questions, Feature Requests, Bug Reports should all be reported on the [Github Issue Tracker](https://github.com/nocomplexity/codeaudit/issues) .
24
24
 
@@ -1,4 +1,4 @@
1
1
  # SPDX-FileCopyrightText: 2025-present Maikel Mardjan
2
2
  #
3
3
  # SPDX-License-Identifier: GPL-3.0-or-later
4
- __version__ = "1.9.0"
4
+ __version__ = "1.9.2"
@@ -139,11 +139,7 @@ def filescan(input_path, nosec=False):
139
139
  scan_output = _codeaudit_directory_scan(input_path, nosec_flag=nosec)
140
140
  output |= scan_output
141
141
  return output
142
- elif (
143
- file_path.suffix.lower() == ".py"
144
- and file_path.is_file()
145
- and is_ast_parsable(input_path)
146
- ): # check on parseable single Python file
142
+ elif is_ast_parsable(input_path): # check on parseable single Python file
147
143
  # do a file check
148
144
  file_information = overview_per_file(input_path)
149
145
  module_information = get_modules(input_path) # modules per file
@@ -464,11 +460,7 @@ def get_overview(input_path):
464
460
  else:
465
461
  output_msg = f"Directory path {input_path} contains no Python files."
466
462
  return {"Error": output_msg}
467
- elif (
468
- file_path.suffix.lower() == ".py"
469
- and file_path.is_file()
470
- and is_ast_parsable(input_path)
471
- ):
463
+ elif is_ast_parsable(input_path):
472
464
  security_statistics = overview_per_file(input_path)
473
465
  return security_statistics
474
466
  else:
@@ -73,7 +73,7 @@ def display_help():
73
73
  summary = docstring.split("\n", 1)[0]
74
74
  print(f" {command:<20} {summary}")
75
75
  print(
76
- "\nUse 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://simplifysecurity.nocomplexity.com/\n"
76
+ "\nUse 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/\n"
77
77
  )
78
78
 
79
79
 
@@ -18,6 +18,8 @@ import sys
18
18
  import warnings
19
19
  from pathlib import Path
20
20
 
21
+ from fileaudit.python_check import validate_python
22
+
21
23
 
22
24
  def read_in_source_file(file_path):
23
25
  # Ensure file_path is a Path object
@@ -97,24 +99,16 @@ def get_filename_from_path(file_path):
97
99
 
98
100
  def is_ast_parsable(file_path):
99
101
  """
100
- Checks whether a Python file can be parsed using the AST module.
102
+ Checks whether a Python file can be validated and parsed.
103
+ Uses the extensive security checker for valid Python files of the module https://github.com/nocomplexity/fileaudit
101
104
 
102
105
  Args:
103
- file_path (str): Path to the Python source file.
106
+ file_path (str | Path): Path to the Python source file.
104
107
 
105
108
  Returns:
106
- bool: True if the file can be parsed without syntax errors, False otherwise.
109
+ bool: True if the file passes Python validation, False otherwise.
107
110
  """
108
- try:
109
- with open(file_path, "r", encoding="utf-8") as f:
110
- source = f.read()
111
-
112
- with warnings.catch_warnings():
113
- warnings.simplefilter("ignore", category=SyntaxWarning)
114
- ast.parse(source, filename=file_path)
115
- return True
116
- except (SyntaxError, UnicodeDecodeError, ValueError) as e:
117
- return False
111
+ return validate_python(Path(file_path))
118
112
 
119
113
 
120
114
  def has_python_files(input_path):
@@ -14,6 +14,7 @@ Public API functions for Python Code Audit aka codeaudit on pypi.org
14
14
  """
15
15
 
16
16
  import gzip
17
+ import os
17
18
  import json
18
19
  import tarfile
19
20
  import tempfile
@@ -84,10 +85,35 @@ def get_pypi_download_info(package_name):
84
85
 
85
86
 
86
87
  def is_valid_tar_gz(path):
87
- """Return True if the given path is a valid .tar.gz file.
88
- Default values for validate_tar_gz are used! So note that NOT all tar.gz files will be accepted. Use PyPI tar.gz instead if possible.
88
+ """Return True only if the path points to a valid .tar.gz archive.
89
+
90
+ Archives must pass custom validation limits:
91
+ - Maximum file size: 15 MiB
92
+ - Maximum number of tar members: 12,000
89
93
  """
90
- return bool(validate_tar_gz(path, max_tar_members=3000))
94
+ try:
95
+ path = os.fspath(path)
96
+
97
+ return (
98
+ path.endswith(".tar.gz")
99
+ and validate_tar_gz(
100
+ path,
101
+ max_file_size=15 * 1024 * 1024,
102
+ max_tar_members=12000,
103
+ )
104
+ and tarfile.is_tarfile(path)
105
+ )
106
+ except (OSError, ValueError, TypeError, AttributeError, tarfile.TarError):
107
+ return False
108
+
109
+
110
+ # def is_valid_tar_gz(path):
111
+ # """Return True if the given path is a valid .tar.gz file.
112
+ # Custom validation values for validate_tar_gz are used. So note that NOT all tar.gz files will be accepted. Use PyPI package scan instead if possible.
113
+ # """
114
+ # return bool(
115
+ # validate_tar_gz(path, max_file_size=15 * 1024 * 1024, max_tar_members=12000)
116
+ # )
91
117
 
92
118
 
93
119
  def get_targz_package_source(
@@ -160,7 +160,7 @@ def overview_report(directory, filename=DEFAULT_OUTPUT_FILE):
160
160
  print(f"ERROR: Directory '{directory}' contains no Python files.")
161
161
  exit(1)
162
162
  elif file_path.name.endswith(".tar.gz") and validate_tar_gz(
163
- directory
163
+ directory, max_file_size=15 * 1024 * 1024, max_tar_members=12000
164
164
  ): # for local tar.gz or remote tar.gz scans
165
165
  package_name = directory
166
166
  advice = f'<p>&#128073; To perform a SAST scan on the source code, run:<pre><code class="language-python">codeaudit filescan {directory}</code></pre></p>'
@@ -379,11 +379,7 @@ def scan_report(input_path, filename=DEFAULT_OUTPUT_FILE, nosec=False):
379
379
  directory_scan_report(
380
380
  input_path, nosec_flag=nosec, filename=filename
381
381
  ) # create a package aka directory scan report
382
- elif (
383
- file_path.suffix == ".py"
384
- and file_path.is_file()
385
- and is_ast_parsable(input_path)
386
- ):
382
+ elif is_ast_parsable(input_path):
387
383
  # create a sast file check report
388
384
  if not nosec: # no filtering on reviewed items with markers in code
389
385
  scan_output = perform_validations(
@@ -410,7 +406,7 @@ def scan_report(input_path, filename=DEFAULT_OUTPUT_FILE, nosec=False):
410
406
  create_htmlfile(html_output, filename)
411
407
 
412
408
  elif file_path.name.endswith(".tar.gz") and validate_tar_gz(
413
- input_path
409
+ input_path, max_file_size=15 * 1024 * 1024, max_tar_members=12000
414
410
  ): # for local tar.gz or remote tar.gz scans
415
411
  src_dir, tmp_handle = get_targz_package_source(input_path)
416
412
  directory_scan_report(
@@ -744,9 +740,7 @@ def report_module_information(inputfile, reportname=DEFAULT_OUTPUT_FILE):
744
740
  "See codeaudit modulescan -h or check the manual https://codeaudit.nocomplexity.com"
745
741
  )
746
742
  exit(1)
747
- elif (
748
- file_path.suffix == ".py" and file_path.is_file() and is_ast_parsable(inputfile)
749
- ):
743
+ elif is_ast_parsable(inputfile):
750
744
  source = read_in_source_file(inputfile)
751
745
  used_modules = get_imported_modules(source)
752
746
  # Initial call to print 0% progress