@dxworks/insider 2.9.1

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 (385) hide show
  1. package/.github/workflows/build.yml +19 -0
  2. package/.github/workflows/release-docs.yml +15 -0
  3. package/.github/workflows/release-voyager.yml +57 -0
  4. package/.github/workflows/release.yml +102 -0
  5. package/Dockerfile +8 -0
  6. package/README.md +89 -0
  7. package/TODO.txt +7 -0
  8. package/bin/insider.bat +1 -0
  9. package/bin/insider.sh +1 -0
  10. package/build.gradle +55 -0
  11. package/config/.ignore +4 -0
  12. package/config/comments.json +71 -0
  13. package/config/fingerprints/_anomalies-full.json +116 -0
  14. package/config/fingerprints/_extLibs.json +2555 -0
  15. package/config/fingerprints/code_smells.json +94 -0
  16. package/config/fingerprints/generated_code.json +17 -0
  17. package/config/fingerprints/libraries.json +4667 -0
  18. package/config/ignoredImports.txt +0 -0
  19. package/config/insider-conf.properties +3 -0
  20. package/config/rules/cloud_services/ad_networks.json +50 -0
  21. package/config/rules/cloud_services/bigdata.json +21 -0
  22. package/config/rules/cloud_services/cloud_hosting.json +398 -0
  23. package/config/rules/cloud_services/data_storage.json +291 -0
  24. package/config/rules/cloud_services/ecommerce.json +45 -0
  25. package/config/rules/cloud_services/socialmedia.json +82 -0
  26. package/config/rules/cloud_services/web_analytics.json +108 -0
  27. package/config/rules/components/active_content.json +157 -0
  28. package/config/rules/components/load_dll.json +66 -0
  29. package/config/rules/cryptography/algorithm_implementation.json +62 -0
  30. package/config/rules/cryptography/certificate.json +199 -0
  31. package/config/rules/cryptography/ciphers.json +174 -0
  32. package/config/rules/cryptography/crypto_currency.json +32 -0
  33. package/config/rules/cryptography/encoding.json +20 -0
  34. package/config/rules/cryptography/extended.json +220 -0
  35. package/config/rules/cryptography/external_libraries.json +141 -0
  36. package/config/rules/cryptography/hash_algorithm.json +98 -0
  37. package/config/rules/cryptography/key_derivation.json +65 -0
  38. package/config/rules/cryptography/protocol.json +156 -0
  39. package/config/rules/cryptography/random.json +97 -0
  40. package/config/rules/cryptography/weakssl.json +206 -0
  41. package/config/rules/data_handling/compressed_files.json +18 -0
  42. package/config/rules/data_handling/database.json +361 -0
  43. package/config/rules/data_handling/deserialization.json +296 -0
  44. package/config/rules/data_handling/json_parsing.json +49 -0
  45. package/config/rules/data_handling/media_parsing.json +33 -0
  46. package/config/rules/data_handling/pastebin.json +18 -0
  47. package/config/rules/data_handling/xml_parsing.json +168 -0
  48. package/config/rules/data_types/financial.json +106 -0
  49. package/config/rules/data_types/media.json +48 -0
  50. package/config/rules/data_types/secrets.json +91 -0
  51. package/config/rules/data_types/sensitive.json +176 -0
  52. package/config/rules/device_permissions/IOSPermissions.json +240 -0
  53. package/config/rules/device_permissions/UWP.json +221 -0
  54. package/config/rules/device_permissions/android_intents.json +599 -0
  55. package/config/rules/frameworks/PHP.json +172 -0
  56. package/config/rules/frameworks/build.json +189 -0
  57. package/config/rules/frameworks/c.json +45 -0
  58. package/config/rules/frameworks/csharp-nonMS.json +19 -0
  59. package/config/rules/frameworks/java.json +291 -0
  60. package/config/rules/frameworks/javascript.json +318 -0
  61. package/config/rules/frameworks/logging.json +103 -0
  62. package/config/rules/frameworks/microsoft.json +257 -0
  63. package/config/rules/frameworks/python.json +274 -0
  64. package/config/rules/frameworks/ruby.json +53 -0
  65. package/config/rules/frameworks/rust.json +77 -0
  66. package/config/rules/general/OSS_license.json +146 -0
  67. package/config/rules/general/code_metrics.json +132 -0
  68. package/config/rules/general/dependencies.json +199 -0
  69. package/config/rules/general/hygiene.json +47 -0
  70. package/config/rules/general/platforms.json +283 -0
  71. package/config/rules/general/solutioninfo.json +378 -0
  72. package/config/rules/infrastructure/hashicorp_packers_tmpl.json +18 -0
  73. package/config/rules/infrastructure/hashicorp_terraform_tmpl.json +19 -0
  74. package/config/rules/infrastructure/microsoft_arm_tmpl.json +198 -0
  75. package/config/rules/networkcomms/outbound_network.json +429 -0
  76. package/config/rules/os/acl.json +250 -0
  77. package/config/rules/os/dynamic_execution.json +359 -0
  78. package/config/rules/os/file_io.json +468 -0
  79. package/config/rules/os/process.json +179 -0
  80. package/config/rules/os/setenv.json +270 -0
  81. package/config/rules/os/system_registry.json +237 -0
  82. package/config/rules/os/user_accts.json +34 -0
  83. package/config/rules/security_feature/authentication.json +387 -0
  84. package/config/rules/security_feature/authorization.json +148 -0
  85. package/config/rules/test_frameworks/cpp_testing.json +194 -0
  86. package/config/rules/test_frameworks/go_testing.json +18 -0
  87. package/config/rules/test_frameworks/java_testing.json +720 -0
  88. package/config/rules/test_frameworks/javascript_testing.json +724 -0
  89. package/config/rules/test_frameworks/objectiveC_testing.json +146 -0
  90. package/config/rules/test_frameworks/php_testing.json +156 -0
  91. package/config/rules/test_frameworks/powershell_testing.json +17 -0
  92. package/config/rules/test_frameworks/python_testing.json +108 -0
  93. package/config/rules/test_frameworks/ruby_testing.json +114 -0
  94. package/config/rules/tools/pipeline.json +195 -0
  95. package/config/rules/webapp/comms.json +89 -0
  96. package/config/rules/webapp/headers.json +178 -0
  97. package/config/rules/webapp/media.json +56 -0
  98. package/config/rules/webapp/sessions.json +228 -0
  99. package/config/rules/webapp/storage.json +215 -0
  100. package/dist/config/.ignore +4 -0
  101. package/dist/config/comments.json +71 -0
  102. package/dist/config/fingerprints/_anomalies-full.json +116 -0
  103. package/dist/config/fingerprints/_extLibs.json +2555 -0
  104. package/dist/config/fingerprints/code_smells.json +94 -0
  105. package/dist/config/fingerprints/generated_code.json +17 -0
  106. package/dist/config/fingerprints/libraries.json +4667 -0
  107. package/dist/config/ignoredImports.txt +0 -0
  108. package/dist/config/insider-conf.properties +3 -0
  109. package/dist/config/rules/cloud_services/ad_networks.json +50 -0
  110. package/dist/config/rules/cloud_services/bigdata.json +21 -0
  111. package/dist/config/rules/cloud_services/cloud_hosting.json +398 -0
  112. package/dist/config/rules/cloud_services/data_storage.json +291 -0
  113. package/dist/config/rules/cloud_services/ecommerce.json +45 -0
  114. package/dist/config/rules/cloud_services/socialmedia.json +82 -0
  115. package/dist/config/rules/cloud_services/web_analytics.json +108 -0
  116. package/dist/config/rules/components/active_content.json +157 -0
  117. package/dist/config/rules/components/load_dll.json +66 -0
  118. package/dist/config/rules/cryptography/algorithm_implementation.json +62 -0
  119. package/dist/config/rules/cryptography/certificate.json +199 -0
  120. package/dist/config/rules/cryptography/ciphers.json +174 -0
  121. package/dist/config/rules/cryptography/crypto_currency.json +32 -0
  122. package/dist/config/rules/cryptography/encoding.json +20 -0
  123. package/dist/config/rules/cryptography/extended.json +220 -0
  124. package/dist/config/rules/cryptography/external_libraries.json +141 -0
  125. package/dist/config/rules/cryptography/hash_algorithm.json +98 -0
  126. package/dist/config/rules/cryptography/key_derivation.json +65 -0
  127. package/dist/config/rules/cryptography/protocol.json +156 -0
  128. package/dist/config/rules/cryptography/random.json +97 -0
  129. package/dist/config/rules/cryptography/weakssl.json +206 -0
  130. package/dist/config/rules/data_handling/compressed_files.json +18 -0
  131. package/dist/config/rules/data_handling/database.json +361 -0
  132. package/dist/config/rules/data_handling/deserialization.json +296 -0
  133. package/dist/config/rules/data_handling/json_parsing.json +49 -0
  134. package/dist/config/rules/data_handling/media_parsing.json +33 -0
  135. package/dist/config/rules/data_handling/pastebin.json +18 -0
  136. package/dist/config/rules/data_handling/xml_parsing.json +168 -0
  137. package/dist/config/rules/data_types/financial.json +106 -0
  138. package/dist/config/rules/data_types/media.json +48 -0
  139. package/dist/config/rules/data_types/secrets.json +91 -0
  140. package/dist/config/rules/data_types/sensitive.json +176 -0
  141. package/dist/config/rules/device_permissions/IOSPermissions.json +240 -0
  142. package/dist/config/rules/device_permissions/UWP.json +221 -0
  143. package/dist/config/rules/device_permissions/android_intents.json +599 -0
  144. package/dist/config/rules/frameworks/PHP.json +172 -0
  145. package/dist/config/rules/frameworks/build.json +189 -0
  146. package/dist/config/rules/frameworks/c.json +45 -0
  147. package/dist/config/rules/frameworks/csharp-nonMS.json +19 -0
  148. package/dist/config/rules/frameworks/java.json +291 -0
  149. package/dist/config/rules/frameworks/javascript.json +318 -0
  150. package/dist/config/rules/frameworks/logging.json +103 -0
  151. package/dist/config/rules/frameworks/microsoft.json +257 -0
  152. package/dist/config/rules/frameworks/python.json +274 -0
  153. package/dist/config/rules/frameworks/ruby.json +53 -0
  154. package/dist/config/rules/frameworks/rust.json +77 -0
  155. package/dist/config/rules/general/OSS_license.json +146 -0
  156. package/dist/config/rules/general/code_metrics.json +132 -0
  157. package/dist/config/rules/general/dependencies.json +199 -0
  158. package/dist/config/rules/general/hygiene.json +47 -0
  159. package/dist/config/rules/general/platforms.json +283 -0
  160. package/dist/config/rules/general/solutioninfo.json +378 -0
  161. package/dist/config/rules/infrastructure/hashicorp_packers_tmpl.json +18 -0
  162. package/dist/config/rules/infrastructure/hashicorp_terraform_tmpl.json +19 -0
  163. package/dist/config/rules/infrastructure/microsoft_arm_tmpl.json +198 -0
  164. package/dist/config/rules/networkcomms/outbound_network.json +429 -0
  165. package/dist/config/rules/os/acl.json +250 -0
  166. package/dist/config/rules/os/dynamic_execution.json +359 -0
  167. package/dist/config/rules/os/file_io.json +468 -0
  168. package/dist/config/rules/os/process.json +179 -0
  169. package/dist/config/rules/os/setenv.json +270 -0
  170. package/dist/config/rules/os/system_registry.json +237 -0
  171. package/dist/config/rules/os/user_accts.json +34 -0
  172. package/dist/config/rules/security_feature/authentication.json +387 -0
  173. package/dist/config/rules/security_feature/authorization.json +148 -0
  174. package/dist/config/rules/test_frameworks/cpp_testing.json +194 -0
  175. package/dist/config/rules/test_frameworks/go_testing.json +18 -0
  176. package/dist/config/rules/test_frameworks/java_testing.json +720 -0
  177. package/dist/config/rules/test_frameworks/javascript_testing.json +724 -0
  178. package/dist/config/rules/test_frameworks/objectiveC_testing.json +146 -0
  179. package/dist/config/rules/test_frameworks/php_testing.json +156 -0
  180. package/dist/config/rules/test_frameworks/powershell_testing.json +17 -0
  181. package/dist/config/rules/test_frameworks/python_testing.json +108 -0
  182. package/dist/config/rules/test_frameworks/ruby_testing.json +114 -0
  183. package/dist/config/rules/tools/pipeline.json +195 -0
  184. package/dist/config/rules/webapp/comms.json +89 -0
  185. package/dist/config/rules/webapp/headers.json +178 -0
  186. package/dist/config/rules/webapp/media.json +56 -0
  187. package/dist/config/rules/webapp/sessions.json +228 -0
  188. package/dist/config/rules/webapp/storage.json +215 -0
  189. package/dist/index.js +13 -0
  190. package/dist/insider.jar +0 -0
  191. package/dist/insider.js +7 -0
  192. package/dist/lib.js +21 -0
  193. package/docs/config/config.md +3 -0
  194. package/docs/config/ignore.md +3 -0
  195. package/docs/config/languages.md +3 -0
  196. package/docs/index.md +58 -0
  197. package/dxworks-site.json +13 -0
  198. package/gradle.properties +0 -0
  199. package/gradlew +240 -0
  200. package/gradlew.bat +91 -0
  201. package/insider/README.md +89 -0
  202. package/insider/config/.ignore +4 -0
  203. package/insider/config/comments.json +71 -0
  204. package/insider/config/fingerprints/_anomalies-full.json +116 -0
  205. package/insider/config/fingerprints/_extLibs.json +2555 -0
  206. package/insider/config/fingerprints/code_smells.json +94 -0
  207. package/insider/config/fingerprints/generated_code.json +17 -0
  208. package/insider/config/fingerprints/libraries.json +4667 -0
  209. package/insider/config/ignoredImports.txt +0 -0
  210. package/insider/config/insider-conf.properties +3 -0
  211. package/insider/config/rules/cloud_services/ad_networks.json +50 -0
  212. package/insider/config/rules/cloud_services/bigdata.json +21 -0
  213. package/insider/config/rules/cloud_services/cloud_hosting.json +398 -0
  214. package/insider/config/rules/cloud_services/data_storage.json +291 -0
  215. package/insider/config/rules/cloud_services/ecommerce.json +45 -0
  216. package/insider/config/rules/cloud_services/socialmedia.json +82 -0
  217. package/insider/config/rules/cloud_services/web_analytics.json +108 -0
  218. package/insider/config/rules/components/active_content.json +157 -0
  219. package/insider/config/rules/components/load_dll.json +66 -0
  220. package/insider/config/rules/cryptography/algorithm_implementation.json +62 -0
  221. package/insider/config/rules/cryptography/certificate.json +199 -0
  222. package/insider/config/rules/cryptography/ciphers.json +174 -0
  223. package/insider/config/rules/cryptography/crypto_currency.json +32 -0
  224. package/insider/config/rules/cryptography/encoding.json +20 -0
  225. package/insider/config/rules/cryptography/extended.json +220 -0
  226. package/insider/config/rules/cryptography/external_libraries.json +141 -0
  227. package/insider/config/rules/cryptography/hash_algorithm.json +98 -0
  228. package/insider/config/rules/cryptography/key_derivation.json +65 -0
  229. package/insider/config/rules/cryptography/protocol.json +156 -0
  230. package/insider/config/rules/cryptography/random.json +97 -0
  231. package/insider/config/rules/cryptography/weakssl.json +206 -0
  232. package/insider/config/rules/data_handling/compressed_files.json +18 -0
  233. package/insider/config/rules/data_handling/database.json +361 -0
  234. package/insider/config/rules/data_handling/deserialization.json +296 -0
  235. package/insider/config/rules/data_handling/json_parsing.json +49 -0
  236. package/insider/config/rules/data_handling/media_parsing.json +33 -0
  237. package/insider/config/rules/data_handling/pastebin.json +18 -0
  238. package/insider/config/rules/data_handling/xml_parsing.json +168 -0
  239. package/insider/config/rules/data_types/financial.json +106 -0
  240. package/insider/config/rules/data_types/media.json +48 -0
  241. package/insider/config/rules/data_types/secrets.json +91 -0
  242. package/insider/config/rules/data_types/sensitive.json +176 -0
  243. package/insider/config/rules/device_permissions/IOSPermissions.json +240 -0
  244. package/insider/config/rules/device_permissions/UWP.json +221 -0
  245. package/insider/config/rules/device_permissions/android_intents.json +599 -0
  246. package/insider/config/rules/frameworks/PHP.json +172 -0
  247. package/insider/config/rules/frameworks/build.json +189 -0
  248. package/insider/config/rules/frameworks/c.json +45 -0
  249. package/insider/config/rules/frameworks/csharp-nonMS.json +19 -0
  250. package/insider/config/rules/frameworks/java.json +291 -0
  251. package/insider/config/rules/frameworks/javascript.json +318 -0
  252. package/insider/config/rules/frameworks/logging.json +103 -0
  253. package/insider/config/rules/frameworks/microsoft.json +257 -0
  254. package/insider/config/rules/frameworks/python.json +274 -0
  255. package/insider/config/rules/frameworks/ruby.json +53 -0
  256. package/insider/config/rules/frameworks/rust.json +77 -0
  257. package/insider/config/rules/general/OSS_license.json +146 -0
  258. package/insider/config/rules/general/code_metrics.json +132 -0
  259. package/insider/config/rules/general/dependencies.json +199 -0
  260. package/insider/config/rules/general/hygiene.json +47 -0
  261. package/insider/config/rules/general/platforms.json +283 -0
  262. package/insider/config/rules/general/solutioninfo.json +378 -0
  263. package/insider/config/rules/infrastructure/hashicorp_packers_tmpl.json +18 -0
  264. package/insider/config/rules/infrastructure/hashicorp_terraform_tmpl.json +19 -0
  265. package/insider/config/rules/infrastructure/microsoft_arm_tmpl.json +198 -0
  266. package/insider/config/rules/networkcomms/outbound_network.json +429 -0
  267. package/insider/config/rules/os/acl.json +250 -0
  268. package/insider/config/rules/os/dynamic_execution.json +359 -0
  269. package/insider/config/rules/os/file_io.json +468 -0
  270. package/insider/config/rules/os/process.json +179 -0
  271. package/insider/config/rules/os/setenv.json +270 -0
  272. package/insider/config/rules/os/system_registry.json +237 -0
  273. package/insider/config/rules/os/user_accts.json +34 -0
  274. package/insider/config/rules/security_feature/authentication.json +387 -0
  275. package/insider/config/rules/security_feature/authorization.json +148 -0
  276. package/insider/config/rules/test_frameworks/cpp_testing.json +194 -0
  277. package/insider/config/rules/test_frameworks/go_testing.json +18 -0
  278. package/insider/config/rules/test_frameworks/java_testing.json +720 -0
  279. package/insider/config/rules/test_frameworks/javascript_testing.json +724 -0
  280. package/insider/config/rules/test_frameworks/objectiveC_testing.json +146 -0
  281. package/insider/config/rules/test_frameworks/php_testing.json +156 -0
  282. package/insider/config/rules/test_frameworks/powershell_testing.json +17 -0
  283. package/insider/config/rules/test_frameworks/python_testing.json +108 -0
  284. package/insider/config/rules/test_frameworks/ruby_testing.json +114 -0
  285. package/insider/config/rules/tools/pipeline.json +195 -0
  286. package/insider/config/rules/webapp/comms.json +89 -0
  287. package/insider/config/rules/webapp/headers.json +178 -0
  288. package/insider/config/rules/webapp/media.json +56 -0
  289. package/insider/config/rules/webapp/sessions.json +228 -0
  290. package/insider/config/rules/webapp/storage.json +215 -0
  291. package/insider/insider.bat +1 -0
  292. package/insider/insider.jar +0 -0
  293. package/insider/insider.sh +1 -0
  294. package/insider/languages.yml +3988 -0
  295. package/instrument.yml +37 -0
  296. package/languages.yml +3988 -0
  297. package/lib/index.js +13 -0
  298. package/lib/insider.js +7 -0
  299. package/lib/lib.js +21 -0
  300. package/lombok.config +2 -0
  301. package/mkdocs.yml +18 -0
  302. package/package.json +51 -0
  303. package/releaseNotes/v2.6.0.md +1 -0
  304. package/releaseNotes/v2.7.1.md +1 -0
  305. package/settings.gradle +2 -0
  306. package/src/main/java/org/dxworks/insider/ChronosTag.java +14 -0
  307. package/src/main/java/org/dxworks/insider/Insider.java +214 -0
  308. package/src/main/java/org/dxworks/insider/InsiderAnalysis.java +7 -0
  309. package/src/main/java/org/dxworks/insider/InsiderFile.java +125 -0
  310. package/src/main/java/org/dxworks/insider/InsiderOptions.java +78 -0
  311. package/src/main/java/org/dxworks/insider/InsiderResult.java +15 -0
  312. package/src/main/java/org/dxworks/insider/application/inspector/CodeRuleExtractor.java +14 -0
  313. package/src/main/java/org/dxworks/insider/application/inspector/CommentRuleExtractor.java +14 -0
  314. package/src/main/java/org/dxworks/insider/application/inspector/FileRuleExtractor.java +14 -0
  315. package/src/main/java/org/dxworks/insider/application/inspector/RuleExtractor.java +11 -0
  316. package/src/main/java/org/dxworks/insider/application/inspector/dtos/Comment.java +18 -0
  317. package/src/main/java/org/dxworks/insider/application/inspector/dtos/CommentPattern.java +44 -0
  318. package/src/main/java/org/dxworks/insider/application/inspector/dtos/Condition.java +15 -0
  319. package/src/main/java/org/dxworks/insider/application/inspector/dtos/InsiderPattern.java +149 -0
  320. package/src/main/java/org/dxworks/insider/application/inspector/dtos/PatternMatch.java +23 -0
  321. package/src/main/java/org/dxworks/insider/application/inspector/dtos/Rule.java +61 -0
  322. package/src/main/java/org/dxworks/insider/application/inspector/services/CommentService.java +165 -0
  323. package/src/main/java/org/dxworks/insider/application/inspector/services/RuleService.java +54 -0
  324. package/src/main/java/org/dxworks/insider/commands/AddCommand.java +125 -0
  325. package/src/main/java/org/dxworks/insider/commands/AllFilesCommand.java +4 -0
  326. package/src/main/java/org/dxworks/insider/commands/ConvertCommand.java +55 -0
  327. package/src/main/java/org/dxworks/insider/commands/DetectCommand.java +42 -0
  328. package/src/main/java/org/dxworks/insider/commands/DiagnoseCommand.java +74 -0
  329. package/src/main/java/org/dxworks/insider/commands/ExtractCommand.java +35 -0
  330. package/src/main/java/org/dxworks/insider/commands/FindCommand.java +102 -0
  331. package/src/main/java/org/dxworks/insider/commands/HelpCommand.java +56 -0
  332. package/src/main/java/org/dxworks/insider/commands/IndentationCount.java +69 -0
  333. package/src/main/java/org/dxworks/insider/commands/InsiderCommand.java +71 -0
  334. package/src/main/java/org/dxworks/insider/commands/InspectCommand.java +98 -0
  335. package/src/main/java/org/dxworks/insider/commands/MeasureCommand.java +47 -0
  336. package/src/main/java/org/dxworks/insider/commands/NoFilesCommand.java +4 -0
  337. package/src/main/java/org/dxworks/insider/commands/VersionCommand.java +34 -0
  338. package/src/main/java/org/dxworks/insider/configuration/InsiderConfiguration.java +123 -0
  339. package/src/main/java/org/dxworks/insider/constants/InsiderConstants.java +19 -0
  340. package/src/main/java/org/dxworks/insider/depext/AbstractImportsProcessor.java +57 -0
  341. package/src/main/java/org/dxworks/insider/depext/CPPImportsProcessor.java +55 -0
  342. package/src/main/java/org/dxworks/insider/depext/CSharpImportsProcessor.java +53 -0
  343. package/src/main/java/org/dxworks/insider/depext/DependencyExtractor.java +105 -0
  344. package/src/main/java/org/dxworks/insider/depext/ImportItem.java +19 -0
  345. package/src/main/java/org/dxworks/insider/depext/ImportResult.java +32 -0
  346. package/src/main/java/org/dxworks/insider/depext/JavastackImportsProcessor.java +88 -0
  347. package/src/main/java/org/dxworks/insider/depext/VBImportsProcessor.java +41 -0
  348. package/src/main/java/org/dxworks/insider/exceptions/InsiderException.java +7 -0
  349. package/src/main/java/org/dxworks/insider/library/detector/C_ImportsContainer.java +73 -0
  350. package/src/main/java/org/dxworks/insider/library/detector/ImportsContainer.java +122 -0
  351. package/src/main/java/org/dxworks/insider/library/detector/JavaImportsContainer.java +63 -0
  352. package/src/main/java/org/dxworks/insider/library/detector/LibraryDetector.java +150 -0
  353. package/src/main/java/org/dxworks/insider/library/detector/LibraryDetectorLanguage.java +6 -0
  354. package/src/main/java/org/dxworks/insider/library/detector/model/PackagingUnit.java +26 -0
  355. package/src/main/java/org/dxworks/insider/technology/finder/LinguistService.java +79 -0
  356. package/src/main/java/org/dxworks/insider/technology/finder/converters/XmlToJsonConverter.java +41 -0
  357. package/src/main/java/org/dxworks/insider/technology/finder/exceptions/FingerprintParseException.java +7 -0
  358. package/src/main/java/org/dxworks/insider/technology/finder/model/Technology.java +73 -0
  359. package/src/main/java/org/dxworks/insider/technology/finder/model/json/JsonConfigurationDTO.java +14 -0
  360. package/src/main/java/org/dxworks/insider/technology/finder/model/json/TechnologyJsonDTO.java +66 -0
  361. package/src/main/java/org/dxworks/insider/technology/finder/model/xml/old/CategoryXmlDTO.java +21 -0
  362. package/src/main/java/org/dxworks/insider/technology/finder/model/xml/old/ConfigurationDataXmlDTO.java +17 -0
  363. package/src/main/java/org/dxworks/insider/technology/finder/model/xml/old/FingerprintXmlDTO.java +17 -0
  364. package/src/main/java/org/dxworks/insider/technology/finder/model/xml/old/LanguageXmlDTO.java +20 -0
  365. package/src/main/java/org/dxworks/insider/technology/finder/model/xml/old/LanguagesXmlDTO.java +18 -0
  366. package/src/main/java/org/dxworks/insider/technology/finder/model/xml/old/TechnologyXmlDTO.java +19 -0
  367. package/src/main/java/org/dxworks/insider/technology/finder/model/xml/old/XmlConfigurationDTO.java +17 -0
  368. package/src/main/java/org/dxworks/insider/technology/finder/parsers/FingerprintsParser.java +14 -0
  369. package/src/main/java/org/dxworks/insider/technology/finder/parsers/FingerprintsXmlParser.java +57 -0
  370. package/src/main/java/org/dxworks/insider/technology/finder/parsers/JavaLibrariesCsvParser.java +71 -0
  371. package/src/main/java/org/dxworks/insider/technology/finder/parsers/JsonFingerprintParser.java +58 -0
  372. package/src/main/java/org/dxworks/insider/utils/FileUtils.java +45 -0
  373. package/src/main/java/org/dxworks/insider/utils/ImportUtils.java +21 -0
  374. package/src/main/java/org/dxworks/insider/utils/LibraryImport.java +17 -0
  375. package/src/main/java/org/dxworks/insider/utils/LibraryImportInOtherTechnology.java +30 -0
  376. package/src/main/java/org/dxworks/insider/utils/MapUtils.java +19 -0
  377. package/src/main/resources/insider-version +1 -0
  378. package/src/test/java/org/dxworks/insider/application/inspector/services/CommentServiceTest.java +40 -0
  379. package/src/test/java/org/dxworks/insider/technology/finder/parsers/FingerprintsXmlParserTest.java +15 -0
  380. package/src/test/java/org/dxworks/insider/utils/FileUtilsTest.java +31 -0
  381. package/src/test/java/org/dxworks/insider/utils/ImportUtilsTest.java +24 -0
  382. package/src/test/java/org/dxworks/insider/utils/transformers/JsonToCsvTransformerTest.java +18 -0
  383. package/src/test/resources/Test1.java +21 -0
  384. package/src/test/resources/Test2.java +21 -0
  385. package/src/test/resources/cobol/CM201M.CBL +88 -0
@@ -0,0 +1,66 @@
1
+ package org.dxworks.insider.technology.finder.model.json;
2
+
3
+ import lombok.Data;
4
+ import org.dxworks.insider.technology.finder.model.Technology;
5
+ import org.dxworks.insider.utils.ImportUtils;
6
+
7
+ import java.util.Collections;
8
+ import java.util.List;
9
+ import java.util.concurrent.atomic.AtomicBoolean;
10
+ import java.util.stream.Collectors;
11
+
12
+ import static org.dxworks.insider.utils.ImportUtils.IMPORT_SUFFIX;
13
+ import static org.dxworks.insider.utils.ImportUtils.unwrapImportPackage;
14
+
15
+ @Data
16
+ public class TechnologyJsonDTO {
17
+
18
+ private String category;
19
+ private String name;
20
+ private List<String> languages;
21
+ private List<String> extensions;
22
+ private List<String> fingerprints;
23
+
24
+ private boolean wrapAsImports;
25
+
26
+ public static TechnologyJsonDTO fromTechnology(Technology technology) {
27
+ TechnologyJsonDTO technologyJsonDTO = new TechnologyJsonDTO();
28
+
29
+ technologyJsonDTO.setName(technology.getName());
30
+ technologyJsonDTO.setCategory(technology.getCategory());
31
+ technologyJsonDTO.setExtensions(technology.getExtensions());
32
+ technologyJsonDTO.setLanguages(technology.getLanguages());
33
+
34
+ AtomicBoolean shouldWrapAsImports = new AtomicBoolean(false);
35
+
36
+ List<String> fingerPrints = technology.getFingerprints().stream().map(fingerPrint -> {
37
+ if (fingerPrint.contains(IMPORT_SUFFIX)) {
38
+ shouldWrapAsImports.set(true);
39
+ return unwrapImportPackage(fingerPrint);
40
+ }
41
+ return fingerPrint;
42
+ }).collect(Collectors.toList());
43
+
44
+ technologyJsonDTO.setFingerprints(fingerPrints);
45
+ technologyJsonDTO.setWrapAsImports(shouldWrapAsImports.get());
46
+
47
+ return technologyJsonDTO;
48
+ }
49
+
50
+ public Technology toTechnology() {
51
+ Technology technology = new Technology();
52
+
53
+ technology.setName(name);
54
+ technology.setCategory(category);
55
+ technology.setLanguages(languages != null ? languages : Collections.emptyList());
56
+ technology.setExtensions(extensions != null ? extensions : Collections.emptyList());
57
+ technology.setFingerprints(fingerprints == null ? Collections.emptyList() : wrapAsImports ? fingerprintsWrappedAsImports() : fingerprints);
58
+
59
+ return technology;
60
+ }
61
+
62
+ protected List<String> fingerprintsWrappedAsImports() {
63
+ return fingerprints.stream().map(ImportUtils::wrapImportPackage).collect(Collectors.toList());
64
+ }
65
+
66
+ }
@@ -0,0 +1,21 @@
1
+ package org.dxworks.insider.technology.finder.model.xml.old;
2
+
3
+
4
+ import lombok.Data;
5
+
6
+ import javax.xml.bind.annotation.XmlAccessType;
7
+ import javax.xml.bind.annotation.XmlAccessorType;
8
+ import javax.xml.bind.annotation.XmlElement;
9
+ import javax.xml.bind.annotation.XmlRootElement;
10
+ import java.util.List;
11
+
12
+ @XmlRootElement(name = "technology")
13
+ @XmlAccessorType(XmlAccessType.FIELD)
14
+ @Data
15
+ public class CategoryXmlDTO {
16
+
17
+ private String name;
18
+
19
+ @XmlElement(name = "fingerprint")
20
+ private List<FingerprintXmlDTO> fingerprints;
21
+ }
@@ -0,0 +1,17 @@
1
+ package org.dxworks.insider.technology.finder.model.xml.old;
2
+
3
+ import lombok.Data;
4
+
5
+ import javax.xml.bind.annotation.XmlAccessType;
6
+ import javax.xml.bind.annotation.XmlAccessorType;
7
+ import javax.xml.bind.annotation.XmlElement;
8
+ import javax.xml.bind.annotation.XmlRootElement;
9
+
10
+ @XmlRootElement(name = "data")
11
+ @XmlAccessorType(XmlAccessType.FIELD)
12
+ @Data
13
+ public class ConfigurationDataXmlDTO {
14
+
15
+ @XmlElement(name = "languages")
16
+ private LanguagesXmlDTO languages;
17
+ }
@@ -0,0 +1,17 @@
1
+ package org.dxworks.insider.technology.finder.model.xml.old;
2
+
3
+ import lombok.Data;
4
+
5
+ import javax.xml.bind.annotation.XmlAccessType;
6
+ import javax.xml.bind.annotation.XmlAccessorType;
7
+ import javax.xml.bind.annotation.XmlRootElement;
8
+ import javax.xml.bind.annotation.XmlValue;
9
+
10
+ @XmlRootElement(name = "fingerprint")
11
+ @XmlAccessorType(XmlAccessType.FIELD)
12
+ @Data
13
+ public class FingerprintXmlDTO {
14
+
15
+ @XmlValue
16
+ private String value;
17
+ }
@@ -0,0 +1,20 @@
1
+ package org.dxworks.insider.technology.finder.model.xml.old;
2
+
3
+ import lombok.Data;
4
+
5
+ import javax.xml.bind.annotation.XmlAccessType;
6
+ import javax.xml.bind.annotation.XmlAccessorType;
7
+ import javax.xml.bind.annotation.XmlElement;
8
+ import javax.xml.bind.annotation.XmlRootElement;
9
+ import java.util.List;
10
+
11
+ @XmlRootElement(name = "language")
12
+ @XmlAccessorType(XmlAccessType.FIELD)
13
+ @Data
14
+ public class LanguageXmlDTO {
15
+ private String name;
16
+ private int version;
17
+
18
+ @XmlElement(name = "technology")
19
+ private List<TechnologyXmlDTO> technologies;
20
+ }
@@ -0,0 +1,18 @@
1
+ package org.dxworks.insider.technology.finder.model.xml.old;
2
+
3
+ import lombok.Data;
4
+
5
+ import javax.xml.bind.annotation.XmlAccessType;
6
+ import javax.xml.bind.annotation.XmlAccessorType;
7
+ import javax.xml.bind.annotation.XmlElement;
8
+ import javax.xml.bind.annotation.XmlRootElement;
9
+ import java.util.List;
10
+
11
+ @XmlRootElement(name = "languages")
12
+ @XmlAccessorType(XmlAccessType.FIELD)
13
+ @Data
14
+ public class LanguagesXmlDTO {
15
+
16
+ @XmlElement(name = "language")
17
+ private List<LanguageXmlDTO> languages;
18
+ }
@@ -0,0 +1,19 @@
1
+ package org.dxworks.insider.technology.finder.model.xml.old;
2
+
3
+ import lombok.Data;
4
+
5
+ import javax.xml.bind.annotation.XmlAccessType;
6
+ import javax.xml.bind.annotation.XmlAccessorType;
7
+ import javax.xml.bind.annotation.XmlElement;
8
+ import javax.xml.bind.annotation.XmlRootElement;
9
+ import java.util.List;
10
+
11
+ @XmlRootElement(name = "technology")
12
+ @XmlAccessorType(XmlAccessType.FIELD)
13
+ @Data
14
+ public class TechnologyXmlDTO {
15
+ private String name;
16
+
17
+ @XmlElement(name = "category")
18
+ private List<CategoryXmlDTO> categories;
19
+ }
@@ -0,0 +1,17 @@
1
+ package org.dxworks.insider.technology.finder.model.xml.old;
2
+
3
+ import lombok.Data;
4
+
5
+ import javax.xml.bind.annotation.XmlAccessType;
6
+ import javax.xml.bind.annotation.XmlAccessorType;
7
+ import javax.xml.bind.annotation.XmlRootElement;
8
+
9
+ @XmlRootElement(name = "config")
10
+ @XmlAccessorType(XmlAccessType.FIELD)
11
+ @Data
12
+ public class XmlConfigurationDTO {
13
+ private String name;
14
+ private int version;
15
+
16
+ private ConfigurationDataXmlDTO data;
17
+ }
@@ -0,0 +1,14 @@
1
+ package org.dxworks.insider.technology.finder.parsers;
2
+
3
+ import org.dxworks.insider.technology.finder.exceptions.FingerprintParseException;
4
+ import org.dxworks.insider.technology.finder.model.Technology;
5
+
6
+ import java.io.IOException;
7
+ import java.nio.file.Path;
8
+ import java.util.List;
9
+
10
+ public interface FingerprintsParser {
11
+ List<Technology> parseTechnologiesFile(String filePath) throws FingerprintParseException;
12
+
13
+ void writeTechnologiesToFile(List<Technology> technologies, Path filePath) throws IOException;
14
+ }
@@ -0,0 +1,57 @@
1
+ package org.dxworks.insider.technology.finder.parsers;
2
+
3
+ import org.apache.commons.lang3.NotImplementedException;
4
+ import org.dxworks.insider.technology.finder.exceptions.FingerprintParseException;
5
+ import org.dxworks.insider.technology.finder.model.Technology;
6
+ import org.dxworks.insider.technology.finder.model.xml.old.FingerprintXmlDTO;
7
+ import org.dxworks.insider.technology.finder.model.xml.old.XmlConfigurationDTO;
8
+
9
+ import javax.xml.bind.JAXBContext;
10
+ import javax.xml.bind.JAXBException;
11
+ import javax.xml.bind.Unmarshaller;
12
+ import java.io.IOException;
13
+ import java.nio.file.Path;
14
+ import java.nio.file.Paths;
15
+ import java.util.Collections;
16
+ import java.util.List;
17
+ import java.util.stream.Collectors;
18
+
19
+ public class FingerprintsXmlParser implements FingerprintsParser {
20
+
21
+ @Override
22
+ public List<Technology> parseTechnologiesFile(String filePath) {
23
+ Unmarshaller unmarshaller;
24
+ XmlConfigurationDTO xmlConfiguration;
25
+
26
+ try {
27
+ JAXBContext jaxbContext = JAXBContext.newInstance(XmlConfigurationDTO.class);
28
+ unmarshaller = jaxbContext.createUnmarshaller();
29
+ xmlConfiguration = (XmlConfigurationDTO) unmarshaller.unmarshal(Paths.get(filePath).toFile());
30
+
31
+ } catch (JAXBException e) {
32
+ throw new FingerprintParseException(e);
33
+ }
34
+
35
+ return xmlConfiguration.getData().getLanguages().getLanguages().stream()
36
+ .flatMap(languageDTO -> languageDTO.getTechnologies().stream()
37
+ .flatMap(technologyDTO -> technologyDTO.getCategories().stream().map(categoryDTO -> {
38
+ Technology technology = new Technology();
39
+ technology.setLanguages(Collections.singletonList(languageDTO.getName()));
40
+ technology.setExtensions(Collections.emptyList());
41
+ technology.setCategory(technologyDTO.getName());
42
+ technology.setName(categoryDTO.getName());
43
+
44
+ technology.setFingerprints(categoryDTO.getFingerprints().stream()
45
+ .map(FingerprintXmlDTO::getValue)
46
+ .collect(Collectors.toList()));
47
+
48
+ return technology;
49
+ })))
50
+ .collect(Collectors.toList());
51
+ }
52
+
53
+ @Override
54
+ public void writeTechnologiesToFile(List<Technology> technologies, Path filePath) throws IOException {
55
+ throw new NotImplementedException("XML is not a supported format for export for the moment!");
56
+ }
57
+ }
@@ -0,0 +1,71 @@
1
+ package org.dxworks.insider.technology.finder.parsers;
2
+
3
+ import com.opencsv.CSVReader;
4
+ import com.opencsv.CSVWriter;
5
+ import lombok.extern.slf4j.Slf4j;
6
+ import org.dxworks.insider.technology.finder.exceptions.FingerprintParseException;
7
+ import org.dxworks.insider.technology.finder.model.Technology;
8
+ import org.dxworks.insider.utils.ImportUtils;
9
+ import org.dxworks.insider.utils.LibraryImport;
10
+
11
+ import java.io.FileReader;
12
+ import java.io.FileWriter;
13
+ import java.io.IOException;
14
+ import java.nio.file.Path;
15
+ import java.util.Collections;
16
+ import java.util.List;
17
+ import java.util.Map;
18
+ import java.util.stream.Collectors;
19
+
20
+ @Slf4j
21
+ public class JavaLibrariesCsvParser implements FingerprintsParser {
22
+
23
+ @Override
24
+ public List<Technology> parseTechnologiesFile(String filePath) throws FingerprintParseException {
25
+ try {
26
+ CSVReader csvReader = new CSVReader(new FileReader(filePath));
27
+ Map<String, List<LibraryImport>> librariesImportsMap = csvReader.readAll().stream()
28
+ .filter(strings -> {
29
+ if (strings.length != 2) {
30
+ log.error("Invalid input line for package " + strings.toString());
31
+ return false;
32
+ }
33
+ if (strings[0].trim().isEmpty() || strings[1].trim().isEmpty()) {
34
+ log.error("Invalid input line for package " + strings.toString());
35
+ return false;
36
+ }
37
+
38
+ return true;
39
+ })
40
+ .map(strings -> new LibraryImport(strings[0].trim(), strings[1].trim()))
41
+ .collect(Collectors.groupingBy(LibraryImport::getLibrary));
42
+
43
+ return librariesImportsMap.entrySet().stream()
44
+ .map(stringListEntry -> new Technology("External Libraries",
45
+ stringListEntry.getKey(),
46
+ Collections.singletonList("java"),
47
+ Collections.emptyList(),
48
+ stringListEntry.getValue().stream()
49
+ .map(LibraryImport::get_import)
50
+ .map(ImportUtils::wrapImportPackage)
51
+ .collect(Collectors.toList())))
52
+ .collect(Collectors.toList());
53
+ } catch (IOException e) {
54
+ log.error("Could not read JSON technologies file!", e);
55
+ }
56
+ return Collections.emptyList();
57
+ }
58
+
59
+ @Override
60
+ public void writeTechnologiesToFile(List<Technology> technologies, Path filePath) throws IOException {
61
+ List<String[]> stringArrays = technologies.stream().flatMap(technology -> technology.getFingerprints().stream()
62
+ .map(fingerPrint -> new String[]{ImportUtils.unwrapImportPackage(fingerPrint), technology.getName()}))
63
+ .collect(Collectors.toList());
64
+
65
+ CSVWriter writer = new CSVWriter(new FileWriter(filePath.toString()));
66
+ writer.writeAll(stringArrays);
67
+ writer.flush();
68
+ writer.close();
69
+ }
70
+ }
71
+
@@ -0,0 +1,58 @@
1
+ package org.dxworks.insider.technology.finder.parsers;
2
+
3
+ import com.fasterxml.jackson.databind.ObjectMapper;
4
+ import lombok.extern.slf4j.Slf4j;
5
+ import org.dxworks.insider.technology.finder.model.Technology;
6
+ import org.dxworks.insider.technology.finder.model.json.JsonConfigurationDTO;
7
+ import org.dxworks.insider.technology.finder.model.json.TechnologyJsonDTO;
8
+
9
+ import java.io.FileNotFoundException;
10
+ import java.io.FileReader;
11
+ import java.io.FileWriter;
12
+ import java.io.IOException;
13
+ import java.nio.file.Path;
14
+ import java.nio.file.Paths;
15
+ import java.util.Collections;
16
+ import java.util.List;
17
+ import java.util.stream.Collectors;
18
+
19
+ @Slf4j
20
+ public class JsonFingerprintParser implements FingerprintsParser {
21
+ @Override
22
+ public List<Technology> parseTechnologiesFile(String filePath) {
23
+ JsonConfigurationDTO configurationDTO = getConfigurationDTO(filePath);
24
+ if (configurationDTO == null)
25
+ return Collections.emptyList();
26
+
27
+ return configurationDTO.getTechnologies().stream()
28
+ .map(TechnologyJsonDTO::toTechnology)
29
+ .collect(Collectors.toList());
30
+ }
31
+
32
+ @Override
33
+ public void writeTechnologiesToFile(List<Technology> technologies, Path filePath) throws IOException {
34
+ ObjectMapper objectMapper = new ObjectMapper();
35
+ try {
36
+ List<TechnologyJsonDTO> technologyJsonDTOS = technologies.stream().map(TechnologyJsonDTO::fromTechnology).collect(Collectors.toList());
37
+ JsonConfigurationDTO jsonConfigurationDTO = new JsonConfigurationDTO();
38
+ jsonConfigurationDTO.setTechnologies(technologyJsonDTOS);
39
+ objectMapper.writerWithDefaultPrettyPrinter().writeValue(new FileWriter(filePath.toFile()), jsonConfigurationDTO);
40
+ } catch (IOException e) {
41
+ log.error("Could not write JSON file!", e);
42
+ throw e;
43
+ }
44
+ }
45
+
46
+ public JsonConfigurationDTO getConfigurationDTO(String filePath) {
47
+ ObjectMapper objectMapper = new ObjectMapper();
48
+ try {
49
+ return objectMapper.readValue(new FileReader(Paths.get(filePath).toFile()), JsonConfigurationDTO.class);
50
+ } catch (FileNotFoundException e) {
51
+ log.error("Could not read JSON technologies file!", e);
52
+ } catch (IOException e) {
53
+ log.error("File " + filePath + " is could not be parsed as a JSON Technology file!", e);
54
+ }
55
+
56
+ return null;
57
+ }
58
+ }
@@ -0,0 +1,45 @@
1
+ package org.dxworks.insider.utils;
2
+
3
+ import java.util.regex.Matcher;
4
+ import java.util.regex.Pattern;
5
+
6
+ public class FileUtils {
7
+
8
+ public static String removeComments(String fileContent) {
9
+ String ret = fileContent;
10
+
11
+ Pattern p = Pattern.compile("(\\/\\*([\\S\\s]+?)\\*\\/)");
12
+ Matcher m = p.matcher(ret);
13
+
14
+ char[] charArray = ret.toCharArray();
15
+ while (m.find()) {
16
+ int startIndex = m.start();
17
+ int stopIndex = m.end();
18
+
19
+ for (int i = startIndex + 2; i < stopIndex - 2; i++) {
20
+ if (!Character.isSpaceChar(charArray[i]) && !Character.isWhitespace(charArray[i]))
21
+ charArray[i] = '#';
22
+ }
23
+ }
24
+
25
+ ret = String.valueOf(charArray);
26
+
27
+ p = Pattern.compile("(?:\\/\\/.*)");
28
+ m = p.matcher(ret);
29
+
30
+ charArray = ret.toCharArray();
31
+ while (m.find()) {
32
+ int startIndex = m.start();
33
+ int stopIndex = m.end();
34
+
35
+ for (int i = startIndex + 2; i < stopIndex; i++) {
36
+ if (!Character.isSpaceChar(charArray[i]) && !Character.isWhitespace(charArray[i]))
37
+ charArray[i] = '#';
38
+ }
39
+ }
40
+
41
+ ret = String.valueOf(charArray);
42
+
43
+ return ret;
44
+ }
45
+ }
@@ -0,0 +1,21 @@
1
+ package org.dxworks.insider.utils;
2
+
3
+ public class ImportUtils {
4
+
5
+ public static final String IMPORT_SUFFIX = "([\\.;])([a-zA-Z_0-9]*\\.)*([a-zA-Z_0-9]*|\\*)*(;){0,1}";
6
+
7
+ public static String wrapImportPackage(String _import) {
8
+ return "(" + _import.replace(".", "\\.") + ")" + IMPORT_SUFFIX;
9
+ }
10
+
11
+ public static String unwrapImportPackage(String wrappedImport) {
12
+ int index = wrappedImport.indexOf(IMPORT_SUFFIX);
13
+ if (index == -1)
14
+ return wrappedImport;
15
+
16
+ String _import = wrappedImport.substring(1, index - 1);
17
+ _import = _import.replace("\\", "");
18
+
19
+ return _import;
20
+ }
21
+ }
@@ -0,0 +1,17 @@
1
+ package org.dxworks.insider.utils;
2
+
3
+ import lombok.AllArgsConstructor;
4
+ import lombok.Data;
5
+ import lombok.NoArgsConstructor;
6
+
7
+ @Data
8
+ @NoArgsConstructor
9
+ @AllArgsConstructor
10
+ public class LibraryImport {
11
+ private String _import;
12
+ private String library;
13
+
14
+ public String[] toStringArray() {
15
+ return new String[]{_import, library};
16
+ }
17
+ }
@@ -0,0 +1,30 @@
1
+ package org.dxworks.insider.utils;
2
+
3
+ import lombok.Data;
4
+ import lombok.ToString;
5
+
6
+ import java.util.Objects;
7
+
8
+ @Data
9
+ @ToString(callSuper = true)
10
+ public class LibraryImportInOtherTechnology extends LibraryImport {
11
+ private String otherTechnology;
12
+
13
+ public LibraryImportInOtherTechnology(String _import, String library, String otherTechnology) {
14
+ super(_import, library);
15
+ this.otherTechnology = otherTechnology;
16
+ }
17
+
18
+ @Override
19
+ public boolean equals(Object o) {
20
+ if (this == o) return true;
21
+ if (o == null || getClass() != o.getClass()) return false;
22
+ LibraryImportInOtherTechnology that = (LibraryImportInOtherTechnology) o;
23
+ return Objects.equals(get_import(), that.get_import());
24
+ }
25
+
26
+ @Override
27
+ public int hashCode() {
28
+ return Objects.hash(get_import());
29
+ }
30
+ }
@@ -0,0 +1,19 @@
1
+ package org.dxworks.insider.utils;
2
+
3
+ import java.util.Collections;
4
+ import java.util.LinkedHashMap;
5
+ import java.util.Map;
6
+
7
+ import static java.util.stream.Collectors.toMap;
8
+
9
+ public class MapUtils {
10
+
11
+ public static Map<String, Integer> sortMapByValuesDesc(Map<String, Integer> unsortedMap) {
12
+ return unsortedMap
13
+ .entrySet()
14
+ .stream()
15
+ .sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
16
+ .collect(toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e2,
17
+ LinkedHashMap::new));
18
+ }
19
+ }
@@ -0,0 +1 @@
1
+ 2.9.1
@@ -0,0 +1,40 @@
1
+ package org.dxworks.insider.application.inspector.services;
2
+
3
+ import org.apache.commons.lang.math.IntRange;
4
+ import org.dxworks.insider.InsiderFile;
5
+ import org.dxworks.insider.technology.finder.LinguistService;
6
+ import org.junit.Test;
7
+
8
+ import java.io.File;
9
+ import java.io.IOException;
10
+ import java.nio.file.Files;
11
+ import java.nio.file.Paths;
12
+ import java.util.List;
13
+
14
+ import static org.dxworks.insider.constants.InsiderConstants.DEFAULT_LINGUIST_FILE;
15
+ import static org.junit.Assert.assertEquals;
16
+
17
+ public class CommentServiceTest {
18
+
19
+ @Test
20
+ public void extractCommentsForCobol() throws IOException {
21
+
22
+ LinguistService.getInstance().initLinguist(DEFAULT_LINGUIST_FILE);
23
+
24
+ String filePathAsString = getClass().getClassLoader().getResource("cobol/CM201M.CBL").getPath();
25
+ File file = new File(filePathAsString);
26
+ String content = new String(Files.readAllBytes(Paths.get(file.getAbsolutePath())));
27
+
28
+ CommentService commentService = CommentService.getInstance();
29
+ List<IntRange> commentRanges = commentService.extractInlineCommentLines(
30
+ InsiderFile.builder()
31
+ .name("CM201M.CBL")
32
+ .path("cobol/CM201M.CBL")
33
+ .extension(".CBL")
34
+ .content(content)
35
+ .build());
36
+
37
+ assertEquals(6, commentRanges.size());
38
+
39
+ }
40
+ }
@@ -0,0 +1,15 @@
1
+ package org.dxworks.insider.technology.finder.parsers;
2
+
3
+ import org.junit.Test;
4
+
5
+ import javax.xml.bind.JAXBException;
6
+
7
+ public class FingerprintsXmlParserTest {
8
+
9
+ @Test
10
+ public void parseString() throws JAXBException {
11
+ FingerprintsXmlParser fingerprintsXmlParser = new FingerprintsXmlParser();
12
+
13
+ // fingerprintsXmlParser.parseString(Paths.get("config\\libraries.xml").toFile());
14
+ }
15
+ }
@@ -0,0 +1,31 @@
1
+ package org.dxworks.insider.utils;
2
+
3
+ import org.junit.Test;
4
+
5
+ import java.io.File;
6
+ import java.io.IOException;
7
+ import java.nio.file.Files;
8
+ import java.nio.file.Paths;
9
+
10
+ import static org.junit.Assert.assertEquals;
11
+
12
+ public class FileUtilsTest {
13
+
14
+ @Test
15
+ public void removeComments() throws IOException {
16
+ String contentWithComments = getContentOfResourceFile("Test1.java");
17
+ String expectedContentWithoutComments = getContentOfResourceFile("Test2.java");
18
+
19
+ String computedContentWithoutComments = FileUtils.removeComments(contentWithComments);
20
+
21
+ assertEquals(expectedContentWithoutComments, computedContentWithoutComments);
22
+ }
23
+
24
+ private String getContentOfResourceFile(String resourceFile) throws IOException {
25
+ String filePathAsString = getClass().getClassLoader().getResource(resourceFile).getPath();
26
+ File file = new File(filePathAsString);
27
+ String content = new String(Files.readAllBytes(Paths.get(file.getAbsolutePath())));
28
+
29
+ return content;
30
+ }
31
+ }
@@ -0,0 +1,24 @@
1
+ package org.dxworks.insider.utils;
2
+
3
+ import org.junit.Test;
4
+
5
+ import static org.junit.Assert.assertEquals;
6
+
7
+ public class ImportUtilsTest {
8
+
9
+ @Test
10
+ public void fingerprintsWrappedAsImports() {
11
+ String expected = "(org\\.dxworks\\.dxplatform)([\\.;])([a-zA-Z_0-9]*\\.)*([a-zA-Z_0-9]*|\\*)*(;){0,1}";
12
+ String actual = ImportUtils.wrapImportPackage("org.dxworks.dxplatform");
13
+
14
+ assertEquals(expected, actual);
15
+ }
16
+
17
+ @Test
18
+ public void testUnwrapImport() {
19
+ String expected = "org.dxworks.dxplatform";
20
+ String actual = ImportUtils.unwrapImportPackage("(org\\.dxworks\\.dxplatform)([\\.;])([a-zA-Z_0-9]*\\.)*([a-zA-Z_0-9]*|\\*)*(;){0,1}");
21
+
22
+ assertEquals(expected, actual);
23
+ }
24
+ }