tutanus 0.12.4 → 0.12.5

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 (453) hide show
  1. package/dist/analysts/azure-pipelines/corrections/correction-azure.d.ts.map +1 -1
  2. package/dist/analysts/azure-pipelines/corrections/correction-azure.js +2 -1
  3. package/dist/analysts/azure-pipelines/corrections/correction-azure.js.map +1 -1
  4. package/dist/analysts/circleci/corrections/correction-circleci.d.ts.map +1 -1
  5. package/dist/analysts/circleci/corrections/correction-circleci.js +2 -1
  6. package/dist/analysts/circleci/corrections/correction-circleci.js.map +1 -1
  7. package/dist/analysts/corrections/analyst-quick-fixes.d.ts.map +1 -1
  8. package/dist/analysts/corrections/analyst-quick-fixes.js +1 -0
  9. package/dist/analysts/corrections/analyst-quick-fixes.js.map +1 -1
  10. package/dist/analysts/corrections/analyst-scoring.d.ts.map +1 -1
  11. package/dist/analysts/corrections/analyst-scoring.js +1 -0
  12. package/dist/analysts/corrections/analyst-scoring.js.map +1 -1
  13. package/dist/analysts/css/corrections/correction-css.d.ts.map +1 -1
  14. package/dist/analysts/css/corrections/correction-css.js +2 -1
  15. package/dist/analysts/css/corrections/correction-css.js.map +1 -1
  16. package/dist/analysts/css/detectors/detector-css-best-practices.d.ts.map +1 -1
  17. package/dist/analysts/css/detectors/detector-css-best-practices.js +11 -10
  18. package/dist/analysts/css/detectors/detector-css-best-practices.js.map +1 -1
  19. package/dist/analysts/github-actions/analysts/analyst-github-actions.d.ts.map +1 -1
  20. package/dist/analysts/github-actions/analysts/analyst-github-actions.js +10 -9
  21. package/dist/analysts/github-actions/analysts/analyst-github-actions.js.map +1 -1
  22. package/dist/analysts/github-actions/corrections/autofix-engine.d.ts.map +1 -1
  23. package/dist/analysts/github-actions/corrections/autofix-engine.js +3 -1
  24. package/dist/analysts/github-actions/corrections/autofix-engine.js.map +1 -1
  25. package/dist/analysts/github-actions/corrections/correction-workflow.d.ts.map +1 -1
  26. package/dist/analysts/github-actions/corrections/correction-workflow.js +2 -1
  27. package/dist/analysts/github-actions/corrections/correction-workflow.js.map +1 -1
  28. package/dist/analysts/github-actions/detectors/detector-dependencies-vulnerable.d.ts.map +1 -1
  29. package/dist/analysts/github-actions/detectors/detector-dependencies-vulnerable.js +8 -7
  30. package/dist/analysts/github-actions/detectors/detector-dependencies-vulnerable.js.map +1 -1
  31. package/dist/analysts/github-actions/detectors/detector-workflow-accessibility.d.ts.map +1 -1
  32. package/dist/analysts/github-actions/detectors/detector-workflow-accessibility.js +5 -4
  33. package/dist/analysts/github-actions/detectors/detector-workflow-accessibility.js.map +1 -1
  34. package/dist/analysts/github-actions/detectors/detector-workflow-security.d.ts.map +1 -1
  35. package/dist/analysts/github-actions/detectors/detector-workflow-security.js +21 -20
  36. package/dist/analysts/github-actions/detectors/detector-workflow-security.js.map +1 -1
  37. package/dist/analysts/github-actions/detectors/detector-workflow-trigger-unsafe.d.ts.map +1 -1
  38. package/dist/analysts/github-actions/detectors/detector-workflow-trigger-unsafe.js +9 -8
  39. package/dist/analysts/github-actions/detectors/detector-workflow-trigger-unsafe.js.map +1 -1
  40. package/dist/analysts/gitlab-ci/analysts/analyst-gitlab-ci.d.ts.map +1 -1
  41. package/dist/analysts/gitlab-ci/analysts/analyst-gitlab-ci.js +2 -1
  42. package/dist/analysts/gitlab-ci/analysts/analyst-gitlab-ci.js.map +1 -1
  43. package/dist/analysts/gitlab-ci/corrections/correction-gitlab-ci.d.ts.map +1 -1
  44. package/dist/analysts/gitlab-ci/corrections/correction-gitlab-ci.js +2 -1
  45. package/dist/analysts/gitlab-ci/corrections/correction-gitlab-ci.js.map +1 -1
  46. package/dist/analysts/gitlab-ci/detectors/detector-gitlab-ci-performance.d.ts.map +1 -1
  47. package/dist/analysts/gitlab-ci/detectors/detector-gitlab-ci-performance.js +4 -3
  48. package/dist/analysts/gitlab-ci/detectors/detector-gitlab-ci-performance.js.map +1 -1
  49. package/dist/analysts/gitlab-ci/detectors/detector-gitlab-ci-security.d.ts.map +1 -1
  50. package/dist/analysts/gitlab-ci/detectors/detector-gitlab-ci-security.js +4 -3
  51. package/dist/analysts/gitlab-ci/detectors/detector-gitlab-ci-security.js.map +1 -1
  52. package/dist/analysts/gitlab-ci/detectors/detector-gitlab-ci-structure.d.ts.map +1 -1
  53. package/dist/analysts/gitlab-ci/detectors/detector-gitlab-ci-structure.js +3 -2
  54. package/dist/analysts/gitlab-ci/detectors/detector-gitlab-ci-structure.js.map +1 -1
  55. package/dist/analysts/go/detectors/detector-conventions.js +4 -4
  56. package/dist/analysts/go/detectors/detector-conventions.js.map +1 -1
  57. package/dist/analysts/go/detectors/detector-errors-un-handled.js +1 -1
  58. package/dist/analysts/go/detectors/detector-errors-un-handled.js.map +1 -1
  59. package/dist/analysts/go/detectors/detector-vulnerabilities.js +3 -3
  60. package/dist/analysts/go/detectors/detector-vulnerabilities.js.map +1 -1
  61. package/dist/analysts/html/corrections/correction-html.d.ts.map +1 -1
  62. package/dist/analysts/html/corrections/correction-html.js +2 -1
  63. package/dist/analysts/html/corrections/correction-html.js.map +1 -1
  64. package/dist/analysts/jenkins/corrections/correction-jenkins.d.ts.map +1 -1
  65. package/dist/analysts/jenkins/corrections/correction-jenkins.js +2 -1
  66. package/dist/analysts/jenkins/corrections/correction-jenkins.js.map +1 -1
  67. package/dist/analysts/js-ts/analysts/analyst-todo-comments.d.ts.map +1 -1
  68. package/dist/analysts/js-ts/analysts/analyst-todo-comments.js +2 -1
  69. package/dist/analysts/js-ts/analysts/analyst-todo-comments.js.map +1 -1
  70. package/dist/analysts/js-ts/detectors/detector-anti-patterns-async.d.ts.map +1 -1
  71. package/dist/analysts/js-ts/detectors/detector-anti-patterns-async.js +3 -2
  72. package/dist/analysts/js-ts/detectors/detector-anti-patterns-async.js.map +1 -1
  73. package/dist/analysts/js-ts/detectors/detector-leaks-memory.d.ts.map +1 -1
  74. package/dist/analysts/js-ts/detectors/detector-leaks-memory.js +4 -3
  75. package/dist/analysts/js-ts/detectors/detector-leaks-memory.js.map +1 -1
  76. package/dist/analysts/js-ts/detectors/detector-types-unsafe.d.ts.map +1 -1
  77. package/dist/analysts/js-ts/detectors/detector-types-unsafe.js +34 -33
  78. package/dist/analysts/js-ts/detectors/detector-types-unsafe.js.map +1 -1
  79. package/dist/analysts/python/corrections/correction-python.d.ts.map +1 -1
  80. package/dist/analysts/python/corrections/correction-python.js +2 -1
  81. package/dist/analysts/python/corrections/correction-python.js.map +1 -1
  82. package/dist/analysts/react/corrections/correction-react.d.ts.map +1 -1
  83. package/dist/analysts/react/corrections/correction-react.js +2 -1
  84. package/dist/analysts/react/corrections/correction-react.js.map +1 -1
  85. package/dist/analysts/rust/detectors/detector-conventions.js +4 -4
  86. package/dist/analysts/rust/detectors/detector-conventions.js.map +1 -1
  87. package/dist/analysts/rust/detectors/detector-errors-potential.js +4 -4
  88. package/dist/analysts/rust/detectors/detector-errors-potential.js.map +1 -1
  89. package/dist/analysts/rust/detectors/detector-unsafe.js +2 -2
  90. package/dist/analysts/rust/detectors/detector-unsafe.js.map +1 -1
  91. package/dist/analysts/shell/analysts/analyst-shell.d.ts.map +1 -1
  92. package/dist/analysts/shell/analysts/analyst-shell.js +17 -16
  93. package/dist/analysts/shell/analysts/analyst-shell.js.map +1 -1
  94. package/dist/analysts/shell/corrections/correction-shell.d.ts.map +1 -1
  95. package/dist/analysts/shell/corrections/correction-shell.js +2 -1
  96. package/dist/analysts/shell/corrections/correction-shell.js.map +1 -1
  97. package/dist/analysts/sql/corrections/correction-sql.d.ts.map +1 -1
  98. package/dist/analysts/sql/corrections/correction-sql.js +2 -1
  99. package/dist/analysts/sql/corrections/correction-sql.js.map +1 -1
  100. package/dist/analysts/svg/corrections/correction-svg.d.ts.map +1 -1
  101. package/dist/analysts/svg/corrections/correction-svg.js +2 -1
  102. package/dist/analysts/svg/corrections/correction-svg.js.map +1 -1
  103. package/dist/analysts/tailwind/corrections/correction-tailwind.d.ts.map +1 -1
  104. package/dist/analysts/tailwind/corrections/correction-tailwind.js +2 -1
  105. package/dist/analysts/tailwind/corrections/correction-tailwind.js.map +1 -1
  106. package/dist/analysts/xml/corrections/correction-xml.d.ts.map +1 -1
  107. package/dist/analysts/xml/corrections/correction-xml.js +2 -1
  108. package/dist/analysts/xml/corrections/correction-xml.js.map +1 -1
  109. package/dist/app/github/app/webhook-handler.js +3 -3
  110. package/dist/app/github/app/webhook-handler.js.map +1 -1
  111. package/dist/app/github/push-analysis/pr-analysis-service.d.ts.map +1 -1
  112. package/dist/app/github/push-analysis/pr-analysis-service.js +2 -1
  113. package/dist/app/github/push-analysis/pr-analysis-service.js.map +1 -1
  114. package/dist/app/github/push-analysis/push-analysis-service.d.ts.map +1 -1
  115. package/dist/app/github/push-analysis/push-analysis-service.js +2 -1
  116. package/dist/app/github/push-analysis/push-analysis-service.js.map +1 -1
  117. package/dist/cli/commands/command-licenses.js +4 -4
  118. package/dist/cli/commands/command-licenses.js.map +1 -1
  119. package/dist/cli/commands/command-server.d.ts.map +1 -1
  120. package/dist/cli/commands/command-server.js +11 -7
  121. package/dist/cli/commands/command-server.js.map +1 -1
  122. package/dist/core/config/auto/validation.d.ts.map +1 -1
  123. package/dist/core/config/auto/validation.js +1 -1
  124. package/dist/core/config/auto/validation.js.map +1 -1
  125. package/dist/core/config/excludes-padrao.d.ts.map +1 -1
  126. package/dist/core/config/excludes-padrao.js +3 -1
  127. package/dist/core/config/excludes-padrao.js.map +1 -1
  128. package/dist/core/execution/executor.d.ts.map +1 -1
  129. package/dist/core/execution/executor.js +38 -39
  130. package/dist/core/execution/executor.js.map +1 -1
  131. package/dist/core/execution/inquisitor.d.ts.map +1 -1
  132. package/dist/core/execution/inquisitor.js +15 -14
  133. package/dist/core/execution/inquisitor.js.map +1 -1
  134. package/dist/core/messages/en/analysts/analyst-github-actions-messages.d.ts +45 -0
  135. package/dist/core/messages/en/analysts/analyst-github-actions-messages.d.ts.map +1 -1
  136. package/dist/core/messages/en/analysts/analyst-github-actions-messages.js +45 -0
  137. package/dist/core/messages/en/analysts/analyst-github-actions-messages.js.map +1 -1
  138. package/dist/core/messages/en/analysts/analyst-gitlab-ci-messages.d.ts +12 -0
  139. package/dist/core/messages/en/analysts/analyst-gitlab-ci-messages.d.ts.map +1 -0
  140. package/dist/core/messages/en/analysts/analyst-gitlab-ci-messages.js +12 -0
  141. package/dist/core/messages/en/analysts/analyst-gitlab-ci-messages.js.map +1 -0
  142. package/dist/core/messages/en/analysts/analyst-shell-messages.d.ts +19 -0
  143. package/dist/core/messages/en/analysts/analyst-shell-messages.d.ts.map +1 -0
  144. package/dist/core/messages/en/analysts/analyst-shell-messages.js +19 -0
  145. package/dist/core/messages/en/analysts/analyst-shell-messages.js.map +1 -0
  146. package/dist/core/messages/en/analysts/analyst-todo-comments-messages.d.ts +1 -0
  147. package/dist/core/messages/en/analysts/analyst-todo-comments-messages.d.ts.map +1 -1
  148. package/dist/core/messages/en/analysts/analyst-todo-comments-messages.js +2 -1
  149. package/dist/core/messages/en/analysts/analyst-todo-comments-messages.js.map +1 -1
  150. package/dist/core/messages/en/analysts/detector-css-messages.d.ts +13 -0
  151. package/dist/core/messages/en/analysts/detector-css-messages.d.ts.map +1 -0
  152. package/dist/core/messages/en/analysts/detector-css-messages.js +13 -0
  153. package/dist/core/messages/en/analysts/detector-css-messages.js.map +1 -0
  154. package/dist/core/messages/en/analysts/index.d.ts +3 -0
  155. package/dist/core/messages/en/analysts/index.d.ts.map +1 -1
  156. package/dist/core/messages/en/analysts/index.js +3 -0
  157. package/dist/core/messages/en/analysts/index.js.map +1 -1
  158. package/dist/core/messages/en/api/api-server-messages.d.ts +1 -0
  159. package/dist/core/messages/en/api/api-server-messages.d.ts.map +1 -1
  160. package/dist/core/messages/en/api/api-server-messages.js +1 -0
  161. package/dist/core/messages/en/api/api-server-messages.js.map +1 -1
  162. package/dist/core/messages/en/cli/cli-command-server-messages.d.ts +4 -0
  163. package/dist/core/messages/en/cli/cli-command-server-messages.d.ts.map +1 -1
  164. package/dist/core/messages/en/cli/cli-command-server-messages.js +4 -0
  165. package/dist/core/messages/en/cli/cli-command-server-messages.js.map +1 -1
  166. package/dist/core/messages/en/core/excecoes-messages.d.ts +1 -0
  167. package/dist/core/messages/en/core/excecoes-messages.d.ts.map +1 -1
  168. package/dist/core/messages/en/core/excecoes-messages.js +1 -0
  169. package/dist/core/messages/en/core/excecoes-messages.js.map +1 -1
  170. package/dist/core/messages/en/core/executor-extra-messages.d.ts +3 -0
  171. package/dist/core/messages/en/core/executor-extra-messages.d.ts.map +1 -1
  172. package/dist/core/messages/en/core/executor-extra-messages.js +3 -0
  173. package/dist/core/messages/en/core/executor-extra-messages.js.map +1 -1
  174. package/dist/core/messages/en/core/plugin-messages.d.ts +18 -0
  175. package/dist/core/messages/en/core/plugin-messages.d.ts.map +1 -1
  176. package/dist/core/messages/en/core/plugin-messages.js +20 -2
  177. package/dist/core/messages/en/core/plugin-messages.js.map +1 -1
  178. package/dist/core/messages/en/github/github-webhook-messages.d.ts +2 -0
  179. package/dist/core/messages/en/github/github-webhook-messages.d.ts.map +1 -1
  180. package/dist/core/messages/en/github/github-webhook-messages.js +2 -0
  181. package/dist/core/messages/en/github/github-webhook-messages.js.map +1 -1
  182. package/dist/core/messages/en/guardian/guardian-messages.d.ts +2 -0
  183. package/dist/core/messages/en/guardian/guardian-messages.d.ts.map +1 -1
  184. package/dist/core/messages/en/guardian/guardian-messages.js +2 -0
  185. package/dist/core/messages/en/guardian/guardian-messages.js.map +1 -1
  186. package/dist/core/messages/en/reports/report-messages.d.ts +13 -0
  187. package/dist/core/messages/en/reports/report-messages.d.ts.map +1 -1
  188. package/dist/core/messages/en/reports/report-messages.js +14 -1
  189. package/dist/core/messages/en/reports/report-messages.js.map +1 -1
  190. package/dist/core/messages/en/shared/shared-common-messages.d.ts +2 -0
  191. package/dist/core/messages/en/shared/shared-common-messages.d.ts.map +1 -1
  192. package/dist/core/messages/en/shared/shared-common-messages.js +2 -0
  193. package/dist/core/messages/en/shared/shared-common-messages.js.map +1 -1
  194. package/dist/core/messages/ja/analysts/analyst-github-actions-messages.d.ts +45 -0
  195. package/dist/core/messages/ja/analysts/analyst-github-actions-messages.d.ts.map +1 -1
  196. package/dist/core/messages/ja/analysts/analyst-github-actions-messages.js +45 -0
  197. package/dist/core/messages/ja/analysts/analyst-github-actions-messages.js.map +1 -1
  198. package/dist/core/messages/ja/analysts/analyst-gitlab-ci-messages.d.ts +12 -0
  199. package/dist/core/messages/ja/analysts/analyst-gitlab-ci-messages.d.ts.map +1 -0
  200. package/dist/core/messages/ja/analysts/analyst-gitlab-ci-messages.js +12 -0
  201. package/dist/core/messages/ja/analysts/analyst-gitlab-ci-messages.js.map +1 -0
  202. package/dist/core/messages/ja/analysts/analyst-shell-messages.d.ts +19 -0
  203. package/dist/core/messages/ja/analysts/analyst-shell-messages.d.ts.map +1 -0
  204. package/dist/core/messages/ja/analysts/analyst-shell-messages.js +19 -0
  205. package/dist/core/messages/ja/analysts/analyst-shell-messages.js.map +1 -0
  206. package/dist/core/messages/ja/analysts/analyst-todo-comments-messages.d.ts +1 -0
  207. package/dist/core/messages/ja/analysts/analyst-todo-comments-messages.d.ts.map +1 -1
  208. package/dist/core/messages/ja/analysts/analyst-todo-comments-messages.js +2 -1
  209. package/dist/core/messages/ja/analysts/analyst-todo-comments-messages.js.map +1 -1
  210. package/dist/core/messages/ja/analysts/detector-css-messages.d.ts +13 -0
  211. package/dist/core/messages/ja/analysts/detector-css-messages.d.ts.map +1 -0
  212. package/dist/core/messages/ja/analysts/detector-css-messages.js +13 -0
  213. package/dist/core/messages/ja/analysts/detector-css-messages.js.map +1 -0
  214. package/dist/core/messages/ja/analysts/index.d.ts +3 -0
  215. package/dist/core/messages/ja/analysts/index.d.ts.map +1 -1
  216. package/dist/core/messages/ja/analysts/index.js +3 -0
  217. package/dist/core/messages/ja/analysts/index.js.map +1 -1
  218. package/dist/core/messages/ja/api/api-server-messages.d.ts +1 -0
  219. package/dist/core/messages/ja/api/api-server-messages.d.ts.map +1 -1
  220. package/dist/core/messages/ja/api/api-server-messages.js +1 -0
  221. package/dist/core/messages/ja/api/api-server-messages.js.map +1 -1
  222. package/dist/core/messages/ja/cli/cli-command-server-messages.d.ts +4 -0
  223. package/dist/core/messages/ja/cli/cli-command-server-messages.d.ts.map +1 -1
  224. package/dist/core/messages/ja/cli/cli-command-server-messages.js +4 -0
  225. package/dist/core/messages/ja/cli/cli-command-server-messages.js.map +1 -1
  226. package/dist/core/messages/ja/core/excecoes-messages.d.ts +1 -0
  227. package/dist/core/messages/ja/core/excecoes-messages.d.ts.map +1 -1
  228. package/dist/core/messages/ja/core/excecoes-messages.js +1 -0
  229. package/dist/core/messages/ja/core/excecoes-messages.js.map +1 -1
  230. package/dist/core/messages/ja/core/executor-extra-messages.d.ts +3 -0
  231. package/dist/core/messages/ja/core/executor-extra-messages.d.ts.map +1 -1
  232. package/dist/core/messages/ja/core/executor-extra-messages.js +3 -0
  233. package/dist/core/messages/ja/core/executor-extra-messages.js.map +1 -1
  234. package/dist/core/messages/ja/core/plugin-messages.d.ts +18 -0
  235. package/dist/core/messages/ja/core/plugin-messages.d.ts.map +1 -1
  236. package/dist/core/messages/ja/core/plugin-messages.js +20 -2
  237. package/dist/core/messages/ja/core/plugin-messages.js.map +1 -1
  238. package/dist/core/messages/ja/github/github-webhook-messages.d.ts +2 -0
  239. package/dist/core/messages/ja/github/github-webhook-messages.d.ts.map +1 -1
  240. package/dist/core/messages/ja/github/github-webhook-messages.js +2 -0
  241. package/dist/core/messages/ja/github/github-webhook-messages.js.map +1 -1
  242. package/dist/core/messages/ja/guardian/guardian-messages.d.ts +2 -0
  243. package/dist/core/messages/ja/guardian/guardian-messages.d.ts.map +1 -1
  244. package/dist/core/messages/ja/guardian/guardian-messages.js +2 -0
  245. package/dist/core/messages/ja/guardian/guardian-messages.js.map +1 -1
  246. package/dist/core/messages/ja/reports/report-messages.d.ts +13 -0
  247. package/dist/core/messages/ja/reports/report-messages.d.ts.map +1 -1
  248. package/dist/core/messages/ja/reports/report-messages.js +14 -1
  249. package/dist/core/messages/ja/reports/report-messages.js.map +1 -1
  250. package/dist/core/messages/ja/shared/shared-common-messages.d.ts +2 -0
  251. package/dist/core/messages/ja/shared/shared-common-messages.d.ts.map +1 -1
  252. package/dist/core/messages/ja/shared/shared-common-messages.js +2 -0
  253. package/dist/core/messages/ja/shared/shared-common-messages.js.map +1 -1
  254. package/dist/core/messages/pt/analysts/analyst-github-actions-messages.d.ts +45 -0
  255. package/dist/core/messages/pt/analysts/analyst-github-actions-messages.d.ts.map +1 -1
  256. package/dist/core/messages/pt/analysts/analyst-github-actions-messages.js +45 -0
  257. package/dist/core/messages/pt/analysts/analyst-github-actions-messages.js.map +1 -1
  258. package/dist/core/messages/pt/analysts/analyst-gitlab-ci-messages.d.ts +12 -0
  259. package/dist/core/messages/pt/analysts/analyst-gitlab-ci-messages.d.ts.map +1 -0
  260. package/dist/core/messages/pt/analysts/analyst-gitlab-ci-messages.js +12 -0
  261. package/dist/core/messages/pt/analysts/analyst-gitlab-ci-messages.js.map +1 -0
  262. package/dist/core/messages/pt/analysts/analyst-shell-messages.d.ts +19 -0
  263. package/dist/core/messages/pt/analysts/analyst-shell-messages.d.ts.map +1 -0
  264. package/dist/core/messages/pt/analysts/analyst-shell-messages.js +19 -0
  265. package/dist/core/messages/pt/analysts/analyst-shell-messages.js.map +1 -0
  266. package/dist/core/messages/pt/analysts/analyst-todo-comments-messages.d.ts +1 -0
  267. package/dist/core/messages/pt/analysts/analyst-todo-comments-messages.d.ts.map +1 -1
  268. package/dist/core/messages/pt/analysts/analyst-todo-comments-messages.js +2 -1
  269. package/dist/core/messages/pt/analysts/analyst-todo-comments-messages.js.map +1 -1
  270. package/dist/core/messages/pt/analysts/detector-css-messages.d.ts +13 -0
  271. package/dist/core/messages/pt/analysts/detector-css-messages.d.ts.map +1 -0
  272. package/dist/core/messages/pt/analysts/detector-css-messages.js +13 -0
  273. package/dist/core/messages/pt/analysts/detector-css-messages.js.map +1 -0
  274. package/dist/core/messages/pt/analysts/index.d.ts +3 -0
  275. package/dist/core/messages/pt/analysts/index.d.ts.map +1 -1
  276. package/dist/core/messages/pt/analysts/index.js +3 -0
  277. package/dist/core/messages/pt/analysts/index.js.map +1 -1
  278. package/dist/core/messages/pt/api/api-server-messages.d.ts +1 -0
  279. package/dist/core/messages/pt/api/api-server-messages.d.ts.map +1 -1
  280. package/dist/core/messages/pt/api/api-server-messages.js +1 -0
  281. package/dist/core/messages/pt/api/api-server-messages.js.map +1 -1
  282. package/dist/core/messages/pt/cli/cli-command-server-messages.d.ts +4 -0
  283. package/dist/core/messages/pt/cli/cli-command-server-messages.d.ts.map +1 -1
  284. package/dist/core/messages/pt/cli/cli-command-server-messages.js +4 -0
  285. package/dist/core/messages/pt/cli/cli-command-server-messages.js.map +1 -1
  286. package/dist/core/messages/pt/core/excecoes-messages.d.ts +1 -0
  287. package/dist/core/messages/pt/core/excecoes-messages.d.ts.map +1 -1
  288. package/dist/core/messages/pt/core/excecoes-messages.js +1 -0
  289. package/dist/core/messages/pt/core/excecoes-messages.js.map +1 -1
  290. package/dist/core/messages/pt/core/executor-extra-messages.d.ts +3 -0
  291. package/dist/core/messages/pt/core/executor-extra-messages.d.ts.map +1 -1
  292. package/dist/core/messages/pt/core/executor-extra-messages.js +3 -0
  293. package/dist/core/messages/pt/core/executor-extra-messages.js.map +1 -1
  294. package/dist/core/messages/pt/core/plugin-messages.d.ts +18 -0
  295. package/dist/core/messages/pt/core/plugin-messages.d.ts.map +1 -1
  296. package/dist/core/messages/pt/core/plugin-messages.js +20 -2
  297. package/dist/core/messages/pt/core/plugin-messages.js.map +1 -1
  298. package/dist/core/messages/pt/github/github-webhook-messages.d.ts +2 -0
  299. package/dist/core/messages/pt/github/github-webhook-messages.d.ts.map +1 -1
  300. package/dist/core/messages/pt/github/github-webhook-messages.js +2 -0
  301. package/dist/core/messages/pt/github/github-webhook-messages.js.map +1 -1
  302. package/dist/core/messages/pt/reports/report-messages.d.ts +13 -0
  303. package/dist/core/messages/pt/reports/report-messages.d.ts.map +1 -1
  304. package/dist/core/messages/pt/reports/report-messages.js +14 -1
  305. package/dist/core/messages/pt/reports/report-messages.js.map +1 -1
  306. package/dist/core/messages/pt/shared/shared-common-messages.d.ts +2 -0
  307. package/dist/core/messages/pt/shared/shared-common-messages.d.ts.map +1 -1
  308. package/dist/core/messages/pt/shared/shared-common-messages.js +2 -0
  309. package/dist/core/messages/pt/shared/shared-common-messages.js.map +1 -1
  310. package/dist/core/messages/zh/analysts/analyst-github-actions-messages.d.ts +45 -0
  311. package/dist/core/messages/zh/analysts/analyst-github-actions-messages.d.ts.map +1 -1
  312. package/dist/core/messages/zh/analysts/analyst-github-actions-messages.js +45 -0
  313. package/dist/core/messages/zh/analysts/analyst-github-actions-messages.js.map +1 -1
  314. package/dist/core/messages/zh/analysts/analyst-gitlab-ci-messages.d.ts +12 -0
  315. package/dist/core/messages/zh/analysts/analyst-gitlab-ci-messages.d.ts.map +1 -0
  316. package/dist/core/messages/zh/analysts/analyst-gitlab-ci-messages.js +12 -0
  317. package/dist/core/messages/zh/analysts/analyst-gitlab-ci-messages.js.map +1 -0
  318. package/dist/core/messages/zh/analysts/analyst-shell-messages.d.ts +19 -0
  319. package/dist/core/messages/zh/analysts/analyst-shell-messages.d.ts.map +1 -0
  320. package/dist/core/messages/zh/analysts/analyst-shell-messages.js +19 -0
  321. package/dist/core/messages/zh/analysts/analyst-shell-messages.js.map +1 -0
  322. package/dist/core/messages/zh/analysts/analyst-todo-comments-messages.d.ts +1 -0
  323. package/dist/core/messages/zh/analysts/analyst-todo-comments-messages.d.ts.map +1 -1
  324. package/dist/core/messages/zh/analysts/analyst-todo-comments-messages.js +2 -1
  325. package/dist/core/messages/zh/analysts/analyst-todo-comments-messages.js.map +1 -1
  326. package/dist/core/messages/zh/analysts/detector-css-messages.d.ts +13 -0
  327. package/dist/core/messages/zh/analysts/detector-css-messages.d.ts.map +1 -0
  328. package/dist/core/messages/zh/analysts/detector-css-messages.js +13 -0
  329. package/dist/core/messages/zh/analysts/detector-css-messages.js.map +1 -0
  330. package/dist/core/messages/zh/analysts/index.d.ts +3 -0
  331. package/dist/core/messages/zh/analysts/index.d.ts.map +1 -1
  332. package/dist/core/messages/zh/analysts/index.js +3 -0
  333. package/dist/core/messages/zh/analysts/index.js.map +1 -1
  334. package/dist/core/messages/zh/api/api-server-messages.d.ts +1 -0
  335. package/dist/core/messages/zh/api/api-server-messages.d.ts.map +1 -1
  336. package/dist/core/messages/zh/api/api-server-messages.js +1 -0
  337. package/dist/core/messages/zh/api/api-server-messages.js.map +1 -1
  338. package/dist/core/messages/zh/cli/cli-command-server-messages.d.ts +4 -0
  339. package/dist/core/messages/zh/cli/cli-command-server-messages.d.ts.map +1 -1
  340. package/dist/core/messages/zh/cli/cli-command-server-messages.js +4 -0
  341. package/dist/core/messages/zh/cli/cli-command-server-messages.js.map +1 -1
  342. package/dist/core/messages/zh/core/excecoes-messages.d.ts +1 -0
  343. package/dist/core/messages/zh/core/excecoes-messages.d.ts.map +1 -1
  344. package/dist/core/messages/zh/core/excecoes-messages.js +1 -0
  345. package/dist/core/messages/zh/core/excecoes-messages.js.map +1 -1
  346. package/dist/core/messages/zh/core/executor-extra-messages.d.ts +3 -0
  347. package/dist/core/messages/zh/core/executor-extra-messages.d.ts.map +1 -1
  348. package/dist/core/messages/zh/core/executor-extra-messages.js +3 -0
  349. package/dist/core/messages/zh/core/executor-extra-messages.js.map +1 -1
  350. package/dist/core/messages/zh/core/plugin-messages.d.ts +18 -0
  351. package/dist/core/messages/zh/core/plugin-messages.d.ts.map +1 -1
  352. package/dist/core/messages/zh/core/plugin-messages.js +20 -2
  353. package/dist/core/messages/zh/core/plugin-messages.js.map +1 -1
  354. package/dist/core/messages/zh/github/github-webhook-messages.d.ts +2 -0
  355. package/dist/core/messages/zh/github/github-webhook-messages.d.ts.map +1 -1
  356. package/dist/core/messages/zh/github/github-webhook-messages.js +2 -0
  357. package/dist/core/messages/zh/github/github-webhook-messages.js.map +1 -1
  358. package/dist/core/messages/zh/guardian/guardian-messages.d.ts +2 -0
  359. package/dist/core/messages/zh/guardian/guardian-messages.d.ts.map +1 -1
  360. package/dist/core/messages/zh/guardian/guardian-messages.js +2 -0
  361. package/dist/core/messages/zh/guardian/guardian-messages.js.map +1 -1
  362. package/dist/core/messages/zh/reports/report-messages.d.ts +13 -0
  363. package/dist/core/messages/zh/reports/report-messages.d.ts.map +1 -1
  364. package/dist/core/messages/zh/reports/report-messages.js +14 -1
  365. package/dist/core/messages/zh/reports/report-messages.js.map +1 -1
  366. package/dist/core/messages/zh/shared/shared-common-messages.d.ts +2 -0
  367. package/dist/core/messages/zh/shared/shared-common-messages.d.ts.map +1 -1
  368. package/dist/core/messages/zh/shared/shared-common-messages.js +2 -0
  369. package/dist/core/messages/zh/shared/shared-common-messages.js.map +1 -1
  370. package/dist/core/parsing/parser.d.ts.map +1 -1
  371. package/dist/core/parsing/parser.js +6 -7
  372. package/dist/core/parsing/parser.js.map +1 -1
  373. package/dist/core/registry/file-registry.d.ts.map +1 -1
  374. package/dist/core/registry/file-registry.js +3 -4
  375. package/dist/core/registry/file-registry.js.map +1 -1
  376. package/dist/core/workers/worker-executor.js +5 -3
  377. package/dist/core/workers/worker-executor.js.map +1 -1
  378. package/dist/reports/filter-smart.js +4 -4
  379. package/dist/reports/filter-smart.js.map +1 -1
  380. package/dist/reports/generator-report.js +1 -1
  381. package/dist/reports/generator-report.js.map +1 -1
  382. package/dist/reports/report-structure.d.ts.map +1 -1
  383. package/dist/reports/report-structure.js +10 -2
  384. package/dist/reports/report-structure.js.map +1 -1
  385. package/dist/shared/validation/validation.js +1 -1
  386. package/dist/shared/validation/validation.js.map +1 -1
  387. package/out/404/index.html +1 -0
  388. package/out/404.html +1 -0
  389. package/out/__next.__PAGE__.txt +9 -0
  390. package/out/__next._full.txt +18 -0
  391. package/out/__next._head.txt +5 -0
  392. package/out/__next._index.txt +6 -0
  393. package/out/__next._tree.txt +3 -0
  394. package/out/_next/static/WkbNrhSUmQHl6FUQrrd3Q/_buildManifest.js +11 -0
  395. package/out/_next/static/WkbNrhSUmQHl6FUQrrd3Q/_clientMiddlewareManifest.js +1 -0
  396. package/out/_next/static/WkbNrhSUmQHl6FUQrrd3Q/_ssgManifest.js +1 -0
  397. package/out/_next/static/chunks/05-c3ty_6dwfk.js +1 -0
  398. package/out/_next/static/chunks/0cz1d0mv5g_q7.js +1 -0
  399. package/out/_next/static/chunks/1061ff024jzvu.js +2 -0
  400. package/out/_next/static/chunks/14mrh2-p_w84d.js +1 -0
  401. package/out/_next/static/chunks/15orcrkp-_9ct.js +4 -0
  402. package/out/_next/static/chunks/1jq4o6yq14o4c.js +31 -0
  403. package/out/_next/static/chunks/1rxncug86bump.js +1 -0
  404. package/out/_next/static/chunks/1xfmvf0ifjmmy.js +11 -0
  405. package/out/_next/static/chunks/2n-4qa9h44lgj.js +1 -0
  406. package/out/_next/static/chunks/3n7dm2ojtyzwn.js +1 -0
  407. package/out/_next/static/chunks/3uta7d_6k863-.css +1 -0
  408. package/out/_next/static/chunks/turbopack-2xb6mmb6_q43u.js +1 -0
  409. package/out/_next/static/media/icon-1.008jpsm4iakzh.png +0 -0
  410. package/out/_not-found/__next._full.txt +16 -0
  411. package/out/_not-found/__next._head.txt +5 -0
  412. package/out/_not-found/__next._index.txt +6 -0
  413. package/out/_not-found/__next._not-found.__PAGE__.txt +5 -0
  414. package/out/_not-found/__next._not-found.txt +5 -0
  415. package/out/_not-found/__next._tree.txt +3 -0
  416. package/out/_not-found/index.html +1 -0
  417. package/out/_not-found/index.txt +16 -0
  418. package/out/changelog/__next._full.txt +573 -0
  419. package/out/changelog/__next._head.txt +5 -0
  420. package/out/changelog/__next._index.txt +6 -0
  421. package/out/changelog/__next._tree.txt +4 -0
  422. package/out/changelog/__next.changelog.__PAGE__.txt +560 -0
  423. package/out/changelog/__next.changelog.txt +5 -0
  424. package/out/changelog/index.html +550 -0
  425. package/out/changelog/index.txt +573 -0
  426. package/out/github/dashboard/__next._full.txt +20 -0
  427. package/out/github/dashboard/__next._head.txt +5 -0
  428. package/out/github/dashboard/__next._index.txt +6 -0
  429. package/out/github/dashboard/__next._tree.txt +3 -0
  430. package/out/github/dashboard/__next.github.dashboard.__PAGE__.txt +9 -0
  431. package/out/github/dashboard/__next.github.dashboard.txt +4 -0
  432. package/out/github/dashboard/__next.github.txt +5 -0
  433. package/out/github/dashboard/index.html +1 -0
  434. package/out/github/dashboard/index.txt +20 -0
  435. package/out/index.html +1 -0
  436. package/out/index.txt +18 -0
  437. package/out/privacy-policy/__next._full.txt +38 -0
  438. package/out/privacy-policy/__next._head.txt +5 -0
  439. package/out/privacy-policy/__next._index.txt +6 -0
  440. package/out/privacy-policy/__next._tree.txt +4 -0
  441. package/out/privacy-policy/__next.privacy-policy.__PAGE__.txt +23 -0
  442. package/out/privacy-policy/__next.privacy-policy.txt +5 -0
  443. package/out/privacy-policy/index.html +1 -0
  444. package/out/privacy-policy/index.txt +38 -0
  445. package/out/terms-of-use/__next._full.txt +37 -0
  446. package/out/terms-of-use/__next._head.txt +5 -0
  447. package/out/terms-of-use/__next._index.txt +6 -0
  448. package/out/terms-of-use/__next._tree.txt +4 -0
  449. package/out/terms-of-use/__next.terms-of-use.__PAGE__.txt +18 -0
  450. package/out/terms-of-use/__next.terms-of-use.txt +5 -0
  451. package/out/terms-of-use/index.html +1 -0
  452. package/out/terms-of-use/index.txt +37 -0
  453. package/package.json +9 -10
@@ -1 +1 @@
1
- {"version":3,"file":"correction-azure.d.ts","sourceRoot":"","sources":["../../../../src/analysts/azure-pipelines/corrections/correction-azure.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAc,MAAM,GAAG,CAAC;AAG/D,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE,CAwCvF;AAED,eAAO,MAAM,eAAe,EAAE,QAsB7B,CAAC"}
1
+ {"version":3,"file":"correction-azure.d.ts","sourceRoot":"","sources":["../../../../src/analysts/azure-pipelines/corrections/correction-azure.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAc,MAAM,GAAG,CAAC;AAG/D,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE,CAwCvF;AAED,eAAO,MAAM,eAAe,EAAE,QAsB7B,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { messages } from '../../../core/messages/index.js';
1
2
  import { splitLines } from '../../../shared/helpers/index.js';
2
3
  import { criarOcorrencia } from '../../../types/index.js';
3
4
  export function detectarCorrecoesAzure(src, _relPath) {
@@ -48,7 +49,7 @@ export const correctionAzure = {
48
49
  return correcoes.map(elem => criarOcorrencia({
49
50
  tipo: `correction-${elem.tipo}`,
50
51
  nivel: elem.confianca > 85 ? 'aviso' : 'info',
51
- mensagem: `Correção sugerida: ${elem.tipo}`,
52
+ mensagem: messages.SharedCommonMensagens.correcaoSugerida(elem.tipo),
52
53
  relPath,
53
54
  linha: elem.linha,
54
55
  sugestao: ` ${elem.original}\n ${elem.sugerido}\nConfiança: ${elem.confianca}%`,
@@ -1 +1 @@
1
- {"version":3,"file":"correction-azure.js","sourceRoot":"","sources":["../../../../src/analysts/azure-pipelines/corrections/correction-azure.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: MIT\n\nimport { splitLines } from '@shared/helpers';\n\nimport type { Analista, AzureCorrection, Ocorrencia } from '@';\nimport { criarOcorrencia } from '@';\n\nexport function detectarCorrecoesAzure(src: string, _relPath: string): AzureCorrection[] {\n const correcoes: AzureCorrection[] = [];\n const linhas = splitLines(src);\n\n linhas.forEach((linha, index) => {\n const numeroLinha = index + 1;\n\n if (/vmImage:\\s*['\"]?.*latest['\"]?/i.test(linha)) {\n correcoes.push({\n tipo: 'azure-fix-latest-image',\n original: linha,\n sugerido: linha.replace(/latest/i, 'ubuntu-22.04'),\n linha: numeroLinha,\n confianca: 90\n });\n }\n\n if (/(password|token|secret|key):\\s*['\"]?([^$({][a-zA-Z0-9_\\-]{8,})['\"]?/gi.test(linha)) {\n const replaced = linha.replace(/['\"][^'\"]+['\"]/, '$(SECRET_NAME)');\n correcoes.push({\n tipo: 'azure-use-variable',\n original: linha,\n sugerido: replaced,\n linha: numeroLinha,\n confianca: 90\n });\n }\n });\n\n if (!/task:\\s*Cache@/i.test(src) && !/CacheBeta@/i.test(src)) {\n correcoes.push({\n tipo: 'azure-add-cache',\n original: linhas[0],\n sugerido: `- task: Cache@2\\n inputs:\\n key: 'npm | \"$(Agent.OS)\" | package-lock.json'\\n path: 'node_modules'\\n displayName: Cache npm\\n\\n${linhas[0]}`,\n linha: 1,\n confianca: 80\n });\n }\n\n return correcoes;\n}\n\nexport const correctionAzure: Analista = {\n nome: 'correction-azure',\n categoria: 'workflows',\n descricao: 'Correções automáticas para Azure Pipelines',\n test: (relPath: string): boolean => relPath === 'azure-pipelines.yml' || relPath.endsWith('azure-pipelines.yml'),\n aplicar: (src: string, relPath: string): Ocorrencia[] => {\n if (!src) return [];\n const correcoes = detectarCorrecoesAzure(src, relPath);\n return correcoes.map(elem => criarOcorrencia({\n tipo: `correction-${elem.tipo}`,\n nivel: elem.confianca > 85 ? 'aviso' : 'info',\n mensagem: `Correção sugerida: ${elem.tipo}`,\n relPath,\n linha: elem.linha,\n sugestao: ` ${elem.original}\\n ${elem.sugerido}\\nConfiança: ${elem.confianca}%`,\n correcao: {\n original: elem.original,\n novo: elem.sugerido,\n linha: elem.linha\n }\n }));\n }\n};\n"]}
1
+ {"version":3,"file":"correction-azure.js","sourceRoot":"","sources":["../../../../src/analysts/azure-pipelines/corrections/correction-azure.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,GAAG,CAAC;AAEpC,MAAM,UAAU,sBAAsB,CAAC,GAAW,EAAE,QAAgB;IAClE,MAAM,SAAS,GAAsB,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAE/B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC9B,MAAM,WAAW,GAAG,KAAK,GAAG,CAAC,CAAC;QAE9B,IAAI,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,wBAAwB;gBAC9B,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC;gBAClD,KAAK,EAAE,WAAW;gBAClB,SAAS,EAAE,EAAE;aACd,CAAC,CAAC;QACL,CAAC;QAED,IAAI,uEAAuE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACxF,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;YACnE,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,oBAAoB;gBAC1B,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,QAAQ;gBAClB,KAAK,EAAE,WAAW;gBAClB,SAAS,EAAE,EAAE;aACd,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7D,SAAS,CAAC,IAAI,CAAC;YACb,IAAI,EAAE,iBAAiB;YACvB,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;YACnB,QAAQ,EAAE,yIAAyI,MAAM,CAAC,CAAC,CAAC,EAAE;YAC9J,KAAK,EAAE,CAAC;YACR,SAAS,EAAE,EAAE;SACd,CAAC,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAa;IACvC,IAAI,EAAE,kBAAkB;IACxB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,4CAA4C;IACvD,IAAI,EAAE,CAAC,OAAe,EAAW,EAAE,CAAC,OAAO,KAAK,qBAAqB,IAAI,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAChH,OAAO,EAAE,CAAC,GAAW,EAAE,OAAe,EAAgB,EAAE;QACtD,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACpB,MAAM,SAAS,GAAG,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACvD,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC;YAC3C,IAAI,EAAE,cAAc,IAAI,CAAC,IAAI,EAAE;YAC/B,KAAK,EAAE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;YAC7C,QAAQ,EAAE,QAAQ,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YACpE,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,MAAM,IAAI,CAAC,QAAQ,gBAAgB,IAAI,CAAC,SAAS,GAAG;YAC/E,QAAQ,EAAE;gBACR,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,IAAI,CAAC,QAAQ;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB;SACF,CAAC,CAAC,CAAC;IACN,CAAC;CACF,CAAC","sourcesContent":["// SPDX-License-Identifier: MIT\n\nimport { messages } from '@core/messages';\nimport { splitLines } from '@shared/helpers';\n\nimport type { Analista, AzureCorrection, Ocorrencia } from '@';\nimport { criarOcorrencia } from '@';\n\nexport function detectarCorrecoesAzure(src: string, _relPath: string): AzureCorrection[] {\n const correcoes: AzureCorrection[] = [];\n const linhas = splitLines(src);\n\n linhas.forEach((linha, index) => {\n const numeroLinha = index + 1;\n\n if (/vmImage:\\s*['\"]?.*latest['\"]?/i.test(linha)) {\n correcoes.push({\n tipo: 'azure-fix-latest-image',\n original: linha,\n sugerido: linha.replace(/latest/i, 'ubuntu-22.04'),\n linha: numeroLinha,\n confianca: 90\n });\n }\n\n if (/(password|token|secret|key):\\s*['\"]?([^$({][a-zA-Z0-9_\\-]{8,})['\"]?/gi.test(linha)) {\n const replaced = linha.replace(/['\"][^'\"]+['\"]/, '$(SECRET_NAME)');\n correcoes.push({\n tipo: 'azure-use-variable',\n original: linha,\n sugerido: replaced,\n linha: numeroLinha,\n confianca: 90\n });\n }\n });\n\n if (!/task:\\s*Cache@/i.test(src) && !/CacheBeta@/i.test(src)) {\n correcoes.push({\n tipo: 'azure-add-cache',\n original: linhas[0],\n sugerido: `- task: Cache@2\\n inputs:\\n key: 'npm | \"$(Agent.OS)\" | package-lock.json'\\n path: 'node_modules'\\n displayName: Cache npm\\n\\n${linhas[0]}`,\n linha: 1,\n confianca: 80\n });\n }\n\n return correcoes;\n}\n\nexport const correctionAzure: Analista = {\n nome: 'correction-azure',\n categoria: 'workflows',\n descricao: 'Correções automáticas para Azure Pipelines',\n test: (relPath: string): boolean => relPath === 'azure-pipelines.yml' || relPath.endsWith('azure-pipelines.yml'),\n aplicar: (src: string, relPath: string): Ocorrencia[] => {\n if (!src) return [];\n const correcoes = detectarCorrecoesAzure(src, relPath);\n return correcoes.map(elem => criarOcorrencia({\n tipo: `correction-${elem.tipo}`,\n nivel: elem.confianca > 85 ? 'aviso' : 'info',\n mensagem: messages.SharedCommonMensagens.correcaoSugerida(elem.tipo),\n relPath,\n linha: elem.linha,\n sugestao: ` ${elem.original}\\n ${elem.sugerido}\\nConfiança: ${elem.confianca}%`,\n correcao: {\n original: elem.original,\n novo: elem.sugerido,\n linha: elem.linha\n }\n }));\n }\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"correction-circleci.d.ts","sourceRoot":"","sources":["../../../../src/analysts/circleci/corrections/correction-circleci.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAc,MAAM,GAAG,CAAC;AAGlE,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE,CA0C7F;AAED,eAAO,MAAM,kBAAkB,EAAE,QAsBhC,CAAC"}
1
+ {"version":3,"file":"correction-circleci.d.ts","sourceRoot":"","sources":["../../../../src/analysts/circleci/corrections/correction-circleci.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAc,MAAM,GAAG,CAAC;AAGlE,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE,CA0C7F;AAED,eAAO,MAAM,kBAAkB,EAAE,QAsBhC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { messages } from '../../../core/messages/index.js';
1
2
  import { splitLines } from '../../../shared/helpers/index.js';
2
3
  import { criarOcorrencia } from '../../../types/index.js';
3
4
  export function detectarCorrecoesCircleCI(src, _relPath) {
@@ -50,7 +51,7 @@ export const correctionCircleCI = {
50
51
  return correcoes.map(elem => criarOcorrencia({
51
52
  tipo: `correction-${elem.tipo}`,
52
53
  nivel: elem.confianca > 85 ? 'aviso' : 'info',
53
- mensagem: `Correção sugerida: ${elem.tipo}`,
54
+ mensagem: messages.SharedCommonMensagens.correcaoSugerida(elem.tipo),
54
55
  relPath,
55
56
  linha: elem.linha,
56
57
  sugestao: ` ${elem.original}\n ${elem.sugerido}\nConfiança: ${elem.confianca}%`,
@@ -1 +1 @@
1
- {"version":3,"file":"correction-circleci.js","sourceRoot":"","sources":["../../../../src/analysts/circleci/corrections/correction-circleci.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: MIT\n\nimport { splitLines } from '@shared/helpers';\n\nimport type { Analista, CircleCICorrection, Ocorrencia } from '@';\nimport { criarOcorrencia } from '@';\n\nexport function detectarCorrecoesCircleCI(src: string, _relPath: string): CircleCICorrection[] {\n const correcoes: CircleCICorrection[] = [];\n const linhas = splitLines(src);\n\n linhas.forEach((linha, index) => {\n const numeroLinha = index + 1;\n\n if (/\\bimage:\\s*[^\\s@]+:latest\\b/.test(linha)) {\n correcoes.push({\n tipo: 'circleci-fix-latest-image',\n original: linha,\n sugerido: linha.replace(/:latest\\b/, ':3.18'),\n linha: numeroLinha,\n confianca: 90\n });\n }\n\n if (/\\b(TOKEN|SECRET|PASSWORD|KEY|ACCESS_KEY)\\b.*:\\s*['\"][^'\"]+['\"]/i.test(linha) && !/\\$/.test(linha)) {\n const replaced = linha.replace(/['\"][^'\"]+['\"]/, '\"$VAR_NAME\"');\n correcoes.push({\n tipo: 'circleci-use-context',\n original: linha,\n sugerido: replaced,\n linha: numeroLinha,\n confianca: 90\n });\n }\n });\n\n if (!/save_cache:/.test(src) && !/restore_cache:/.test(src)) {\n const firstJobLine = linhas.findIndex(l => /steps:/.test(l));\n const targetLine = firstJobLine >= 0 ? firstJobLine : 0;\n correcoes.push({\n tipo: 'circleci-add-cache',\n original: linhas[targetLine],\n sugerido: ` - restore_cache:\\n key: deps-{{ checksum \"package-lock.json\" }}\\n${linhas[targetLine]}\\n - save_cache:\\n key: deps-{{ checksum \"package-lock.json\" }}\\n paths:\\n - node_modules`,\n linha: targetLine + 1,\n confianca: 80\n });\n }\n\n return correcoes;\n}\n\nexport const correctionCircleCI: Analista = {\n nome: 'correction-circleci',\n categoria: 'workflows',\n descricao: 'Correções automáticas para CircleCI',\n test: (relPath: string): boolean => relPath.endsWith('.circleci/config.yml'),\n aplicar: (src: string, relPath: string): Ocorrencia[] => {\n if (!src) return [];\n const correcoes = detectarCorrecoesCircleCI(src, relPath);\n return correcoes.map(elem => criarOcorrencia({\n tipo: `correction-${elem.tipo}`,\n nivel: elem.confianca > 85 ? 'aviso' : 'info',\n mensagem: `Correção sugerida: ${elem.tipo}`,\n relPath,\n linha: elem.linha,\n sugestao: ` ${elem.original}\\n ${elem.sugerido}\\nConfiança: ${elem.confianca}%`,\n correcao: {\n original: elem.original,\n novo: elem.sugerido,\n linha: elem.linha\n }\n }));\n }\n};\n"]}
1
+ {"version":3,"file":"correction-circleci.js","sourceRoot":"","sources":["../../../../src/analysts/circleci/corrections/correction-circleci.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: MIT\n\nimport { messages } from '@core/messages';\nimport { splitLines } from '@shared/helpers';\n\nimport type { Analista, CircleCICorrection, Ocorrencia } from '@';\nimport { criarOcorrencia } from '@';\n\nexport function detectarCorrecoesCircleCI(src: string, _relPath: string): CircleCICorrection[] {\n const correcoes: CircleCICorrection[] = [];\n const linhas = splitLines(src);\n\n linhas.forEach((linha, index) => {\n const numeroLinha = index + 1;\n\n if (/\\bimage:\\s*[^\\s@]+:latest\\b/.test(linha)) {\n correcoes.push({\n tipo: 'circleci-fix-latest-image',\n original: linha,\n sugerido: linha.replace(/:latest\\b/, ':3.18'),\n linha: numeroLinha,\n confianca: 90\n });\n }\n\n if (/\\b(TOKEN|SECRET|PASSWORD|KEY|ACCESS_KEY)\\b.*:\\s*['\"][^'\"]+['\"]/i.test(linha) && !/\\$/.test(linha)) {\n const replaced = linha.replace(/['\"][^'\"]+['\"]/, '\"$VAR_NAME\"');\n correcoes.push({\n tipo: 'circleci-use-context',\n original: linha,\n sugerido: replaced,\n linha: numeroLinha,\n confianca: 90\n });\n }\n });\n\n if (!/save_cache:/.test(src) && !/restore_cache:/.test(src)) {\n const firstJobLine = linhas.findIndex(l => /steps:/.test(l));\n const targetLine = firstJobLine >= 0 ? firstJobLine : 0;\n correcoes.push({\n tipo: 'circleci-add-cache',\n original: linhas[targetLine],\n sugerido: ` - restore_cache:\\n key: deps-{{ checksum \"package-lock.json\" }}\\n${linhas[targetLine]}\\n - save_cache:\\n key: deps-{{ checksum \"package-lock.json\" }}\\n paths:\\n - node_modules`,\n linha: targetLine + 1,\n confianca: 80\n });\n }\n\n return correcoes;\n}\n\nexport const correctionCircleCI: Analista = {\n nome: 'correction-circleci',\n categoria: 'workflows',\n descricao: 'Correções automáticas para CircleCI',\n test: (relPath: string): boolean => relPath.endsWith('.circleci/config.yml'),\n aplicar: (src: string, relPath: string): Ocorrencia[] => {\n if (!src) return [];\n const correcoes = detectarCorrecoesCircleCI(src, relPath);\n return correcoes.map(elem => criarOcorrencia({\n tipo: `correction-${elem.tipo}`,\n nivel: elem.confianca > 85 ? 'aviso' : 'info',\n mensagem: messages.SharedCommonMensagens.correcaoSugerida(elem.tipo),\n relPath,\n linha: elem.linha,\n sugestao: ` ${elem.original}\\n ${elem.sugerido}\\nConfiança: ${elem.confianca}%`,\n correcao: {\n original: elem.original,\n novo: elem.sugerido,\n linha: elem.linha\n }\n }));\n }\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"analyst-quick-fixes.d.ts","sourceRoot":"","sources":["../../../src/analysts/corrections/analyst-quick-fixes.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,GAAG,CAAC;AAG9C,eAAO,MAAM,kBAAkB,EAAE,QAqEhC,CAAC"}
1
+ {"version":3,"file":"analyst-quick-fixes.d.ts","sourceRoot":"","sources":["../../../src/analysts/corrections/analyst-quick-fixes.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,GAAG,CAAC;AAG9C,eAAO,MAAM,kBAAkB,EAAE,QAqEhC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { messages } from '../../core/messages/index.js';
1
2
  import { findQuickFixes } from '../../core/config/auto/index.js';
2
3
  import { criarOcorrencia } from '../../types/index.js';
3
4
  export const analistaQuickFixes = {
@@ -1 +1 @@
1
- {"version":3,"file":"analyst-quick-fixes.js","sourceRoot":"","sources":["../../../src/analysts/corrections/analyst-quick-fixes.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: MIT\nimport type { NodePath } from '@babel/traverse';\nimport type { Node } from '@babel/types';\nimport { findQuickFixes, type PatternBasedQuickFix } from '@core/config/auto';\n\nimport type { Analista, Ocorrencia } from '@';\nimport { criarOcorrencia } from '@';\n\nexport const analistaQuickFixes: Analista = {\n nome: 'quick-fixes',\n categoria: 'melhorias',\n descricao: 'Detecta problemas comuns e oferece correções automáticas',\n test: (relPath: string): boolean => {\n return /\\.(js|jsx|ts|tsx|mjs|cjs|svg)$/.test(relPath);\n },\n aplicar: (src: string, relPath: string, _ast: NodePath<Node> | null): Ocorrencia[] => {\n if (!src) return [];\n const ocorrencias: Ocorrencia[] = [];\n\n // Buscar quick fixes gerais\n const quickFixes = findQuickFixes(src, undefined, undefined, relPath);\n\n // Buscar quick fixes específicos por tipo de problema detectado\n const problemaTipos = ['unhandled-async', 'console-log', 'memory-leak', 'dangerous-html', 'eval-usage', 'complex-regex'];\n for (const problemTipo of problemaTipos) {\n const specificFixes = findQuickFixes(src, problemTipo, undefined, relPath);\n quickFixes.push(...specificFixes);\n }\n\n // Remover duplicatas por ID\n const uniqueFixes = quickFixes.filter((fix, index, arr) => arr.findIndex(arquivo => arquivo.id === fix.id) === index);\n for (const fixResultado of uniqueFixes) {\n for (const match of fixResultado.matches) {\n // Calcular linha aproximada do match\n const beforeMatch = src.substring(0, match.index || 0);\n const linha = beforeMatch.split('\\n').length;\n\n // Gerar preview da correção\n const previewCorrecao = fixResultado.fix(match, src);\n const originalLine = src.split('\\n')[linha - 1] || '';\n const fixedLine = previewCorrecao.split('\\n')[linha - 1] || '';\n\n // Criar sugestão com preview mais detalhado\n const sugestao = [fixResultado.description, '', `[CHAVE-INGLESA] Correção sugerida:`, `[ERRO] Antes: ${originalLine.trim()}`, `[OK] Depois: ${fixedLine.trim()}`, '', `Confiança: ${fixResultado.confidence}%`, `Categoria: ${fixResultado.category}`, `ID do Fix: ${fixResultado.id}`].join('\\n');\n\n // Mapear categoria para nível\n const nivel = mapearCategoriaNivel(fixResultado.category);\n\n // Criar ocorrência base\n const ocorrencia = criarOcorrencia({\n tipo: 'auto-fix-disponivel',\n nivel,\n mensagem: `${fixResultado.title}`,\n relPath,\n linha\n });\n\n // Adicionar campos extras como propriedades do objeto genérico\n const ocorrenciaGenerica = ocorrencia as Ocorrencia & {\n sugestao?: string;\n quickFixId?: string;\n confidence?: number;\n category?: string;\n matchIndex?: number;\n matchLength?: number;\n }; // OcorrenciaGenerica allows extra properties\n ocorrenciaGenerica.sugestao = sugestao;\n ocorrenciaGenerica.quickFixId = fixResultado.id;\n ocorrenciaGenerica.confidence = fixResultado.confidence;\n ocorrenciaGenerica.category = fixResultado.category;\n ocorrenciaGenerica.matchIndex = match.index;\n ocorrenciaGenerica.matchLength = match[0].length;\n ocorrencias.push(ocorrencia);\n }\n }\n return ocorrencias;\n }\n};\nfunction mapearCategoriaNivel(category: PatternBasedQuickFix['category']): 'info' | 'aviso' | 'erro' {\n switch (category) {\n case 'security':\n return 'erro';\n case 'performance':\n return 'aviso';\n case 'style':\n case 'documentation':\n return 'info';\n default:\n return 'info';\n }\n}"]}
1
+ {"version":3,"file":"analyst-quick-fixes.js","sourceRoot":"","sources":["../../../src/analysts/corrections/analyst-quick-fixes.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: MIT\nimport { messages } from '@core/messages';\nimport type { NodePath } from '@babel/traverse';\nimport type { Node } from '@babel/types';\nimport { findQuickFixes, type PatternBasedQuickFix } from '@core/config/auto';\n\nimport type { Analista, Ocorrencia } from '@';\nimport { criarOcorrencia } from '@';\n\nexport const analistaQuickFixes: Analista = {\n nome: 'quick-fixes',\n categoria: 'melhorias',\n descricao: 'Detecta problemas comuns e oferece correções automáticas',\n test: (relPath: string): boolean => {\n return /\\.(js|jsx|ts|tsx|mjs|cjs|svg)$/.test(relPath);\n },\n aplicar: (src: string, relPath: string, _ast: NodePath<Node> | null): Ocorrencia[] => {\n if (!src) return [];\n const ocorrencias: Ocorrencia[] = [];\n\n // Buscar quick fixes gerais\n const quickFixes = findQuickFixes(src, undefined, undefined, relPath);\n\n // Buscar quick fixes específicos por tipo de problema detectado\n const problemaTipos = ['unhandled-async', 'console-log', 'memory-leak', 'dangerous-html', 'eval-usage', 'complex-regex'];\n for (const problemTipo of problemaTipos) {\n const specificFixes = findQuickFixes(src, problemTipo, undefined, relPath);\n quickFixes.push(...specificFixes);\n }\n\n // Remover duplicatas por ID\n const uniqueFixes = quickFixes.filter((fix, index, arr) => arr.findIndex(arquivo => arquivo.id === fix.id) === index);\n for (const fixResultado of uniqueFixes) {\n for (const match of fixResultado.matches) {\n // Calcular linha aproximada do match\n const beforeMatch = src.substring(0, match.index || 0);\n const linha = beforeMatch.split('\\n').length;\n\n // Gerar preview da correção\n const previewCorrecao = fixResultado.fix(match, src);\n const originalLine = src.split('\\n')[linha - 1] || '';\n const fixedLine = previewCorrecao.split('\\n')[linha - 1] || '';\n\n // Criar sugestão com preview mais detalhado\n const sugestao = [fixResultado.description, '', `[CHAVE-INGLESA] Correção sugerida:`, `[ERRO] Antes: ${originalLine.trim()}`, `[OK] Depois: ${fixedLine.trim()}`, '', `Confiança: ${fixResultado.confidence}%`, `Categoria: ${fixResultado.category}`, `ID do Fix: ${fixResultado.id}`].join('\\n');\n\n // Mapear categoria para nível\n const nivel = mapearCategoriaNivel(fixResultado.category);\n\n // Criar ocorrência base\n const ocorrencia = criarOcorrencia({\n tipo: 'auto-fix-disponivel',\n nivel,\n mensagem: `${fixResultado.title}`,\n relPath,\n linha\n });\n\n // Adicionar campos extras como propriedades do objeto genérico\n const ocorrenciaGenerica = ocorrencia as Ocorrencia & {\n sugestao?: string;\n quickFixId?: string;\n confidence?: number;\n category?: string;\n matchIndex?: number;\n matchLength?: number;\n }; // OcorrenciaGenerica allows extra properties\n ocorrenciaGenerica.sugestao = sugestao;\n ocorrenciaGenerica.quickFixId = fixResultado.id;\n ocorrenciaGenerica.confidence = fixResultado.confidence;\n ocorrenciaGenerica.category = fixResultado.category;\n ocorrenciaGenerica.matchIndex = match.index;\n ocorrenciaGenerica.matchLength = match[0].length;\n ocorrencias.push(ocorrencia);\n }\n }\n return ocorrencias;\n }\n};\nfunction mapearCategoriaNivel(category: PatternBasedQuickFix['category']): 'info' | 'aviso' | 'erro' {\n switch (category) {\n case 'security':\n return 'erro';\n case 'performance':\n return 'aviso';\n case 'style':\n case 'documentation':\n return 'info';\n default:\n return 'info';\n }\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"analyst-scoring.d.ts","sourceRoot":"","sources":["../../../src/analysts/corrections/analyst-scoring.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,GAAG,CAAC;AAuB9C,eAAO,MAAM,kBAAkB,EAAE,QA0DhC,CAAC;AAIF,eAAO,MAAM,iBAAiB,EAAE,QAoC/B,CAAC;AAIF,eAAO,MAAM,SAAS,EAAE,QAAQ,EAA4C,CAAC"}
1
+ {"version":3,"file":"analyst-scoring.d.ts","sourceRoot":"","sources":["../../../src/analysts/corrections/analyst-scoring.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,GAAG,CAAC;AAuB9C,eAAO,MAAM,kBAAkB,EAAE,QA0DhC,CAAC;AAIF,eAAO,MAAM,iBAAiB,EAAE,QAoC/B,CAAC;AAIF,eAAO,MAAM,SAAS,EAAE,QAAQ,EAA4C,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { messages } from '../../core/messages/index.js';
1
2
  import { findQuickFixes } from '../../core/config/auto/index.js';
2
3
  import { extrairSupressoes, isRegraSuprimida } from '../../shared/helpers/index.js';
3
4
  import { criarOcorrencia } from '../../types/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"analyst-scoring.js","sourceRoot":"","sources":["../../../src/analysts/corrections/analyst-scoring.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: MIT\nimport type { NodePath } from '@babel/traverse';\nimport type { Node } from '@babel/types';\nimport { findQuickFixes, type PatternBasedQuickFix } from '@core/config/auto';\nimport { extrairSupressoes, isRegraSuprimida } from '@shared/helpers';\n\nimport type { Analista, Ocorrencia } from '@';\nimport { criarOcorrencia } from '@';\n\nimport { analisarTexto, calcularLinha } from './scoring-shared.js';\n\n// ─── Helpers / Config ─────────────────────────────────────────\n\nfunction mapearCategoriaNivel(category: PatternBasedQuickFix['category']): 'info' | 'aviso' | 'erro' {\n switch (category) {\n case 'security':\n return 'erro';\n case 'performance':\n return 'aviso';\n case 'style':\n case 'documentation':\n return 'info';\n default:\n return 'info';\n }\n}\n\n// ─── analistaQuickFixes ───────────────────────────────────────\n\nexport const analistaQuickFixes: Analista = {\n nome: 'quick-fixes',\n categoria: 'melhorias',\n descricao: 'Detecta problemas comuns e oferece correções automáticas',\n test: (relPath: string): boolean => {\n // Inclui SVGs para permitir quick-fixes seguros (otimização e viewBox)\n return /\\.(js|jsx|ts|tsx|mjs|cjs|svg)$/.test(relPath);\n },\n aplicar: (src: string, relPath: string, _ast: NodePath<Node> | null): Ocorrencia[] => {\n if (!src) return [];\n const ocorrencias: Ocorrencia[] = [];\n\n // Quick fixes gerais\n const quickFixes = findQuickFixes(src, undefined, undefined, relPath);\n\n // Quick fixes específicos por tipo de problema detectado\n const problemaTipos = ['unhandled-async', 'console-log', 'memory-leak', 'dangerous-html', 'eval-usage', 'complex-regex'];\n for (const problemTipo of problemaTipos) {\n const specificFixes = findQuickFixes(src, problemTipo, undefined, relPath);\n quickFixes.push(...specificFixes);\n }\n\n // Remover duplicatas por ID\n const uniqueFixes = quickFixes.filter((fix, index, arr) => arr.findIndex(arquivo => arquivo.id === fix.id) === index);\n for (const fixResultado of uniqueFixes) {\n for (const match of fixResultado.matches) {\n const linha = calcularLinha(src, match.index, match);\n const previewCorrecao = fixResultado.fix(match, src);\n const originalLine = src.split('\\n')[linha - 1] || '';\n const fixedLine = previewCorrecao.split('\\n')[linha - 1] || '';\n const sugestao = [fixResultado.description, '', `[CHAVE-INGLESA] Correção sugerida:`, `[ERRO] Antes: ${originalLine.trim()}`, `[OK] Depois: ${fixedLine.trim()}`, '', `Confiança: ${fixResultado.confidence}%`, `Categoria: ${fixResultado.category}`, `ID do Fix: ${fixResultado.id}`].join('\\n');\n const nivel = mapearCategoriaNivel(fixResultado.category);\n const ocorrencia = criarOcorrencia({\n tipo: 'auto-fix-disponivel',\n nivel,\n mensagem: `${fixResultado.title}`,\n relPath,\n linha\n });\n const ocorrenciaGenerica = ocorrencia as Ocorrencia & {\n sugestao?: string;\n quickFixId?: string;\n confidence?: number;\n category?: string;\n matchIndex?: number;\n matchLength?: number;\n };\n ocorrenciaGenerica.sugestao = sugestao;\n ocorrenciaGenerica.quickFixId = fixResultado.id;\n ocorrenciaGenerica.confidence = fixResultado.confidence;\n ocorrenciaGenerica.category = fixResultado.category;\n ocorrenciaGenerica.matchIndex = match.index;\n ocorrenciaGenerica.matchLength = match[0].length;\n ocorrencias.push(ocorrencia);\n }\n }\n return ocorrencias;\n }\n};\n\n// ─── analistaPontuacao ────────────────────────────────────────\n\nexport const analistaPontuacao: Analista = {\n nome: 'pontuacao-fix',\n categoria: 'formatacao',\n descricao: 'Detecta problemas de pontuação, caracteres estranhos e formatação de texto',\n test: (relPath: string): boolean => {\n return /\\.(md|txt|mdx)$/.test(relPath);\n },\n aplicar: (src: string, relPath: string): Ocorrencia[] => {\n if (!src) return [];\n const supressoes = extrairSupressoes(src);\n const problemas = analisarTexto(src);\n const ocorrencias: Ocorrencia[] = [];\n for (const problema of problemas) {\n const linha = calcularLinha(src, problema.posicao);\n if (isRegraSuprimida(problema.tipo, linha, supressoes)) continue;\n const linhas = src.split('\\n');\n const contexto = linhas[linha - 1] || '';\n const ocorrencia = criarOcorrencia({\n tipo: problema.tipo,\n nivel: (problema.confianca ?? 0) > 80 ? 'aviso' : 'info',\n mensagem: problema.descricao,\n relPath,\n linha\n });\n const ocorrenciaExtendida = ocorrencia as Ocorrencia & {\n sugestao?: string;\n confianca?: number;\n contexto?: string;\n };\n ocorrenciaExtendida.sugestao = problema.sugestao;\n ocorrenciaExtendida.confianca = problema.confianca;\n ocorrenciaExtendida.contexto = contexto;\n ocorrencias.push(ocorrencia);\n }\n return ocorrencias;\n }\n};\n\n// ─── Exports adicionais ───────────────────────────────────────\n\nexport const analistas: Analista[] = [analistaQuickFixes, analistaPontuacao];\n"]}
1
+ {"version":3,"file":"analyst-scoring.js","sourceRoot":"","sources":["../../../src/analysts/corrections/analyst-scoring.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: MIT\nimport { messages } from '@core/messages';\nimport type { NodePath } from '@babel/traverse';\nimport type { Node } from '@babel/types';\nimport { findQuickFixes, type PatternBasedQuickFix } from '@core/config/auto';\nimport { extrairSupressoes, isRegraSuprimida } from '@shared/helpers';\n\nimport type { Analista, Ocorrencia } from '@';\nimport { criarOcorrencia } from '@';\n\nimport { analisarTexto, calcularLinha } from './scoring-shared.js';\n\n// ─── Helpers / Config ─────────────────────────────────────────\n\nfunction mapearCategoriaNivel(category: PatternBasedQuickFix['category']): 'info' | 'aviso' | 'erro' {\n switch (category) {\n case 'security':\n return 'erro';\n case 'performance':\n return 'aviso';\n case 'style':\n case 'documentation':\n return 'info';\n default:\n return 'info';\n }\n}\n\n// ─── analistaQuickFixes ───────────────────────────────────────\n\nexport const analistaQuickFixes: Analista = {\n nome: 'quick-fixes',\n categoria: 'melhorias',\n descricao: 'Detecta problemas comuns e oferece correções automáticas',\n test: (relPath: string): boolean => {\n // Inclui SVGs para permitir quick-fixes seguros (otimização e viewBox)\n return /\\.(js|jsx|ts|tsx|mjs|cjs|svg)$/.test(relPath);\n },\n aplicar: (src: string, relPath: string, _ast: NodePath<Node> | null): Ocorrencia[] => {\n if (!src) return [];\n const ocorrencias: Ocorrencia[] = [];\n\n // Quick fixes gerais\n const quickFixes = findQuickFixes(src, undefined, undefined, relPath);\n\n // Quick fixes específicos por tipo de problema detectado\n const problemaTipos = ['unhandled-async', 'console-log', 'memory-leak', 'dangerous-html', 'eval-usage', 'complex-regex'];\n for (const problemTipo of problemaTipos) {\n const specificFixes = findQuickFixes(src, problemTipo, undefined, relPath);\n quickFixes.push(...specificFixes);\n }\n\n // Remover duplicatas por ID\n const uniqueFixes = quickFixes.filter((fix, index, arr) => arr.findIndex(arquivo => arquivo.id === fix.id) === index);\n for (const fixResultado of uniqueFixes) {\n for (const match of fixResultado.matches) {\n const linha = calcularLinha(src, match.index, match);\n const previewCorrecao = fixResultado.fix(match, src);\n const originalLine = src.split('\\n')[linha - 1] || '';\n const fixedLine = previewCorrecao.split('\\n')[linha - 1] || '';\n const sugestao = [fixResultado.description, '', `[CHAVE-INGLESA] Correção sugerida:`, `[ERRO] Antes: ${originalLine.trim()}`, `[OK] Depois: ${fixedLine.trim()}`, '', `Confiança: ${fixResultado.confidence}%`, `Categoria: ${fixResultado.category}`, `ID do Fix: ${fixResultado.id}`].join('\\n');\n const nivel = mapearCategoriaNivel(fixResultado.category);\n const ocorrencia = criarOcorrencia({\n tipo: 'auto-fix-disponivel',\n nivel,\n mensagem: `${fixResultado.title}`,\n relPath,\n linha\n });\n const ocorrenciaGenerica = ocorrencia as Ocorrencia & {\n sugestao?: string;\n quickFixId?: string;\n confidence?: number;\n category?: string;\n matchIndex?: number;\n matchLength?: number;\n };\n ocorrenciaGenerica.sugestao = sugestao;\n ocorrenciaGenerica.quickFixId = fixResultado.id;\n ocorrenciaGenerica.confidence = fixResultado.confidence;\n ocorrenciaGenerica.category = fixResultado.category;\n ocorrenciaGenerica.matchIndex = match.index;\n ocorrenciaGenerica.matchLength = match[0].length;\n ocorrencias.push(ocorrencia);\n }\n }\n return ocorrencias;\n }\n};\n\n// ─── analistaPontuacao ────────────────────────────────────────\n\nexport const analistaPontuacao: Analista = {\n nome: 'pontuacao-fix',\n categoria: 'formatacao',\n descricao: 'Detecta problemas de pontuação, caracteres estranhos e formatação de texto',\n test: (relPath: string): boolean => {\n return /\\.(md|txt|mdx)$/.test(relPath);\n },\n aplicar: (src: string, relPath: string): Ocorrencia[] => {\n if (!src) return [];\n const supressoes = extrairSupressoes(src);\n const problemas = analisarTexto(src);\n const ocorrencias: Ocorrencia[] = [];\n for (const problema of problemas) {\n const linha = calcularLinha(src, problema.posicao);\n if (isRegraSuprimida(problema.tipo, linha, supressoes)) continue;\n const linhas = src.split('\\n');\n const contexto = linhas[linha - 1] || '';\n const ocorrencia = criarOcorrencia({\n tipo: problema.tipo,\n nivel: (problema.confianca ?? 0) > 80 ? 'aviso' : 'info',\n mensagem: problema.descricao,\n relPath,\n linha\n });\n const ocorrenciaExtendida = ocorrencia as Ocorrencia & {\n sugestao?: string;\n confianca?: number;\n contexto?: string;\n };\n ocorrenciaExtendida.sugestao = problema.sugestao;\n ocorrenciaExtendida.confianca = problema.confianca;\n ocorrenciaExtendida.contexto = contexto;\n ocorrencias.push(ocorrencia);\n }\n return ocorrencias;\n }\n};\n\n// ─── Exports adicionais ───────────────────────────────────────\n\nexport const analistas: Analista[] = [analistaQuickFixes, analistaPontuacao];\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"correction-css.d.ts","sourceRoot":"","sources":["../../../../src/analysts/css/corrections/correction-css.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,GAAG,CAAC;AAG9C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AACD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CA4BnF;AACD,eAAO,MAAM,aAAa,EAAE,QAiB3B,CAAC"}
1
+ {"version":3,"file":"correction-css.d.ts","sourceRoot":"","sources":["../../../../src/analysts/css/corrections/correction-css.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,GAAG,CAAC;AAG9C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AACD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CA4BnF;AACD,eAAO,MAAM,aAAa,EAAE,QAiB3B,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { messages } from '../../../core/messages/index.js';
1
2
  import { splitLines } from '../../../shared/helpers/index.js';
2
3
  import { criarOcorrencia } from '../../../types/index.js';
3
4
  export function detectarCorrecoesCss(src, _relPath) {
@@ -41,7 +42,7 @@ export const correctionCss = {
41
42
  return correcoes.map(elem => criarOcorrencia({
42
43
  tipo: `correction-${elem.tipo}`,
43
44
  nivel: elem.confianca > 85 ? 'aviso' : 'info',
44
- mensagem: `Correção sugerida: ${elem.tipo}`,
45
+ mensagem: messages.SharedCommonMensagens.correcaoSugerida(elem.tipo),
45
46
  relPath,
46
47
  linha: elem.linha,
47
48
  sugestao: `[ERRO] ${elem.original}\n[OK] ${elem.sugerido}\nConfiança: ${elem.confianca}%`
@@ -1 +1 @@
1
- {"version":3,"file":"correction-css.js","sourceRoot":"","sources":["../../../../src/analysts/css/corrections/correction-css.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,GAAG,CAAC;AASpC,MAAM,UAAU,oBAAoB,CAAC,GAAW,EAAE,QAAgB;IAChE,MAAM,SAAS,GAAoB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC9B,MAAM,WAAW,GAAG,KAAK,GAAG,CAAC,CAAC;QAC9B,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,sBAAsB;gBAC5B,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE;gBACtB,QAAQ,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG;gBAC7D,KAAK,EAAE,WAAW;gBAClB,SAAS,EAAE,EAAE;aACd,CAAC,CAAC;QACL,CAAC;QACD,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACjD,IAAI,OAAO,EAAE,CAAC;gBACZ,SAAS,CAAC,IAAI,CAAC;oBACb,IAAI,EAAE,iBAAiB;oBACvB,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE;oBACtB,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC9D,KAAK,EAAE,WAAW;oBAClB,SAAS,EAAE,EAAE;iBACd,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,SAAS,CAAC;AACnB,CAAC;AACD,MAAM,CAAC,MAAM,aAAa,GAAa;IACrC,IAAI,EAAE,gBAAgB;IACtB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,0CAA0C;IACrD,IAAI,EAAE,CAAC,OAAe,EAAW,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC;IACvE,OAAO,EAAE,CAAC,GAAW,EAAE,OAAe,EAAgB,EAAE;QACtD,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACpB,MAAM,SAAS,GAAG,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC;YAC3C,IAAI,EAAE,cAAc,IAAI,CAAC,IAAI,EAAE;YAC/B,KAAK,EAAE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;YAC7C,QAAQ,EAAE,sBAAsB,IAAI,CAAC,IAAI,EAAE;YAC3C,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,UAAU,IAAI,CAAC,QAAQ,UAAU,IAAI,CAAC,QAAQ,gBAAgB,IAAI,CAAC,SAAS,GAAG;SAC1F,CAAC,CAAC,CAAC;IACN,CAAC;CACF,CAAC","sourcesContent":["// SPDX-License-Identifier: MIT\n/**\n * [CHAVE-INGLESA] Correções automáticas para CSS\n *\n * Fornece correções sugeridas para problemas comuns em CSS:\n * - Remover !important\n * - Consolidar seletores duplicados\n * - Sugerir classes ao invés de IDs\n */\n\nimport { splitLines } from '@shared/helpers';\n\nimport type { Analista, Ocorrencia } from '@';\nimport { criarOcorrencia } from '@';\n\nexport interface CssCorrection {\n tipo: string;\n original: string;\n sugerido: string;\n linha: number;\n confianca: number;\n}\nexport function detectarCorrecoesCss(src: string, _relPath: string): CssCorrection[] {\n const correcoes: CssCorrection[] = [];\n const linhas = splitLines(src);\n linhas.forEach((linha, index) => {\n const numeroLinha = index + 1;\n if (/\\s*!important/.test(linha)) {\n correcoes.push({\n tipo: 'css-remove-important',\n original: linha.trim(),\n sugerido: `${linha.replace(/\\s*!important\\s*/g, '').trim()};`,\n linha: numeroLinha,\n confianca: 80\n });\n }\n if (/#[a-zA-Z0-9_-]+\\s*\\{/.test(linha)) {\n const idMatch = linha.match(/#([a-zA-Z0-9_-]+)/);\n if (idMatch) {\n correcoes.push({\n tipo: 'css-id-to-class',\n original: linha.trim(),\n sugerido: linha.replace(/#([a-zA-Z0-9_-]+)/, `.${idMatch[1]}`),\n linha: numeroLinha,\n confianca: 70\n });\n }\n }\n });\n return correcoes;\n}\nexport const correctionCss: Analista = {\n nome: 'correction-css',\n categoria: 'estilo',\n descricao: 'Correções automáticas para problemas CSS',\n test: (relPath: string): boolean => /\\.(css|scss|sass)$/i.test(relPath),\n aplicar: (src: string, relPath: string): Ocorrencia[] => {\n if (!src) return [];\n const correcoes = detectarCorrecoesCss(src, relPath);\n return correcoes.map(elem => criarOcorrencia({\n tipo: `correction-${elem.tipo}`,\n nivel: elem.confianca > 85 ? 'aviso' : 'info',\n mensagem: `Correção sugerida: ${elem.tipo}`,\n relPath,\n linha: elem.linha,\n sugestao: `[ERRO] ${elem.original}\\n[OK] ${elem.sugerido}\\nConfiança: ${elem.confianca}%`\n }));\n }\n};"]}
1
+ {"version":3,"file":"correction-css.js","sourceRoot":"","sources":["../../../../src/analysts/css/corrections/correction-css.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,GAAG,CAAC;AASpC,MAAM,UAAU,oBAAoB,CAAC,GAAW,EAAE,QAAgB;IAChE,MAAM,SAAS,GAAoB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC9B,MAAM,WAAW,GAAG,KAAK,GAAG,CAAC,CAAC;QAC9B,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,sBAAsB;gBAC5B,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE;gBACtB,QAAQ,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG;gBAC7D,KAAK,EAAE,WAAW;gBAClB,SAAS,EAAE,EAAE;aACd,CAAC,CAAC;QACL,CAAC;QACD,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACjD,IAAI,OAAO,EAAE,CAAC;gBACZ,SAAS,CAAC,IAAI,CAAC;oBACb,IAAI,EAAE,iBAAiB;oBACvB,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE;oBACtB,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC9D,KAAK,EAAE,WAAW;oBAClB,SAAS,EAAE,EAAE;iBACd,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,SAAS,CAAC;AACnB,CAAC;AACD,MAAM,CAAC,MAAM,aAAa,GAAa;IACrC,IAAI,EAAE,gBAAgB;IACtB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,0CAA0C;IACrD,IAAI,EAAE,CAAC,OAAe,EAAW,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC;IACvE,OAAO,EAAE,CAAC,GAAW,EAAE,OAAe,EAAgB,EAAE;QACtD,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACpB,MAAM,SAAS,GAAG,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC;YAC3C,IAAI,EAAE,cAAc,IAAI,CAAC,IAAI,EAAE;YAC/B,KAAK,EAAE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;YAC7C,QAAQ,EAAE,QAAQ,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YACpE,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,UAAU,IAAI,CAAC,QAAQ,UAAU,IAAI,CAAC,QAAQ,gBAAgB,IAAI,CAAC,SAAS,GAAG;SAC1F,CAAC,CAAC,CAAC;IACN,CAAC;CACF,CAAC","sourcesContent":["// SPDX-License-Identifier: MIT\n/**\n * [CHAVE-INGLESA] Correções automáticas para CSS\n *\n * Fornece correções sugeridas para problemas comuns em CSS:\n * - Remover !important\n * - Consolidar seletores duplicados\n * - Sugerir classes ao invés de IDs\n */\n\nimport { messages } from '@core/messages';\nimport { splitLines } from '@shared/helpers';\n\nimport type { Analista, Ocorrencia } from '@';\nimport { criarOcorrencia } from '@';\n\nexport interface CssCorrection {\n tipo: string;\n original: string;\n sugerido: string;\n linha: number;\n confianca: number;\n}\nexport function detectarCorrecoesCss(src: string, _relPath: string): CssCorrection[] {\n const correcoes: CssCorrection[] = [];\n const linhas = splitLines(src);\n linhas.forEach((linha, index) => {\n const numeroLinha = index + 1;\n if (/\\s*!important/.test(linha)) {\n correcoes.push({\n tipo: 'css-remove-important',\n original: linha.trim(),\n sugerido: `${linha.replace(/\\s*!important\\s*/g, '').trim()};`,\n linha: numeroLinha,\n confianca: 80\n });\n }\n if (/#[a-zA-Z0-9_-]+\\s*\\{/.test(linha)) {\n const idMatch = linha.match(/#([a-zA-Z0-9_-]+)/);\n if (idMatch) {\n correcoes.push({\n tipo: 'css-id-to-class',\n original: linha.trim(),\n sugerido: linha.replace(/#([a-zA-Z0-9_-]+)/, `.${idMatch[1]}`),\n linha: numeroLinha,\n confianca: 70\n });\n }\n }\n });\n return correcoes;\n}\nexport const correctionCss: Analista = {\n nome: 'correction-css',\n categoria: 'estilo',\n descricao: 'Correções automáticas para problemas CSS',\n test: (relPath: string): boolean => /\\.(css|scss|sass)$/i.test(relPath),\n aplicar: (src: string, relPath: string): Ocorrencia[] => {\n if (!src) return [];\n const correcoes = detectarCorrecoesCss(src, relPath);\n return correcoes.map(elem => criarOcorrencia({\n tipo: `correction-${elem.tipo}`,\n nivel: elem.confianca > 85 ? 'aviso' : 'info',\n mensagem: messages.SharedCommonMensagens.correcaoSugerida(elem.tipo),\n relPath,\n linha: elem.linha,\n sugestao: `[ERRO] ${elem.original}\\n[OK] ${elem.sugerido}\\nConfiança: ${elem.confianca}%`\n }));\n }\n};"]}
@@ -1 +1 @@
1
- {"version":3,"file":"detector-css-best-practices.d.ts","sourceRoot":"","sources":["../../../../src/analysts/css/detectors/detector-css-best-practices.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,GAAG,CAAC;AAG9C,eAAO,MAAM,wBAAwB,EAAE,QAuFtC,CAAC"}
1
+ {"version":3,"file":"detector-css-best-practices.d.ts","sourceRoot":"","sources":["../../../../src/analysts/css/detectors/detector-css-best-practices.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,GAAG,CAAC;AAG9C,eAAO,MAAM,wBAAwB,EAAE,QAuFtC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { messages } from '../../../core/messages/index.js';
1
2
  import { splitLines } from '../../../shared/helpers/index.js';
2
3
  import { criarOcorrencia } from '../../../types/index.js';
3
4
  export const detectorCssBestPractices = {
@@ -22,10 +23,10 @@ export const detectorCssBestPractices = {
22
23
  ocorrencias.push(criarOcorrencia({
23
24
  tipo: 'css-empty-rule',
24
25
  nivel: 'info',
25
- mensagem: 'Regra CSS vazia detectada',
26
+ mensagem: messages.DetectorCssMensagens.emptyRule,
26
27
  relPath,
27
28
  linha: numeroLinha,
28
- sugestao: 'Remova a regra vazia ou adicione propriedades'
29
+ sugestao: messages.DetectorCssMensagens.emptyRuleSugestao
29
30
  }));
30
31
  }
31
32
  propsInBlock.clear();
@@ -35,10 +36,10 @@ export const detectorCssBestPractices = {
35
36
  ocorrencias.push(criarOcorrencia({
36
37
  tipo: 'css-important-usage',
37
38
  nivel: 'aviso',
38
- mensagem: '!important detectado - aumenta especificidade desnecessariamente',
39
+ mensagem: messages.DetectorCssMensagens.important,
39
40
  relPath,
40
41
  linha: numeroLinha,
41
- sugestao: 'Refatore o seletor ao invés de usar !important'
42
+ sugestao: messages.DetectorCssMensagens.importantSugestao
42
43
  }));
43
44
  }
44
45
  const propMatch = /^([a-zA-Z-]+)\s*:\s*([^;]+)?/.exec(trimmed);
@@ -49,10 +50,10 @@ export const detectorCssBestPractices = {
49
50
  ocorrencias.push(criarOcorrencia({
50
51
  tipo: 'css-duplicate-property',
51
52
  nivel: 'aviso',
52
- mensagem: `Propriedade duplicada: ${prop}`,
53
+ mensagem: messages.DetectorCssMensagens.duplicateProperty(prop),
53
54
  relPath,
54
55
  linha: numeroLinha,
55
- sugestao: 'Remova a propriedade duplicada'
56
+ sugestao: messages.DetectorCssMensagens.duplicatePropertySugestao
56
57
  }));
57
58
  }
58
59
  propsInBlock.set(prop, { line: numeroLinha, value });
@@ -61,20 +62,20 @@ export const detectorCssBestPractices = {
61
62
  ocorrencias.push(criarOcorrencia({
62
63
  tipo: 'css-id-selector',
63
64
  nivel: 'info',
64
- mensagem: 'Seletor ID detectado - alta especificidade',
65
+ mensagem: messages.DetectorCssMensagens.idSelector,
65
66
  relPath,
66
67
  linha: numeroLinha,
67
- sugestao: 'Prefira classes ao invés de IDs para estilização'
68
+ sugestao: messages.DetectorCssMensagens.idSelectorSugestao
68
69
  }));
69
70
  }
70
71
  if (/\\9|\*property|_property|expression\s*\(/.test(trimmed)) {
71
72
  ocorrencias.push(criarOcorrencia({
72
73
  tipo: 'css-hack',
73
74
  nivel: 'aviso',
74
- mensagem: 'CSS hack detectado',
75
+ mensagem: messages.DetectorCssMensagens.cssHack,
75
76
  relPath,
76
77
  linha: numeroLinha,
77
- sugestao: 'Remova hacks de browser - use feature detection'
78
+ sugestao: messages.DetectorCssMensagens.cssHackSugestao
78
79
  }));
79
80
  }
80
81
  });
@@ -1 +1 @@
1
- {"version":3,"file":"detector-css-best-practices.js","sourceRoot":"","sources":["../../../../src/analysts/css/detectors/detector-css-best-practices.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: MIT\n/**\n * [BUSCA] Detector de boas práticas CSS\n *\n * Detecta padrões problemáticos em CSS/SCSS/SASS:\n * - !important usage\n * - Duplicate properties\n * - Invalid properties\n * - CSS hacks\n * - Empty rules\n * - ID selectors\n */\n\nimport { splitLines } from '@shared/helpers';\n\nimport type { Analista, Ocorrencia } from '@';\nimport { criarOcorrencia } from '@';\n\nexport const detectorCssBestPractices: Analista = {\n nome: 'detector-css-best-practices',\n categoria: 'estilo',\n descricao: 'Detecta más práticas em CSS/SCSS/SASS',\n test: (relPath: string): boolean => /\\.(css|scss|sass)$/i.test(relPath),\n aplicar: (src: string, relPath: string): Ocorrencia[] => {\n if (!src) return [];\n const ocorrencias: Ocorrencia[] = [];\n const linhas = splitLines(src);\n\n let depth = 0;\n const propsInBlock = new Map<string, { line: number; value: string }>();\n\n linhas.forEach((linha, index) => {\n const numeroLinha = index + 1;\n const trimmed = linha.trim();\n\n if (trimmed.includes('{')) depth++;\n if (trimmed.includes('}')) {\n if (propsInBlock.size === 0 && depth > 0) {\n ocorrencias.push(criarOcorrencia({\n tipo: 'css-empty-rule',\n nivel: 'info',\n mensagem: 'Regra CSS vazia detectada',\n relPath,\n linha: numeroLinha,\n sugestao: 'Remova a regra vazia ou adicione propriedades'\n }));\n }\n propsInBlock.clear();\n depth--;\n }\n\n if (/!important/.test(trimmed)) {\n ocorrencias.push(criarOcorrencia({\n tipo: 'css-important-usage',\n nivel: 'aviso',\n mensagem: '!important detectado - aumenta especificidade desnecessariamente',\n relPath,\n linha: numeroLinha,\n sugestao: 'Refatore o seletor ao invés de usar !important'\n }));\n }\n\n const propMatch = /^([a-zA-Z-]+)\\s*:\\s*([^;]+)?/.exec(trimmed);\n if (propMatch && depth > 0) {\n const prop = propMatch[1].toLowerCase();\n const value = (propMatch[2] || '').trim();\n\n if (propsInBlock.has(prop)) {\n ocorrencias.push(criarOcorrencia({\n tipo: 'css-duplicate-property',\n nivel: 'aviso',\n mensagem: `Propriedade duplicada: ${prop}`,\n relPath,\n linha: numeroLinha,\n sugestao: 'Remova a propriedade duplicada'\n }));\n }\n propsInBlock.set(prop, { line: numeroLinha, value });\n }\n\n if (/#[a-zA-Z0-9_-]+\\s*\\{/.test(trimmed)) {\n ocorrencias.push(criarOcorrencia({\n tipo: 'css-id-selector',\n nivel: 'info',\n mensagem: 'Seletor ID detectado - alta especificidade',\n relPath,\n linha: numeroLinha,\n sugestao: 'Prefira classes ao invés de IDs para estilização'\n }));\n }\n\n if (/\\\\9|\\*property|_property|expression\\s*\\(/.test(trimmed)) {\n ocorrencias.push(criarOcorrencia({\n tipo: 'css-hack',\n nivel: 'aviso',\n mensagem: 'CSS hack detectado',\n relPath,\n linha: numeroLinha,\n sugestao: 'Remova hacks de browser - use feature detection'\n }));\n }\n });\n\n return ocorrencias;\n }\n};\n"]}
1
+ {"version":3,"file":"detector-css-best-practices.js","sourceRoot":"","sources":["../../../../src/analysts/css/detectors/detector-css-best-practices.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: MIT\n/**\n * [BUSCA] Detector de boas práticas CSS\n *\n * Detecta padrões problemáticos em CSS/SCSS/SASS:\n * - !important usage\n * - Duplicate properties\n * - Invalid properties\n * - CSS hacks\n * - Empty rules\n * - ID selectors\n */\n\nimport { messages } from '@core/messages';\nimport { splitLines } from '@shared/helpers';\n\nimport type { Analista, Ocorrencia } from '@';\nimport { criarOcorrencia } from '@';\n\nexport const detectorCssBestPractices: Analista = {\n nome: 'detector-css-best-practices',\n categoria: 'estilo',\n descricao: 'Detecta más práticas em CSS/SCSS/SASS',\n test: (relPath: string): boolean => /\\.(css|scss|sass)$/i.test(relPath),\n aplicar: (src: string, relPath: string): Ocorrencia[] => {\n if (!src) return [];\n const ocorrencias: Ocorrencia[] = [];\n const linhas = splitLines(src);\n\n let depth = 0;\n const propsInBlock = new Map<string, { line: number; value: string }>();\n\n linhas.forEach((linha, index) => {\n const numeroLinha = index + 1;\n const trimmed = linha.trim();\n\n if (trimmed.includes('{')) depth++;\n if (trimmed.includes('}')) {\n if (propsInBlock.size === 0 && depth > 0) {\n ocorrencias.push(criarOcorrencia({\n tipo: 'css-empty-rule',\n nivel: 'info',\n mensagem: messages.DetectorCssMensagens.emptyRule,\n relPath,\n linha: numeroLinha,\n sugestao: messages.DetectorCssMensagens.emptyRuleSugestao\n }));\n }\n propsInBlock.clear();\n depth--;\n }\n\n if (/!important/.test(trimmed)) {\n ocorrencias.push(criarOcorrencia({\n tipo: 'css-important-usage',\n nivel: 'aviso',\n mensagem: messages.DetectorCssMensagens.important,\n relPath,\n linha: numeroLinha,\n sugestao: messages.DetectorCssMensagens.importantSugestao\n }));\n }\n\n const propMatch = /^([a-zA-Z-]+)\\s*:\\s*([^;]+)?/.exec(trimmed);\n if (propMatch && depth > 0) {\n const prop = propMatch[1].toLowerCase();\n const value = (propMatch[2] || '').trim();\n\n if (propsInBlock.has(prop)) {\n ocorrencias.push(criarOcorrencia({\n tipo: 'css-duplicate-property',\n nivel: 'aviso',\n mensagem: messages.DetectorCssMensagens.duplicateProperty(prop),\n relPath,\n linha: numeroLinha,\n sugestao: messages.DetectorCssMensagens.duplicatePropertySugestao\n }));\n }\n propsInBlock.set(prop, { line: numeroLinha, value });\n }\n\n if (/#[a-zA-Z0-9_-]+\\s*\\{/.test(trimmed)) {\n ocorrencias.push(criarOcorrencia({\n tipo: 'css-id-selector',\n nivel: 'info',\n mensagem: messages.DetectorCssMensagens.idSelector,\n relPath,\n linha: numeroLinha,\n sugestao: messages.DetectorCssMensagens.idSelectorSugestao\n }));\n }\n\n if (/\\\\9|\\*property|_property|expression\\s*\\(/.test(trimmed)) {\n ocorrencias.push(criarOcorrencia({\n tipo: 'css-hack',\n nivel: 'aviso',\n mensagem: messages.DetectorCssMensagens.cssHack,\n relPath,\n linha: numeroLinha,\n sugestao: messages.DetectorCssMensagens.cssHackSugestao\n }));\n }\n });\n\n return ocorrencias;\n }\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"analyst-github-actions.d.ts","sourceRoot":"","sources":["../../../../src/analysts/github-actions/analysts/analyst-github-actions.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAoB,cAAc,EAAgC,MAAM,GAAG,CAAC;AAkDlG,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAE7E;AACD,wBAAgB,4BAA4B,IAAI,cAAc,EAAE,CAE/D;AACD,eAAO,MAAM,qBAAqB,EAAE,QAuCnC,CAAC;AACF,eAAO,MAAM,2BAA2B,EAAE,QA2HzC,CAAC"}
1
+ {"version":3,"file":"analyst-github-actions.d.ts","sourceRoot":"","sources":["../../../../src/analysts/github-actions/analysts/analyst-github-actions.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAoB,cAAc,EAAgC,MAAM,GAAG,CAAC;AAmDlG,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAE7E;AACD,wBAAgB,4BAA4B,IAAI,cAAc,EAAE,CAE/D;AACD,eAAO,MAAM,qBAAqB,EAAE,QAuCnC,CAAC;AACF,eAAO,MAAM,2BAA2B,EAAE,QA2HzC,CAAC"}
@@ -7,6 +7,7 @@ import { detectorWorkflowSecurity } from '../detectors/detector-workflow-securit
7
7
  import { detectarJobsPassivos, detectorWorkflowEstrutura } from '../detectors/detector-workflow-structure.js';
8
8
  import { detectorWorkflowTriggerInseguro } from '../detectors/detector-workflow-trigger-unsafe.js';
9
9
  import { isOrgVerificada } from '../detectors/org-verified.js';
10
+ import { messages } from '../../../core/messages/index.js';
10
11
  let _workflowNeedsFullHistory = false;
11
12
  const detectoresRegistrados = [];
12
13
  export function registrarDetectorGithubActions(detector) {
@@ -68,7 +69,7 @@ export const analistaGithubActionsGlobal = {
68
69
  if (!paths.some(caminho => /CODEOWNERS/i.test(caminho))) {
69
70
  ores.push({
70
71
  tipo: 'GITHUB_ACTIONS_CODEOWNERS_MISSING',
71
- mensagem: 'CODEOWNERS faltando',
72
+ mensagem: messages.AnalistaGithubActionsMensagens.missingCodeowners,
72
73
  relPath: '.github/',
73
74
  linha: 0,
74
75
  coluna: 0,
@@ -80,7 +81,7 @@ export const analistaGithubActionsGlobal = {
80
81
  if (readme && !/Code of Conduct|Código de Conduta/i.test(content)) {
81
82
  ores.push({
82
83
  tipo: 'GITHUB_ACTIONS_DOC_GOVERNANCE_MISSING',
83
- mensagem: 'README sem Código de Conduta',
84
+ mensagem: messages.AnalistaGithubActionsMensagens.missingCodeOfConduct,
84
85
  relPath: readme.relPath,
85
86
  linha: 1,
86
87
  coluna: 0,
@@ -90,7 +91,7 @@ export const analistaGithubActionsGlobal = {
90
91
  if (!paths.some(caminho => /stale/i.test(caminho))) {
91
92
  ores.push({
92
93
  tipo: 'GITHUB_ACTIONS_STALE_BOT_MISSING',
93
- mensagem: 'Stale bot faltando',
94
+ mensagem: messages.AnalistaGithubActionsMensagens.missingStaleBot,
94
95
  relPath: '.github/workflows/',
95
96
  linha: 0,
96
97
  coluna: 0,
@@ -100,7 +101,7 @@ export const analistaGithubActionsGlobal = {
100
101
  if (!paths.some(caminho => /release|deploy/i.test(caminho))) {
101
102
  ores.push({
102
103
  tipo: 'GITHUB_ACTIONS_RELEASE_AUTOMATION_MISSING',
103
- mensagem: 'Release automation faltando',
104
+ mensagem: messages.AnalistaGithubActionsMensagens.missingReleaseAutomation,
104
105
  relPath: '.github/workflows/',
105
106
  linha: 0,
106
107
  coluna: 0,
@@ -110,7 +111,7 @@ export const analistaGithubActionsGlobal = {
110
111
  if (!paths.some(caminho => /\.github\/ISSUE_TEMPLATE/i.test(caminho))) {
111
112
  ores.push({
112
113
  tipo: 'GITHUB_ACTIONS_ISSUE_TEMPLATES_MISSING',
113
- mensagem: 'Issue templates faltando',
114
+ mensagem: messages.AnalistaGithubActionsMensagens.missingIssueTemplates,
114
115
  relPath: '.github/ISSUE_TEMPLATE/',
115
116
  linha: 0,
116
117
  coluna: 0,
@@ -120,7 +121,7 @@ export const analistaGithubActionsGlobal = {
120
121
  if (!paths.some(caminho => /pull_request_template/i.test(caminho))) {
121
122
  ores.push({
122
123
  tipo: 'GITHUB_ACTIONS_PR_TEMPLATE_MISSING',
123
- mensagem: 'PR template faltando',
124
+ mensagem: messages.AnalistaGithubActionsMensagens.missingPrTemplate,
124
125
  relPath: '.github/',
125
126
  linha: 0,
126
127
  coluna: 0,
@@ -132,7 +133,7 @@ export const analistaGithubActionsGlobal = {
132
133
  if (!hasSemanticRelease) {
133
134
  ores.push({
134
135
  tipo: 'GITHUB_ACTIONS_SEMANTIC_VERSIONING_MISSING',
135
- mensagem: 'Automação de versionamento semântico não detectada',
136
+ mensagem: messages.AnalistaGithubActionsMensagens.missingSemanticVersioning,
136
137
  relPath: '.github/workflows/',
137
138
  linha: 0,
138
139
  coluna: 0,
@@ -142,7 +143,7 @@ export const analistaGithubActionsGlobal = {
142
143
  if (!hasChangelog) {
143
144
  ores.push({
144
145
  tipo: 'GITHUB_ACTIONS_CHANGELOG_AUTOMATION_MISSING',
145
- mensagem: 'Automação de changelog faltando',
146
+ mensagem: messages.AnalistaGithubActionsMensagens.missingChangelogAutomation,
146
147
  relPath: '.github/workflows/',
147
148
  linha: 0,
148
149
  coluna: 0,
@@ -154,7 +155,7 @@ export const analistaGithubActionsGlobal = {
154
155
  if (missingLicense.length > sourceFiles.length / 2) {
155
156
  ores.push({
156
157
  tipo: 'GITHUB_ACTIONS_LICENSE_HEADERS_MISSING',
157
- mensagem: 'Muitos arquivos sem cabeçalho de licença (SPDX)',
158
+ mensagem: messages.AnalistaGithubActionsMensagens.missingLicenseHeaders,
158
159
  relPath: './',
159
160
  linha: 0,
160
161
  coluna: 0,