codeaudit 1.6.4__tar.gz → 1.6.6__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 (257) hide show
  1. codeaudit-1.6.6/.github/workflows/python-test.yml +24 -0
  2. codeaudit-1.6.6/.gitignore +152 -0
  3. {codeaudit-1.6.4 → codeaudit-1.6.6}/CHANGELOG.md +43 -0
  4. {codeaudit-1.6.4 → codeaudit-1.6.6}/PKG-INFO +2 -2
  5. codeaudit-1.6.6/cov_html/.gitignore +2 -0
  6. codeaudit-1.6.6/cov_html/class_index.html +321 -0
  7. codeaudit-1.6.6/cov_html/coverage_html_cb_dd2e7eb5.js +735 -0
  8. codeaudit-1.6.6/cov_html/favicon_32_cb_c827f16f.png +0 -0
  9. codeaudit-1.6.6/cov_html/function_index.html +1571 -0
  10. codeaudit-1.6.6/cov_html/index.html +288 -0
  11. codeaudit-1.6.6/cov_html/keybd_closed_cb_900cfef5.png +0 -0
  12. codeaudit-1.6.6/cov_html/status.json +1 -0
  13. codeaudit-1.6.6/cov_html/style_cb_9ff733b0.css +389 -0
  14. codeaudit-1.6.6/cov_html/z_15dab3f49bf85fa8___about___py.html +101 -0
  15. codeaudit-1.6.6/cov_html/z_15dab3f49bf85fa8___init___py.html +101 -0
  16. codeaudit-1.6.6/cov_html/z_15dab3f49bf85fa8_altairplots_py.html +1098 -0
  17. codeaudit-1.6.6/cov_html/z_15dab3f49bf85fa8_api_helpers_py.html +382 -0
  18. codeaudit-1.6.6/cov_html/z_15dab3f49bf85fa8_api_interfaces_py.html +704 -0
  19. codeaudit-1.6.6/cov_html/z_15dab3f49bf85fa8_api_reporting_py.html +141 -0
  20. codeaudit-1.6.6/cov_html/z_15dab3f49bf85fa8_checkmodules_py.html +250 -0
  21. codeaudit-1.6.6/cov_html/z_15dab3f49bf85fa8_codeaudit_dashboard_py.html +436 -0
  22. codeaudit-1.6.6/cov_html/z_15dab3f49bf85fa8_codeaudit_py.html +200 -0
  23. codeaudit-1.6.6/cov_html/z_15dab3f49bf85fa8_complexitycheck_py.html +217 -0
  24. codeaudit-1.6.6/cov_html/z_15dab3f49bf85fa8_dashboard_reports_py.html +510 -0
  25. codeaudit-1.6.6/cov_html/z_15dab3f49bf85fa8_filehelpfunctions_py.html +233 -0
  26. codeaudit-1.6.6/cov_html/z_15dab3f49bf85fa8_htmlhelpfunctions_py.html +195 -0
  27. codeaudit-1.6.6/cov_html/z_15dab3f49bf85fa8_issuevalidations_py.html +239 -0
  28. codeaudit-1.6.6/cov_html/z_15dab3f49bf85fa8_privacy_lint_py.html +454 -0
  29. codeaudit-1.6.6/cov_html/z_15dab3f49bf85fa8_pypi_package_scan_py.html +211 -0
  30. codeaudit-1.6.6/cov_html/z_15dab3f49bf85fa8_reporting_py.html +1103 -0
  31. codeaudit-1.6.6/cov_html/z_15dab3f49bf85fa8_security_checks_py.html +155 -0
  32. codeaudit-1.6.6/cov_html/z_15dab3f49bf85fa8_suppression_py.html +335 -0
  33. codeaudit-1.6.6/cov_html/z_15dab3f49bf85fa8_totals_py.html +278 -0
  34. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/CLIcommands.ipynb +15 -16
  35. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/_toc.yml +5 -1
  36. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/about.md +1 -1
  37. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/apidocs/codeaudit.rst +6 -0
  38. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/apidocs/modules.rst +4 -2
  39. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/astlines.md +0 -2
  40. codeaudit-1.6.6/docs/checks/base64_check.md +88 -0
  41. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/checks/exception_check.md +19 -8
  42. codeaudit-1.6.6/docs/checks/ftp_check.md +59 -0
  43. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/codeauditcommands.md +1 -1
  44. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/examples/ca_api_example_basic.ipynb +11 -11
  45. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/examples/ca_checks.ipynb +6 -12
  46. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/examples/codeauditchecks.html +7 -1
  47. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/examples/demoscan.json +2 -2
  48. codeaudit-1.6.6/docs/examples/example_risk_heatmap.ipynb +876 -0
  49. codeaudit-1.6.6/docs/examples/example_weakness_perfile_view.ipynb +1061 -0
  50. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/features.md +1 -1
  51. codeaudit-1.6.6/docs/installation.md +45 -0
  52. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/intro.md +2 -6
  53. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/makeitbetter.md +1 -1
  54. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/markingissues.md +2 -2
  55. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/securecoding.md +3 -2
  56. codeaudit-1.6.6/docs/validatetips.md +95 -0
  57. {codeaudit-1.6.4 → codeaudit-1.6.6}/pyproject.toml +25 -5
  58. codeaudit-1.6.6/src/codeaudit/__about__.py +4 -0
  59. {codeaudit-1.6.4 → codeaudit-1.6.6}/src/codeaudit/__init__.py +1 -0
  60. {codeaudit-1.6.4 → codeaudit-1.6.6}/src/codeaudit/altairplots.py +84 -19
  61. {codeaudit-1.6.4 → codeaudit-1.6.6}/src/codeaudit/api_helpers.py +0 -2
  62. {codeaudit-1.6.4 → codeaudit-1.6.6}/src/codeaudit/api_interfaces.py +38 -35
  63. {codeaudit-1.6.4 → codeaudit-1.6.6}/src/codeaudit/api_reporting.py +1 -2
  64. codeaudit-1.6.4/src/codeaudit/codeaudit.py → codeaudit-1.6.6/src/codeaudit/corecli.py +3 -5
  65. {codeaudit-1.6.4 → codeaudit-1.6.6}/src/codeaudit/dashboard_reports.py +14 -26
  66. {codeaudit-1.6.4 → codeaudit-1.6.6}/src/codeaudit/data/sastchecks.csv +5 -1
  67. {codeaudit-1.6.4 → codeaudit-1.6.6}/src/codeaudit/privacy_lint.py +2 -2
  68. {codeaudit-1.6.4 → codeaudit-1.6.6}/src/codeaudit/pypi_package_scan.py +2 -4
  69. {codeaudit-1.6.4 → codeaudit-1.6.6}/src/codeaudit/reporting.py +5 -4
  70. codeaudit-1.6.6/src/dashboard/__init__.py +1 -0
  71. {codeaudit-1.6.4 → codeaudit-1.6.6}/src/dashboard/dashboardapp.py +15 -13
  72. codeaudit-1.6.6/src/dashboard/module_load_validation.html +64 -0
  73. codeaudit-1.6.6/src/dashboard/module_load_validation2.html +112 -0
  74. codeaudit-1.6.6/src/dashboard/pyodide/deployed/dashboardapp.js +91 -0
  75. codeaudit-1.6.6/src/dashboard/pyodide/deployed/dashboardapp_version162.html +295 -0
  76. codeaudit-1.6.6/src/dashboard/pyodide/deployed/dashboardapp_version162.js +91 -0
  77. codeaudit-1.6.6/src/dashboard/pyodide/tiny.html +249 -0
  78. codeaudit-1.6.6/src/dashboard/pyodide/tiny.js +91 -0
  79. codeaudit-1.6.6/src/dashboard/requirements.txt +3 -0
  80. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/test_apicalls.py +2 -2
  81. codeaudit-1.6.6/tests/test_apicalls2.py +23 -0
  82. codeaudit-1.6.6/tests/test_base64.py +31 -0
  83. codeaudit-1.6.6/tests/test_ftp.py +27 -0
  84. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/test_standardlibconstructs.py +0 -20
  85. codeaudit-1.6.6/tests/unit_tests/test_collectsourcefiles.py +96 -0
  86. codeaudit-1.6.6/tests/unit_tests/test_filehelpfunctions.py +139 -0
  87. codeaudit-1.6.6/tests/unit_tests/test_readinsourcefile.py +97 -0
  88. codeaudit-1.6.6/tests/validationfiles/base64.py +20 -0
  89. codeaudit-1.6.6/tests/validationfiles/ftp.py +77 -0
  90. codeaudit-1.6.4/.github/workflows/python-static.yml +0 -28
  91. codeaudit-1.6.4/.github/workflows/python-test.yml +0 -28
  92. codeaudit-1.6.4/.gitignore +0 -148
  93. codeaudit-1.6.4/docs/checks/base64_check.md +0 -62
  94. codeaudit-1.6.4/docs/installation.md +0 -24
  95. codeaudit-1.6.4/src/dashboard/requirements.txt +0 -7
  96. codeaudit-1.6.4/tests/validationfiles/base64.py +0 -4
  97. codeaudit-1.6.4/tox.ini +0 -17
  98. {codeaudit-1.6.4 → codeaudit-1.6.6}/CONTRIBUTE.md +0 -0
  99. {codeaudit-1.6.4 → codeaudit-1.6.6}/LICENSE.txt +0 -0
  100. {codeaudit-1.6.4 → codeaudit-1.6.6}/README.md +0 -0
  101. {codeaudit-1.6.4 → codeaudit-1.6.6}/SECURITY.md +0 -0
  102. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/CONTRIBUTE.md +0 -0
  103. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/_config.yml +0 -0
  104. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/_static/nocxstyle.css +0 -0
  105. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/apidocs/api_intro.md +0 -0
  106. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/architecture.md +0 -0
  107. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/astlines2.md +0 -0
  108. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/changelog.md +0 -0
  109. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/checks/assert_check.md +0 -0
  110. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/checks/binding_check.md +0 -0
  111. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/checks/builtinfunctions_check.md +0 -0
  112. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/checks/chmod_check.md +0 -0
  113. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/checks/directorycreation_check.md +0 -0
  114. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/checks/dynamicimport_check.md +0 -0
  115. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/checks/hash_check.md +0 -0
  116. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/checks/httpserver_check.md +0 -0
  117. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/checks/input_check.md +0 -0
  118. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/checks/loggingconf_check.md +0 -0
  119. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/checks/marshal_check.md +0 -0
  120. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/checks/mktemp_check.md +0 -0
  121. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/checks/multiprocessing_check.md +0 -0
  122. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/checks/pickle_check.md +0 -0
  123. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/checks/random_check.md +0 -0
  124. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/checks/shelve_check.md +0 -0
  125. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/checks/shutil_check.md +0 -0
  126. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/checks/subprocess_check.md +0 -0
  127. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/checks/syscalls_check.md +0 -0
  128. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/checks/systemcalls_check.md +0 -0
  129. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/checks/tarfile_extract_check.md +0 -0
  130. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/checks/xml_check.md +0 -0
  131. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/checks/zipfile_check.md +0 -0
  132. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/checksinformation.md +0 -0
  133. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/codeauditchecks.md +0 -0
  134. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/codeauditoverview.md +0 -0
  135. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/complexitycheck.md +0 -0
  136. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/data_egress_implementation.md +0 -0
  137. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/data_exfiltration_detection.md +0 -0
  138. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/examples/ca_api_example_checks.ipynb +0 -0
  139. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/examples/ca_api_example_json.ipynb +0 -0
  140. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/examples/ca_api_example_overview.ipynb +0 -0
  141. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/examples/ca_api_example_scanning.ipynb +0 -0
  142. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/examples/demofile.py +0 -0
  143. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/examples/directoryscan.html +0 -0
  144. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/examples/filescan.html +0 -0
  145. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/examples/modulescan.html +0 -0
  146. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/examples/overview.html +0 -0
  147. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/filescan.md +0 -0
  148. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/filescan.png +0 -0
  149. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/handling_errors.md +0 -0
  150. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/help.md +0 -0
  151. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/howtoscan.md +0 -0
  152. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/images/OO.png +0 -0
  153. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/images/ROI_logo.png +0 -0
  154. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/images/YourLogoHere.png +0 -0
  155. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/images/ai_use.png +0 -0
  156. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/images/architecture_overview.png +0 -0
  157. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/images/codeauditlogo.png +0 -0
  158. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/images/filescan_screenshot_16012026.png +0 -0
  159. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/images/modulescan_screenshot_16012026.png +0 -0
  160. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/images/nocxbanner.png +0 -0
  161. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/images/overview_linkaudit.png +0 -0
  162. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/images/overview_screenshot_16012026.png +0 -0
  163. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/implementedvalidations.md +0 -0
  164. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/issues.md +0 -0
  165. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/license.md +0 -0
  166. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/modulescan.md +0 -0
  167. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/overviewplot.png +0 -0
  168. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/pca_overview.png +0 -0
  169. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/project_philosophy.md +0 -0
  170. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/sponsors.md +0 -0
  171. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/userguide.md +0 -0
  172. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/warnings.md +0 -0
  173. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/whatissast.md +0 -0
  174. {codeaudit-1.6.4 → codeaudit-1.6.6}/docs/whysast.md +0 -0
  175. {codeaudit-1.6.4 → codeaudit-1.6.6}/filescan.png +0 -0
  176. {codeaudit-1.6.4 → codeaudit-1.6.6}/src/codeaudit/checkmodules.py +0 -0
  177. {codeaudit-1.6.4 → codeaudit-1.6.6}/src/codeaudit/complexitycheck.py +0 -0
  178. {codeaudit-1.6.4 → codeaudit-1.6.6}/src/codeaudit/data/secretslist.txt +0 -0
  179. {codeaudit-1.6.4 → codeaudit-1.6.6}/src/codeaudit/filehelpfunctions.py +0 -0
  180. {codeaudit-1.6.4 → codeaudit-1.6.6}/src/codeaudit/htmlhelpfunctions.py +0 -0
  181. {codeaudit-1.6.4 → codeaudit-1.6.6}/src/codeaudit/issuevalidations.py +0 -0
  182. {codeaudit-1.6.4 → codeaudit-1.6.6}/src/codeaudit/security_checks.py +0 -0
  183. {codeaudit-1.6.4 → codeaudit-1.6.6}/src/codeaudit/simple.css +0 -0
  184. {codeaudit-1.6.4 → codeaudit-1.6.6}/src/codeaudit/suppression.py +0 -0
  185. {codeaudit-1.6.4 → codeaudit-1.6.6}/src/codeaudit/totals.py +0 -0
  186. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/__init__.py +0 -0
  187. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/count_lines_file1.py +0 -0
  188. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/spytestdir/clean.py +0 -0
  189. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/spytestdir/elastic.py +0 -0
  190. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/spytestdir/example1.py +0 -0
  191. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/spytestdir/klyne.py +0 -0
  192. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/spytestdir/mixed.py +0 -0
  193. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/spytestdir/telemetry.py +0 -0
  194. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/spytestdir/telemetryfile2.py +0 -0
  195. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/suppression/sastsuppression_0.py +0 -0
  196. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/suppression/sastsuppression_1.py +0 -0
  197. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/suppression/sastsuppression_2.py +0 -0
  198. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/test_basicpatterns.py +0 -0
  199. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/test_chmod.py +0 -0
  200. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/test_constructspart2.py +0 -0
  201. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/test_correctexceptionuse.py +0 -0
  202. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/test_count_commentlines.py +0 -0
  203. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/test_directorycreation.py +0 -0
  204. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/test_directorycreation2.py +0 -0
  205. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/test_edgecases.py +0 -0
  206. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/test_hashstrenght.py +0 -0
  207. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/test_modulecheck.py +0 -0
  208. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/test_obfuscatingbuiltins.py +0 -0
  209. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/test_oschecks.py +0 -0
  210. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/test_pylintreport.py +0 -0
  211. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/test_pypiscan.py +0 -0
  212. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/test_random.py +0 -0
  213. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/test_secretfinding.py +0 -0
  214. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/test_subprocess.py +0 -0
  215. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/test_suppression.py +0 -0
  216. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/test_suppressionlogic.py +0 -0
  217. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/test_totalscheck.py +0 -0
  218. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/test_wasmsafe_funtions.py +0 -0
  219. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/test_zstd.py +0 -0
  220. {codeaudit-1.6.4/src/dashboard → codeaudit-1.6.6/tests/unit_tests}/__init__.py +0 -0
  221. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/allshit.py +0 -0
  222. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/apivalidations.py +0 -0
  223. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/assert.py +0 -0
  224. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/chmod_things.py +0 -0
  225. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/complexitycheck.py +0 -0
  226. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/correctcounts.py +0 -0
  227. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/directorycreation.py +0 -0
  228. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/directorycreation2.py +0 -0
  229. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/dunderexec_with_parsing_error.py +0 -0
  230. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/eval.py +0 -0
  231. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/eval2.py +0 -0
  232. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/exception.py +0 -0
  233. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/file3.py +0 -0
  234. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/file_with_warnings.py +0 -0
  235. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/gzip.py +0 -0
  236. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/hashcheck.py +0 -0
  237. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/httpserver.py +0 -0
  238. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/inputstatement.py +0 -0
  239. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/marshal.py +0 -0
  240. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/modulecheck.py +0 -0
  241. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/multiprocessing.py +0 -0
  242. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/obfuscating.py +0 -0
  243. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/oschecks.py +0 -0
  244. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/pickle.py +0 -0
  245. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/python2_file_willnotwork.py +0 -0
  246. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/random.py +0 -0
  247. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/shelve.py +0 -0
  248. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/shutil.py +0 -0
  249. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/subprocess.py +0 -0
  250. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/syslibrary.py +0 -0
  251. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/tarfilevalidation.py +0 -0
  252. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/tempcheck.py +0 -0
  253. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/validation1.py +0 -0
  254. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/validation2.py +0 -0
  255. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/xml.py +0 -0
  256. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/zipfile.py +0 -0
  257. {codeaudit-1.6.4 → codeaudit-1.6.6}/tests/validationfiles/zstd.py +0 -0
@@ -0,0 +1,24 @@
1
+ # This workflow will install Python dependencies, run tests and lint with a variety of Python versions
2
+ # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python
3
+
4
+ name: Python Package Test
5
+
6
+ on: [push, pull_request]
7
+
8
+ jobs:
9
+ test:
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+ - name: Set up Python ${{ matrix.python-version }}
15
+ uses: actions/setup-python@v3
16
+ with:
17
+ # this is needed only to install hatch
18
+ python-version: 3.14
19
+ - name: Install dependencies
20
+ run: |
21
+ python -m pip install --upgrade pip hatch
22
+ - name: Test with hatch
23
+ run: |
24
+ hatch test -acr
@@ -0,0 +1,152 @@
1
+ # Logs
2
+ logs
3
+ *.log
4
+ npm-debug.log*
5
+ yarn-debug.log*
6
+ yarn-error.log*
7
+ lerna-debug.log*
8
+ .pnpm-debug.log*
9
+
10
+ # Diagnostic reports (https://nodejs.org/api/report.html)
11
+ report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
12
+
13
+ # Runtime data
14
+ pids
15
+ *.pid
16
+ *.seed
17
+ *.pid.lock
18
+
19
+ # Directory for instrumented libs generated by jscoverage/JSCover
20
+ lib-cov
21
+
22
+ # Coverage directory used by tools like istanbul
23
+ coverage
24
+ *.lcov
25
+
26
+ # nyc test coverage
27
+ .nyc_output
28
+
29
+ # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
30
+ .grunt
31
+
32
+ # Bower dependency directory (https://bower.io/)
33
+ bower_components
34
+
35
+ # node-waf configuration
36
+ .lock-wscript
37
+
38
+ # Compiled binary addons (https://nodejs.org/api/addons.html)
39
+ build/Release
40
+
41
+ # Dependency directories
42
+ node_modules/
43
+ jspm_packages/
44
+
45
+ # Snowpack dependency directory (https://snowpack.dev/)
46
+ web_modules/
47
+
48
+ # TypeScript cache
49
+ *.tsbuildinfo
50
+
51
+ # Optional npm cache directory
52
+ .npm
53
+
54
+ # Optional eslint cache
55
+ .eslintcache
56
+
57
+ # Optional stylelint cache
58
+ .stylelintcache
59
+
60
+ # Microbundle cache
61
+ .rpt2_cache/
62
+ .rts2_cache_cjs/
63
+ .rts2_cache_es/
64
+ .rts2_cache_umd/
65
+
66
+ # Optional REPL history
67
+ .node_repl_history
68
+
69
+ # Output of 'npm pack'
70
+ *.tgz
71
+
72
+ # Yarn Integrity file
73
+ .yarn-integrity
74
+
75
+ # dotenv environment variable files
76
+ .env
77
+ .env.development.local
78
+ .env.test.local
79
+ .env.production.local
80
+ .env.local
81
+
82
+ # parcel-bundler cache (https://parceljs.org/)
83
+ .cache
84
+ .parcel-cache
85
+
86
+ # Next.js build output
87
+ .next
88
+ out
89
+
90
+ # Nuxt.js build / generate output
91
+ .nuxt
92
+ dist
93
+
94
+ # Gatsby files
95
+ .cache/
96
+ # Comment in the public line in if your project uses Gatsby and not Next.js
97
+ # https://nextjs.org/blog/next-9-1#public-directory-support
98
+ # public
99
+
100
+ # vuepress build output
101
+ .vuepress/dist
102
+
103
+ # vuepress v2.x temp and cache directory
104
+ .temp
105
+ .cache
106
+
107
+ # Serverless directories
108
+ .serverless/
109
+
110
+ # FuseBox cache
111
+ .fusebox/
112
+
113
+ # DynamoDB Local files
114
+ .dynamodb/
115
+
116
+ # TernJS port file
117
+ .tern-port
118
+
119
+ # Stores VSCode versions used for testing VSCode extensions
120
+ .vscode-test
121
+
122
+ # yarn v2
123
+ .yarn/cache
124
+ .yarn/unplugged
125
+ .yarn/build-state.yml
126
+ .yarn/install-state.gz
127
+ .pnp.*
128
+
129
+ /_build/
130
+ # Jupyter Book (via myst) build outputs
131
+ _build
132
+
133
+ #Python Code Audit Jupyter Book items that do not belong in git
134
+ docs/.ipynb_checkpoints/
135
+ docs/examples/.ipynb_checkpoints/
136
+
137
+ .venv
138
+ __pycache__/
139
+
140
+ # Python package managers
141
+ uv.lock
142
+ package-lock.json
143
+
144
+ .DS_Store
145
+ .nox
146
+
147
+ #Python Code Audit items for local testing / confi
148
+ .coverage
149
+ .vscode
150
+ src/codeaudit/.ipynb_checkpoints/
151
+
152
+
@@ -1,5 +1,48 @@
1
1
  # Change Log
2
2
 
3
+ ## Version 1.6.6:
4
+
5
+ **Added:**
6
+
7
+ * Extended checking capabilities for Base64 encoding to improve validation rigor.
8
+
9
+ **Changed**
10
+
11
+ * Updated `pyproject.toml` configuration to align with the new WebAssembly (WASM) release requirements.
12
+
13
+ **Fixed**
14
+
15
+ * Resolved compatibility issues and bugs to fully support the new stable WASM version.
16
+
17
+ **Documentation**
18
+
19
+ * Miscellaneous documentation improvements and updates for clarity and coverage.
20
+
21
+
22
+ ## Version 1.6.5:
23
+
24
+ **Added:**
25
+
26
+ * **Plain FTP Validation:** Introduced a new validation check to detect the use of plain FTP. Using FTP in modern Python applications is considered a significant security risk (red flag).
27
+
28
+ **Changed:**
29
+
30
+ * **Version Retrieval:** Reverted the change that retrieved package versions from PyPI (originally introduced in PR #16) due to compatibility issues with WASM.
31
+ * **CI/CD Configuration:** Updated `pyproject.toml` to enhance GitHub Actions testing workflows. (Credit: @jurgenwigg)
32
+
33
+ **Fixed:**
34
+
35
+ * **Docstring Improvements:** Enhanced and refined docstrings across the Altair APIs for better clarity and developer experience.
36
+
37
+ **Documentation:**
38
+
39
+ * **Manual Update:** Substantial improvements to the user manual, including a new section dedicated to integrating and using Python security validation tools.
40
+
41
+ ## Version 1.6.4:
42
+
43
+ Fixed:
44
+ - Dashboard Reporting: Resolved issue affecting dashboard rendering and data output within the Panel / WASM (WebAssembly) environment.
45
+
3
46
 
4
47
  ## Version 1.6.3:
5
48
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codeaudit
3
- Version: 1.6.4
3
+ Version: 1.6.6
4
4
  Summary: A modern Python security source code analyzer (SAST) based on distrust.
5
5
  Project-URL: Documentation, https://github.com/nocomplexity/codeaudit#readme
6
6
  Project-URL: Issues, https://github.com/nocomplexity/codeaudit/issues
@@ -23,7 +23,7 @@ Classifier: Topic :: Software Development :: Quality Assurance
23
23
  Requires-Python: >=3.11
24
24
  Requires-Dist: altair==6.0.0
25
25
  Requires-Dist: fire==0.7.1
26
- Requires-Dist: pandas==3.0.2
26
+ Requires-Dist: pandas>=2.3
27
27
  Provides-Extra: test
28
28
  Requires-Dist: black; extra == 'test'
29
29
  Requires-Dist: pylint; extra == 'test'
@@ -0,0 +1,2 @@
1
+ # Created by coverage.py
2
+ *
@@ -0,0 +1,321 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5
+ <title>Coverage report</title>
6
+ <link rel="icon" sizes="32x32" href="favicon_32_cb_c827f16f.png">
7
+ <link rel="stylesheet" href="style_cb_9ff733b0.css" type="text/css">
8
+ <script src="coverage_html_cb_dd2e7eb5.js" defer></script>
9
+ </head>
10
+ <body class="indexfile">
11
+ <header>
12
+ <div class="content">
13
+ <h1>Coverage report:
14
+ <span class="pc_cov">32%</span>
15
+ </h1>
16
+ <aside id="help_panel_wrapper">
17
+ <input id="help_panel_state" type="checkbox">
18
+ <label for="help_panel_state">
19
+ <img id="keyboard_icon" src="keybd_closed_cb_900cfef5.png" alt="Show/hide keyboard shortcuts">
20
+ </label>
21
+ <div id="help_panel">
22
+ <p class="legend">Shortcuts on this page</p>
23
+ <div class="keyhelp">
24
+ <p>
25
+ <kbd>f</kbd>
26
+ <kbd>n</kbd>
27
+ <kbd>s</kbd>
28
+ <kbd>m</kbd>
29
+ <kbd>x</kbd>
30
+ <kbd>c</kbd>
31
+ &nbsp; change column sorting
32
+ </p>
33
+ <p>
34
+ <kbd>[</kbd>
35
+ <kbd>]</kbd>
36
+ &nbsp; prev/next file
37
+ </p>
38
+ <p>
39
+ <kbd>?</kbd> &nbsp; show/hide this help
40
+ </p>
41
+ </div>
42
+ </div>
43
+ </aside>
44
+ <form id="filter_container">
45
+ <input id="filter" type="text" value="" placeholder="filter...">
46
+ <div>
47
+ <input id="hide100" type="checkbox" >
48
+ <label for="hide100">hide covered</label>
49
+ </div>
50
+ </form>
51
+ <h2>
52
+ <a class="button" href="index.html">Files</a>
53
+ <a class="button" href="function_index.html">Functions</a>
54
+ <a class="button current">Classes</a>
55
+ </h2>
56
+ <p class="text">
57
+ <a class="nav" href="https://coverage.readthedocs.io/en/7.13.5">coverage.py v7.13.5</a>,
58
+ created at 2026-04-09 09:33 +0200
59
+ </p>
60
+ </div>
61
+ </header>
62
+ <main id="index">
63
+ <table class="index" data-sortable>
64
+ <thead>
65
+ <tr class="tablehead" title="Click to sort">
66
+ <th id="file" class="name" aria-sort="none" data-shortcut="f">File<span class="arrows"></span></th>
67
+ <th id="region" class="name" aria-sort="none" data-default-sort-order="ascending" data-shortcut="n">class<span class="arrows"></span></th>
68
+ <th class="spacer">&nbsp;</th>
69
+ <th id="statements" aria-sort="none" data-default-sort-order="descending" data-shortcut="s">statements<span class="arrows"></span></th>
70
+ <th id="missing" aria-sort="none" data-default-sort-order="descending" data-shortcut="m">missing<span class="arrows"></span></th>
71
+ <th id="excluded" aria-sort="none" data-default-sort-order="descending" data-shortcut="x">excluded<span class="arrows"></span></th>
72
+ <th class="spacer">&nbsp;</th>
73
+ <th id="coverage" aria-sort="none" data-shortcut="c">coverage<span class="arrows"></span></th>
74
+ </tr>
75
+ </thead>
76
+ <tbody>
77
+ <tr class="region">
78
+ <td class="name"><a href="z_15dab3f49bf85fa8___about___py.html">src&#8201;/&#8201;codeaudit&#8201;/&#8201;__about__.py</a></td>
79
+ <td class="name"><a href="z_15dab3f49bf85fa8___about___py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
80
+ <td class="spacer">&nbsp;</td>
81
+ <td>1</td>
82
+ <td>0</td>
83
+ <td>0</td>
84
+ <td class="spacer">&nbsp;</td>
85
+ <td data-ratio="1 1">100%</td>
86
+ </tr>
87
+ <tr class="region">
88
+ <td class="name"><a href="z_15dab3f49bf85fa8___init___py.html">src&#8201;/&#8201;codeaudit&#8201;/&#8201;__init__.py</a></td>
89
+ <td class="name"><a href="z_15dab3f49bf85fa8___init___py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
90
+ <td class="spacer">&nbsp;</td>
91
+ <td>1</td>
92
+ <td>0</td>
93
+ <td>0</td>
94
+ <td class="spacer">&nbsp;</td>
95
+ <td data-ratio="1 1">100%</td>
96
+ </tr>
97
+ <tr class="region">
98
+ <td class="name"><a href="z_15dab3f49bf85fa8_altairplots_py.html">src&#8201;/&#8201;codeaudit&#8201;/&#8201;altairplots.py</a></td>
99
+ <td class="name"><a href="z_15dab3f49bf85fa8_altairplots_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
100
+ <td class="spacer">&nbsp;</td>
101
+ <td>229</td>
102
+ <td>213</td>
103
+ <td>0</td>
104
+ <td class="spacer">&nbsp;</td>
105
+ <td data-ratio="16 229">7%</td>
106
+ </tr>
107
+ <tr class="region">
108
+ <td class="name"><a href="z_15dab3f49bf85fa8_api_helpers_py.html">src&#8201;/&#8201;codeaudit&#8201;/&#8201;api_helpers.py</a></td>
109
+ <td class="name"><a href="z_15dab3f49bf85fa8_api_helpers_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
110
+ <td class="spacer">&nbsp;</td>
111
+ <td>131</td>
112
+ <td>118</td>
113
+ <td>0</td>
114
+ <td class="spacer">&nbsp;</td>
115
+ <td data-ratio="13 131">10%</td>
116
+ </tr>
117
+ <tr class="region">
118
+ <td class="name"><a href="z_15dab3f49bf85fa8_api_interfaces_py.html">src&#8201;/&#8201;codeaudit&#8201;/&#8201;api_interfaces.py</a></td>
119
+ <td class="name"><a href="z_15dab3f49bf85fa8_api_interfaces_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
120
+ <td class="spacer">&nbsp;</td>
121
+ <td>178</td>
122
+ <td>139</td>
123
+ <td>1</td>
124
+ <td class="spacer">&nbsp;</td>
125
+ <td data-ratio="39 178">22%</td>
126
+ </tr>
127
+ <tr class="region">
128
+ <td class="name"><a href="z_15dab3f49bf85fa8_api_reporting_py.html">src&#8201;/&#8201;codeaudit&#8201;/&#8201;api_reporting.py</a></td>
129
+ <td class="name"><a href="z_15dab3f49bf85fa8_api_reporting_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
130
+ <td class="spacer">&nbsp;</td>
131
+ <td>12</td>
132
+ <td>12</td>
133
+ <td>0</td>
134
+ <td class="spacer">&nbsp;</td>
135
+ <td data-ratio="0 12">0%</td>
136
+ </tr>
137
+ <tr class="region">
138
+ <td class="name"><a href="z_15dab3f49bf85fa8_checkmodules_py.html">src&#8201;/&#8201;codeaudit&#8201;/&#8201;checkmodules.py</a></td>
139
+ <td class="name"><a href="z_15dab3f49bf85fa8_checkmodules_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
140
+ <td class="spacer">&nbsp;</td>
141
+ <td>71</td>
142
+ <td>18</td>
143
+ <td>0</td>
144
+ <td class="spacer">&nbsp;</td>
145
+ <td data-ratio="53 71">75%</td>
146
+ </tr>
147
+ <tr class="region">
148
+ <td class="name"><a href="z_15dab3f49bf85fa8_codeaudit_py.html">src&#8201;/&#8201;codeaudit&#8201;/&#8201;codeaudit.py</a></td>
149
+ <td class="name"><a href="z_15dab3f49bf85fa8_codeaudit_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
150
+ <td class="spacer">&nbsp;</td>
151
+ <td>35</td>
152
+ <td>35</td>
153
+ <td>0</td>
154
+ <td class="spacer">&nbsp;</td>
155
+ <td data-ratio="0 35">0%</td>
156
+ </tr>
157
+ <tr class="region">
158
+ <td class="name"><a href="z_15dab3f49bf85fa8_codeaudit_dashboard_py.html">src&#8201;/&#8201;codeaudit&#8201;/&#8201;codeaudit_dashboard.py</a></td>
159
+ <td class="name"><a href="z_15dab3f49bf85fa8_codeaudit_dashboard_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
160
+ <td class="spacer">&nbsp;</td>
161
+ <td>136</td>
162
+ <td>136</td>
163
+ <td>0</td>
164
+ <td class="spacer">&nbsp;</td>
165
+ <td data-ratio="0 136">0%</td>
166
+ </tr>
167
+ <tr class="region">
168
+ <td class="name"><a href="z_15dab3f49bf85fa8_complexitycheck_py.html#t21">src&#8201;/&#8201;codeaudit&#8201;/&#8201;complexitycheck.py</a></td>
169
+ <td class="name"><a href="z_15dab3f49bf85fa8_complexitycheck_py.html#t21"><data value='ComplexityVisitor'>ComplexityVisitor</data></a></td>
170
+ <td class="spacer">&nbsp;</td>
171
+ <td>21</td>
172
+ <td>10</td>
173
+ <td>0</td>
174
+ <td class="spacer">&nbsp;</td>
175
+ <td data-ratio="11 21">52%</td>
176
+ </tr>
177
+ <tr class="region">
178
+ <td class="name"><a href="z_15dab3f49bf85fa8_complexitycheck_py.html">src&#8201;/&#8201;codeaudit&#8201;/&#8201;complexitycheck.py</a></td>
179
+ <td class="name"><a href="z_15dab3f49bf85fa8_complexitycheck_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
180
+ <td class="spacer">&nbsp;</td>
181
+ <td>36</td>
182
+ <td>4</td>
183
+ <td>0</td>
184
+ <td class="spacer">&nbsp;</td>
185
+ <td data-ratio="32 36">89%</td>
186
+ </tr>
187
+ <tr class="region">
188
+ <td class="name"><a href="z_15dab3f49bf85fa8_dashboard_reports_py.html">src&#8201;/&#8201;codeaudit&#8201;/&#8201;dashboard_reports.py</a></td>
189
+ <td class="name"><a href="z_15dab3f49bf85fa8_dashboard_reports_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
190
+ <td class="spacer">&nbsp;</td>
191
+ <td>100</td>
192
+ <td>100</td>
193
+ <td>0</td>
194
+ <td class="spacer">&nbsp;</td>
195
+ <td data-ratio="0 100">0%</td>
196
+ </tr>
197
+ <tr class="region">
198
+ <td class="name"><a href="z_15dab3f49bf85fa8_filehelpfunctions_py.html">src&#8201;/&#8201;codeaudit&#8201;/&#8201;filehelpfunctions.py</a></td>
199
+ <td class="name"><a href="z_15dab3f49bf85fa8_filehelpfunctions_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
200
+ <td class="spacer">&nbsp;</td>
201
+ <td>53</td>
202
+ <td>27</td>
203
+ <td>0</td>
204
+ <td class="spacer">&nbsp;</td>
205
+ <td data-ratio="26 53">49%</td>
206
+ </tr>
207
+ <tr class="region">
208
+ <td class="name"><a href="z_15dab3f49bf85fa8_htmlhelpfunctions_py.html">src&#8201;/&#8201;codeaudit&#8201;/&#8201;htmlhelpfunctions.py</a></td>
209
+ <td class="name"><a href="z_15dab3f49bf85fa8_htmlhelpfunctions_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
210
+ <td class="spacer">&nbsp;</td>
211
+ <td>44</td>
212
+ <td>39</td>
213
+ <td>0</td>
214
+ <td class="spacer">&nbsp;</td>
215
+ <td data-ratio="5 44">11%</td>
216
+ </tr>
217
+ <tr class="region">
218
+ <td class="name"><a href="z_15dab3f49bf85fa8_issuevalidations_py.html">src&#8201;/&#8201;codeaudit&#8201;/&#8201;issuevalidations.py</a></td>
219
+ <td class="name"><a href="z_15dab3f49bf85fa8_issuevalidations_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
220
+ <td class="spacer">&nbsp;</td>
221
+ <td>85</td>
222
+ <td>0</td>
223
+ <td>0</td>
224
+ <td class="spacer">&nbsp;</td>
225
+ <td data-ratio="85 85">100%</td>
226
+ </tr>
227
+ <tr class="region">
228
+ <td class="name"><a href="z_15dab3f49bf85fa8_privacy_lint_py.html">src&#8201;/&#8201;codeaudit&#8201;/&#8201;privacy_lint.py</a></td>
229
+ <td class="name"><a href="z_15dab3f49bf85fa8_privacy_lint_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
230
+ <td class="spacer">&nbsp;</td>
231
+ <td>182</td>
232
+ <td>51</td>
233
+ <td>0</td>
234
+ <td class="spacer">&nbsp;</td>
235
+ <td data-ratio="131 182">72%</td>
236
+ </tr>
237
+ <tr class="region">
238
+ <td class="name"><a href="z_15dab3f49bf85fa8_pypi_package_scan_py.html">src&#8201;/&#8201;codeaudit&#8201;/&#8201;pypi_package_scan.py</a></td>
239
+ <td class="name"><a href="z_15dab3f49bf85fa8_pypi_package_scan_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
240
+ <td class="spacer">&nbsp;</td>
241
+ <td>57</td>
242
+ <td>31</td>
243
+ <td>0</td>
244
+ <td class="spacer">&nbsp;</td>
245
+ <td data-ratio="26 57">46%</td>
246
+ </tr>
247
+ <tr class="region">
248
+ <td class="name"><a href="z_15dab3f49bf85fa8_reporting_py.html">src&#8201;/&#8201;codeaudit&#8201;/&#8201;reporting.py</a></td>
249
+ <td class="name"><a href="z_15dab3f49bf85fa8_reporting_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
250
+ <td class="spacer">&nbsp;</td>
251
+ <td>399</td>
252
+ <td>346</td>
253
+ <td>0</td>
254
+ <td class="spacer">&nbsp;</td>
255
+ <td data-ratio="53 399">13%</td>
256
+ </tr>
257
+ <tr class="region">
258
+ <td class="name"><a href="z_15dab3f49bf85fa8_security_checks_py.html">src&#8201;/&#8201;codeaudit&#8201;/&#8201;security_checks.py</a></td>
259
+ <td class="name"><a href="z_15dab3f49bf85fa8_security_checks_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
260
+ <td class="spacer">&nbsp;</td>
261
+ <td>23</td>
262
+ <td>4</td>
263
+ <td>0</td>
264
+ <td class="spacer">&nbsp;</td>
265
+ <td data-ratio="19 23">83%</td>
266
+ </tr>
267
+ <tr class="region">
268
+ <td class="name"><a href="z_15dab3f49bf85fa8_suppression_py.html">src&#8201;/&#8201;codeaudit&#8201;/&#8201;suppression.py</a></td>
269
+ <td class="name"><a href="z_15dab3f49bf85fa8_suppression_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
270
+ <td class="spacer">&nbsp;</td>
271
+ <td>100</td>
272
+ <td>32</td>
273
+ <td>0</td>
274
+ <td class="spacer">&nbsp;</td>
275
+ <td data-ratio="68 100">68%</td>
276
+ </tr>
277
+ <tr class="region">
278
+ <td class="name"><a href="z_15dab3f49bf85fa8_totals_py.html">src&#8201;/&#8201;codeaudit&#8201;/&#8201;totals.py</a></td>
279
+ <td class="name"><a href="z_15dab3f49bf85fa8_totals_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
280
+ <td class="spacer">&nbsp;</td>
281
+ <td>94</td>
282
+ <td>31</td>
283
+ <td>0</td>
284
+ <td class="spacer">&nbsp;</td>
285
+ <td data-ratio="63 94">67%</td>
286
+ </tr>
287
+ </tbody>
288
+ <tfoot>
289
+ <tr class="total">
290
+ <td class="name">Total</td>
291
+ <td class="name">&nbsp;</td>
292
+ <td class="spacer">&nbsp;</td>
293
+ <td>1988</td>
294
+ <td>1346</td>
295
+ <td>1</td>
296
+ <td class="spacer">&nbsp;</td>
297
+ <td data-ratio="642 1988">32%</td>
298
+ </tr>
299
+ </tfoot>
300
+ </table>
301
+ <p id="no_rows">
302
+ No items found using the specified filter.
303
+ </p>
304
+ </main>
305
+ <footer>
306
+ <div class="content">
307
+ <p>
308
+ <a class="nav" href="https://coverage.readthedocs.io/en/7.13.5">coverage.py v7.13.5</a>,
309
+ created at 2026-04-09 09:33 +0200
310
+ </p>
311
+ </div>
312
+ <aside class="hidden">
313
+ <a id="prevFileLink" class="nav" href=""></a>
314
+ <a id="nextFileLink" class="nav" href=""></a>
315
+ <button type="button" class="button_prev_file" data-shortcut="["></button>
316
+ <button type="button" class="button_next_file" data-shortcut="]"></button>
317
+ <button type="button" class="button_show_hide_help" data-shortcut="?"></button>
318
+ </aside>
319
+ </footer>
320
+ </body>
321
+ </html>