@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.
- package/.github/workflows/build.yml +19 -0
- package/.github/workflows/release-docs.yml +15 -0
- package/.github/workflows/release-voyager.yml +57 -0
- package/.github/workflows/release.yml +102 -0
- package/Dockerfile +8 -0
- package/README.md +89 -0
- package/TODO.txt +7 -0
- package/bin/insider.bat +1 -0
- package/bin/insider.sh +1 -0
- package/build.gradle +55 -0
- package/config/.ignore +4 -0
- package/config/comments.json +71 -0
- package/config/fingerprints/_anomalies-full.json +116 -0
- package/config/fingerprints/_extLibs.json +2555 -0
- package/config/fingerprints/code_smells.json +94 -0
- package/config/fingerprints/generated_code.json +17 -0
- package/config/fingerprints/libraries.json +4667 -0
- package/config/ignoredImports.txt +0 -0
- package/config/insider-conf.properties +3 -0
- package/config/rules/cloud_services/ad_networks.json +50 -0
- package/config/rules/cloud_services/bigdata.json +21 -0
- package/config/rules/cloud_services/cloud_hosting.json +398 -0
- package/config/rules/cloud_services/data_storage.json +291 -0
- package/config/rules/cloud_services/ecommerce.json +45 -0
- package/config/rules/cloud_services/socialmedia.json +82 -0
- package/config/rules/cloud_services/web_analytics.json +108 -0
- package/config/rules/components/active_content.json +157 -0
- package/config/rules/components/load_dll.json +66 -0
- package/config/rules/cryptography/algorithm_implementation.json +62 -0
- package/config/rules/cryptography/certificate.json +199 -0
- package/config/rules/cryptography/ciphers.json +174 -0
- package/config/rules/cryptography/crypto_currency.json +32 -0
- package/config/rules/cryptography/encoding.json +20 -0
- package/config/rules/cryptography/extended.json +220 -0
- package/config/rules/cryptography/external_libraries.json +141 -0
- package/config/rules/cryptography/hash_algorithm.json +98 -0
- package/config/rules/cryptography/key_derivation.json +65 -0
- package/config/rules/cryptography/protocol.json +156 -0
- package/config/rules/cryptography/random.json +97 -0
- package/config/rules/cryptography/weakssl.json +206 -0
- package/config/rules/data_handling/compressed_files.json +18 -0
- package/config/rules/data_handling/database.json +361 -0
- package/config/rules/data_handling/deserialization.json +296 -0
- package/config/rules/data_handling/json_parsing.json +49 -0
- package/config/rules/data_handling/media_parsing.json +33 -0
- package/config/rules/data_handling/pastebin.json +18 -0
- package/config/rules/data_handling/xml_parsing.json +168 -0
- package/config/rules/data_types/financial.json +106 -0
- package/config/rules/data_types/media.json +48 -0
- package/config/rules/data_types/secrets.json +91 -0
- package/config/rules/data_types/sensitive.json +176 -0
- package/config/rules/device_permissions/IOSPermissions.json +240 -0
- package/config/rules/device_permissions/UWP.json +221 -0
- package/config/rules/device_permissions/android_intents.json +599 -0
- package/config/rules/frameworks/PHP.json +172 -0
- package/config/rules/frameworks/build.json +189 -0
- package/config/rules/frameworks/c.json +45 -0
- package/config/rules/frameworks/csharp-nonMS.json +19 -0
- package/config/rules/frameworks/java.json +291 -0
- package/config/rules/frameworks/javascript.json +318 -0
- package/config/rules/frameworks/logging.json +103 -0
- package/config/rules/frameworks/microsoft.json +257 -0
- package/config/rules/frameworks/python.json +274 -0
- package/config/rules/frameworks/ruby.json +53 -0
- package/config/rules/frameworks/rust.json +77 -0
- package/config/rules/general/OSS_license.json +146 -0
- package/config/rules/general/code_metrics.json +132 -0
- package/config/rules/general/dependencies.json +199 -0
- package/config/rules/general/hygiene.json +47 -0
- package/config/rules/general/platforms.json +283 -0
- package/config/rules/general/solutioninfo.json +378 -0
- package/config/rules/infrastructure/hashicorp_packers_tmpl.json +18 -0
- package/config/rules/infrastructure/hashicorp_terraform_tmpl.json +19 -0
- package/config/rules/infrastructure/microsoft_arm_tmpl.json +198 -0
- package/config/rules/networkcomms/outbound_network.json +429 -0
- package/config/rules/os/acl.json +250 -0
- package/config/rules/os/dynamic_execution.json +359 -0
- package/config/rules/os/file_io.json +468 -0
- package/config/rules/os/process.json +179 -0
- package/config/rules/os/setenv.json +270 -0
- package/config/rules/os/system_registry.json +237 -0
- package/config/rules/os/user_accts.json +34 -0
- package/config/rules/security_feature/authentication.json +387 -0
- package/config/rules/security_feature/authorization.json +148 -0
- package/config/rules/test_frameworks/cpp_testing.json +194 -0
- package/config/rules/test_frameworks/go_testing.json +18 -0
- package/config/rules/test_frameworks/java_testing.json +720 -0
- package/config/rules/test_frameworks/javascript_testing.json +724 -0
- package/config/rules/test_frameworks/objectiveC_testing.json +146 -0
- package/config/rules/test_frameworks/php_testing.json +156 -0
- package/config/rules/test_frameworks/powershell_testing.json +17 -0
- package/config/rules/test_frameworks/python_testing.json +108 -0
- package/config/rules/test_frameworks/ruby_testing.json +114 -0
- package/config/rules/tools/pipeline.json +195 -0
- package/config/rules/webapp/comms.json +89 -0
- package/config/rules/webapp/headers.json +178 -0
- package/config/rules/webapp/media.json +56 -0
- package/config/rules/webapp/sessions.json +228 -0
- package/config/rules/webapp/storage.json +215 -0
- package/dist/config/.ignore +4 -0
- package/dist/config/comments.json +71 -0
- package/dist/config/fingerprints/_anomalies-full.json +116 -0
- package/dist/config/fingerprints/_extLibs.json +2555 -0
- package/dist/config/fingerprints/code_smells.json +94 -0
- package/dist/config/fingerprints/generated_code.json +17 -0
- package/dist/config/fingerprints/libraries.json +4667 -0
- package/dist/config/ignoredImports.txt +0 -0
- package/dist/config/insider-conf.properties +3 -0
- package/dist/config/rules/cloud_services/ad_networks.json +50 -0
- package/dist/config/rules/cloud_services/bigdata.json +21 -0
- package/dist/config/rules/cloud_services/cloud_hosting.json +398 -0
- package/dist/config/rules/cloud_services/data_storage.json +291 -0
- package/dist/config/rules/cloud_services/ecommerce.json +45 -0
- package/dist/config/rules/cloud_services/socialmedia.json +82 -0
- package/dist/config/rules/cloud_services/web_analytics.json +108 -0
- package/dist/config/rules/components/active_content.json +157 -0
- package/dist/config/rules/components/load_dll.json +66 -0
- package/dist/config/rules/cryptography/algorithm_implementation.json +62 -0
- package/dist/config/rules/cryptography/certificate.json +199 -0
- package/dist/config/rules/cryptography/ciphers.json +174 -0
- package/dist/config/rules/cryptography/crypto_currency.json +32 -0
- package/dist/config/rules/cryptography/encoding.json +20 -0
- package/dist/config/rules/cryptography/extended.json +220 -0
- package/dist/config/rules/cryptography/external_libraries.json +141 -0
- package/dist/config/rules/cryptography/hash_algorithm.json +98 -0
- package/dist/config/rules/cryptography/key_derivation.json +65 -0
- package/dist/config/rules/cryptography/protocol.json +156 -0
- package/dist/config/rules/cryptography/random.json +97 -0
- package/dist/config/rules/cryptography/weakssl.json +206 -0
- package/dist/config/rules/data_handling/compressed_files.json +18 -0
- package/dist/config/rules/data_handling/database.json +361 -0
- package/dist/config/rules/data_handling/deserialization.json +296 -0
- package/dist/config/rules/data_handling/json_parsing.json +49 -0
- package/dist/config/rules/data_handling/media_parsing.json +33 -0
- package/dist/config/rules/data_handling/pastebin.json +18 -0
- package/dist/config/rules/data_handling/xml_parsing.json +168 -0
- package/dist/config/rules/data_types/financial.json +106 -0
- package/dist/config/rules/data_types/media.json +48 -0
- package/dist/config/rules/data_types/secrets.json +91 -0
- package/dist/config/rules/data_types/sensitive.json +176 -0
- package/dist/config/rules/device_permissions/IOSPermissions.json +240 -0
- package/dist/config/rules/device_permissions/UWP.json +221 -0
- package/dist/config/rules/device_permissions/android_intents.json +599 -0
- package/dist/config/rules/frameworks/PHP.json +172 -0
- package/dist/config/rules/frameworks/build.json +189 -0
- package/dist/config/rules/frameworks/c.json +45 -0
- package/dist/config/rules/frameworks/csharp-nonMS.json +19 -0
- package/dist/config/rules/frameworks/java.json +291 -0
- package/dist/config/rules/frameworks/javascript.json +318 -0
- package/dist/config/rules/frameworks/logging.json +103 -0
- package/dist/config/rules/frameworks/microsoft.json +257 -0
- package/dist/config/rules/frameworks/python.json +274 -0
- package/dist/config/rules/frameworks/ruby.json +53 -0
- package/dist/config/rules/frameworks/rust.json +77 -0
- package/dist/config/rules/general/OSS_license.json +146 -0
- package/dist/config/rules/general/code_metrics.json +132 -0
- package/dist/config/rules/general/dependencies.json +199 -0
- package/dist/config/rules/general/hygiene.json +47 -0
- package/dist/config/rules/general/platforms.json +283 -0
- package/dist/config/rules/general/solutioninfo.json +378 -0
- package/dist/config/rules/infrastructure/hashicorp_packers_tmpl.json +18 -0
- package/dist/config/rules/infrastructure/hashicorp_terraform_tmpl.json +19 -0
- package/dist/config/rules/infrastructure/microsoft_arm_tmpl.json +198 -0
- package/dist/config/rules/networkcomms/outbound_network.json +429 -0
- package/dist/config/rules/os/acl.json +250 -0
- package/dist/config/rules/os/dynamic_execution.json +359 -0
- package/dist/config/rules/os/file_io.json +468 -0
- package/dist/config/rules/os/process.json +179 -0
- package/dist/config/rules/os/setenv.json +270 -0
- package/dist/config/rules/os/system_registry.json +237 -0
- package/dist/config/rules/os/user_accts.json +34 -0
- package/dist/config/rules/security_feature/authentication.json +387 -0
- package/dist/config/rules/security_feature/authorization.json +148 -0
- package/dist/config/rules/test_frameworks/cpp_testing.json +194 -0
- package/dist/config/rules/test_frameworks/go_testing.json +18 -0
- package/dist/config/rules/test_frameworks/java_testing.json +720 -0
- package/dist/config/rules/test_frameworks/javascript_testing.json +724 -0
- package/dist/config/rules/test_frameworks/objectiveC_testing.json +146 -0
- package/dist/config/rules/test_frameworks/php_testing.json +156 -0
- package/dist/config/rules/test_frameworks/powershell_testing.json +17 -0
- package/dist/config/rules/test_frameworks/python_testing.json +108 -0
- package/dist/config/rules/test_frameworks/ruby_testing.json +114 -0
- package/dist/config/rules/tools/pipeline.json +195 -0
- package/dist/config/rules/webapp/comms.json +89 -0
- package/dist/config/rules/webapp/headers.json +178 -0
- package/dist/config/rules/webapp/media.json +56 -0
- package/dist/config/rules/webapp/sessions.json +228 -0
- package/dist/config/rules/webapp/storage.json +215 -0
- package/dist/index.js +13 -0
- package/dist/insider.jar +0 -0
- package/dist/insider.js +7 -0
- package/dist/lib.js +21 -0
- package/docs/config/config.md +3 -0
- package/docs/config/ignore.md +3 -0
- package/docs/config/languages.md +3 -0
- package/docs/index.md +58 -0
- package/dxworks-site.json +13 -0
- package/gradle.properties +0 -0
- package/gradlew +240 -0
- package/gradlew.bat +91 -0
- package/insider/README.md +89 -0
- package/insider/config/.ignore +4 -0
- package/insider/config/comments.json +71 -0
- package/insider/config/fingerprints/_anomalies-full.json +116 -0
- package/insider/config/fingerprints/_extLibs.json +2555 -0
- package/insider/config/fingerprints/code_smells.json +94 -0
- package/insider/config/fingerprints/generated_code.json +17 -0
- package/insider/config/fingerprints/libraries.json +4667 -0
- package/insider/config/ignoredImports.txt +0 -0
- package/insider/config/insider-conf.properties +3 -0
- package/insider/config/rules/cloud_services/ad_networks.json +50 -0
- package/insider/config/rules/cloud_services/bigdata.json +21 -0
- package/insider/config/rules/cloud_services/cloud_hosting.json +398 -0
- package/insider/config/rules/cloud_services/data_storage.json +291 -0
- package/insider/config/rules/cloud_services/ecommerce.json +45 -0
- package/insider/config/rules/cloud_services/socialmedia.json +82 -0
- package/insider/config/rules/cloud_services/web_analytics.json +108 -0
- package/insider/config/rules/components/active_content.json +157 -0
- package/insider/config/rules/components/load_dll.json +66 -0
- package/insider/config/rules/cryptography/algorithm_implementation.json +62 -0
- package/insider/config/rules/cryptography/certificate.json +199 -0
- package/insider/config/rules/cryptography/ciphers.json +174 -0
- package/insider/config/rules/cryptography/crypto_currency.json +32 -0
- package/insider/config/rules/cryptography/encoding.json +20 -0
- package/insider/config/rules/cryptography/extended.json +220 -0
- package/insider/config/rules/cryptography/external_libraries.json +141 -0
- package/insider/config/rules/cryptography/hash_algorithm.json +98 -0
- package/insider/config/rules/cryptography/key_derivation.json +65 -0
- package/insider/config/rules/cryptography/protocol.json +156 -0
- package/insider/config/rules/cryptography/random.json +97 -0
- package/insider/config/rules/cryptography/weakssl.json +206 -0
- package/insider/config/rules/data_handling/compressed_files.json +18 -0
- package/insider/config/rules/data_handling/database.json +361 -0
- package/insider/config/rules/data_handling/deserialization.json +296 -0
- package/insider/config/rules/data_handling/json_parsing.json +49 -0
- package/insider/config/rules/data_handling/media_parsing.json +33 -0
- package/insider/config/rules/data_handling/pastebin.json +18 -0
- package/insider/config/rules/data_handling/xml_parsing.json +168 -0
- package/insider/config/rules/data_types/financial.json +106 -0
- package/insider/config/rules/data_types/media.json +48 -0
- package/insider/config/rules/data_types/secrets.json +91 -0
- package/insider/config/rules/data_types/sensitive.json +176 -0
- package/insider/config/rules/device_permissions/IOSPermissions.json +240 -0
- package/insider/config/rules/device_permissions/UWP.json +221 -0
- package/insider/config/rules/device_permissions/android_intents.json +599 -0
- package/insider/config/rules/frameworks/PHP.json +172 -0
- package/insider/config/rules/frameworks/build.json +189 -0
- package/insider/config/rules/frameworks/c.json +45 -0
- package/insider/config/rules/frameworks/csharp-nonMS.json +19 -0
- package/insider/config/rules/frameworks/java.json +291 -0
- package/insider/config/rules/frameworks/javascript.json +318 -0
- package/insider/config/rules/frameworks/logging.json +103 -0
- package/insider/config/rules/frameworks/microsoft.json +257 -0
- package/insider/config/rules/frameworks/python.json +274 -0
- package/insider/config/rules/frameworks/ruby.json +53 -0
- package/insider/config/rules/frameworks/rust.json +77 -0
- package/insider/config/rules/general/OSS_license.json +146 -0
- package/insider/config/rules/general/code_metrics.json +132 -0
- package/insider/config/rules/general/dependencies.json +199 -0
- package/insider/config/rules/general/hygiene.json +47 -0
- package/insider/config/rules/general/platforms.json +283 -0
- package/insider/config/rules/general/solutioninfo.json +378 -0
- package/insider/config/rules/infrastructure/hashicorp_packers_tmpl.json +18 -0
- package/insider/config/rules/infrastructure/hashicorp_terraform_tmpl.json +19 -0
- package/insider/config/rules/infrastructure/microsoft_arm_tmpl.json +198 -0
- package/insider/config/rules/networkcomms/outbound_network.json +429 -0
- package/insider/config/rules/os/acl.json +250 -0
- package/insider/config/rules/os/dynamic_execution.json +359 -0
- package/insider/config/rules/os/file_io.json +468 -0
- package/insider/config/rules/os/process.json +179 -0
- package/insider/config/rules/os/setenv.json +270 -0
- package/insider/config/rules/os/system_registry.json +237 -0
- package/insider/config/rules/os/user_accts.json +34 -0
- package/insider/config/rules/security_feature/authentication.json +387 -0
- package/insider/config/rules/security_feature/authorization.json +148 -0
- package/insider/config/rules/test_frameworks/cpp_testing.json +194 -0
- package/insider/config/rules/test_frameworks/go_testing.json +18 -0
- package/insider/config/rules/test_frameworks/java_testing.json +720 -0
- package/insider/config/rules/test_frameworks/javascript_testing.json +724 -0
- package/insider/config/rules/test_frameworks/objectiveC_testing.json +146 -0
- package/insider/config/rules/test_frameworks/php_testing.json +156 -0
- package/insider/config/rules/test_frameworks/powershell_testing.json +17 -0
- package/insider/config/rules/test_frameworks/python_testing.json +108 -0
- package/insider/config/rules/test_frameworks/ruby_testing.json +114 -0
- package/insider/config/rules/tools/pipeline.json +195 -0
- package/insider/config/rules/webapp/comms.json +89 -0
- package/insider/config/rules/webapp/headers.json +178 -0
- package/insider/config/rules/webapp/media.json +56 -0
- package/insider/config/rules/webapp/sessions.json +228 -0
- package/insider/config/rules/webapp/storage.json +215 -0
- package/insider/insider.bat +1 -0
- package/insider/insider.jar +0 -0
- package/insider/insider.sh +1 -0
- package/insider/languages.yml +3988 -0
- package/instrument.yml +37 -0
- package/languages.yml +3988 -0
- package/lib/index.js +13 -0
- package/lib/insider.js +7 -0
- package/lib/lib.js +21 -0
- package/lombok.config +2 -0
- package/mkdocs.yml +18 -0
- package/package.json +51 -0
- package/releaseNotes/v2.6.0.md +1 -0
- package/releaseNotes/v2.7.1.md +1 -0
- package/settings.gradle +2 -0
- package/src/main/java/org/dxworks/insider/ChronosTag.java +14 -0
- package/src/main/java/org/dxworks/insider/Insider.java +214 -0
- package/src/main/java/org/dxworks/insider/InsiderAnalysis.java +7 -0
- package/src/main/java/org/dxworks/insider/InsiderFile.java +125 -0
- package/src/main/java/org/dxworks/insider/InsiderOptions.java +78 -0
- package/src/main/java/org/dxworks/insider/InsiderResult.java +15 -0
- package/src/main/java/org/dxworks/insider/application/inspector/CodeRuleExtractor.java +14 -0
- package/src/main/java/org/dxworks/insider/application/inspector/CommentRuleExtractor.java +14 -0
- package/src/main/java/org/dxworks/insider/application/inspector/FileRuleExtractor.java +14 -0
- package/src/main/java/org/dxworks/insider/application/inspector/RuleExtractor.java +11 -0
- package/src/main/java/org/dxworks/insider/application/inspector/dtos/Comment.java +18 -0
- package/src/main/java/org/dxworks/insider/application/inspector/dtos/CommentPattern.java +44 -0
- package/src/main/java/org/dxworks/insider/application/inspector/dtos/Condition.java +15 -0
- package/src/main/java/org/dxworks/insider/application/inspector/dtos/InsiderPattern.java +149 -0
- package/src/main/java/org/dxworks/insider/application/inspector/dtos/PatternMatch.java +23 -0
- package/src/main/java/org/dxworks/insider/application/inspector/dtos/Rule.java +61 -0
- package/src/main/java/org/dxworks/insider/application/inspector/services/CommentService.java +165 -0
- package/src/main/java/org/dxworks/insider/application/inspector/services/RuleService.java +54 -0
- package/src/main/java/org/dxworks/insider/commands/AddCommand.java +125 -0
- package/src/main/java/org/dxworks/insider/commands/AllFilesCommand.java +4 -0
- package/src/main/java/org/dxworks/insider/commands/ConvertCommand.java +55 -0
- package/src/main/java/org/dxworks/insider/commands/DetectCommand.java +42 -0
- package/src/main/java/org/dxworks/insider/commands/DiagnoseCommand.java +74 -0
- package/src/main/java/org/dxworks/insider/commands/ExtractCommand.java +35 -0
- package/src/main/java/org/dxworks/insider/commands/FindCommand.java +102 -0
- package/src/main/java/org/dxworks/insider/commands/HelpCommand.java +56 -0
- package/src/main/java/org/dxworks/insider/commands/IndentationCount.java +69 -0
- package/src/main/java/org/dxworks/insider/commands/InsiderCommand.java +71 -0
- package/src/main/java/org/dxworks/insider/commands/InspectCommand.java +98 -0
- package/src/main/java/org/dxworks/insider/commands/MeasureCommand.java +47 -0
- package/src/main/java/org/dxworks/insider/commands/NoFilesCommand.java +4 -0
- package/src/main/java/org/dxworks/insider/commands/VersionCommand.java +34 -0
- package/src/main/java/org/dxworks/insider/configuration/InsiderConfiguration.java +123 -0
- package/src/main/java/org/dxworks/insider/constants/InsiderConstants.java +19 -0
- package/src/main/java/org/dxworks/insider/depext/AbstractImportsProcessor.java +57 -0
- package/src/main/java/org/dxworks/insider/depext/CPPImportsProcessor.java +55 -0
- package/src/main/java/org/dxworks/insider/depext/CSharpImportsProcessor.java +53 -0
- package/src/main/java/org/dxworks/insider/depext/DependencyExtractor.java +105 -0
- package/src/main/java/org/dxworks/insider/depext/ImportItem.java +19 -0
- package/src/main/java/org/dxworks/insider/depext/ImportResult.java +32 -0
- package/src/main/java/org/dxworks/insider/depext/JavastackImportsProcessor.java +88 -0
- package/src/main/java/org/dxworks/insider/depext/VBImportsProcessor.java +41 -0
- package/src/main/java/org/dxworks/insider/exceptions/InsiderException.java +7 -0
- package/src/main/java/org/dxworks/insider/library/detector/C_ImportsContainer.java +73 -0
- package/src/main/java/org/dxworks/insider/library/detector/ImportsContainer.java +122 -0
- package/src/main/java/org/dxworks/insider/library/detector/JavaImportsContainer.java +63 -0
- package/src/main/java/org/dxworks/insider/library/detector/LibraryDetector.java +150 -0
- package/src/main/java/org/dxworks/insider/library/detector/LibraryDetectorLanguage.java +6 -0
- package/src/main/java/org/dxworks/insider/library/detector/model/PackagingUnit.java +26 -0
- package/src/main/java/org/dxworks/insider/technology/finder/LinguistService.java +79 -0
- package/src/main/java/org/dxworks/insider/technology/finder/converters/XmlToJsonConverter.java +41 -0
- package/src/main/java/org/dxworks/insider/technology/finder/exceptions/FingerprintParseException.java +7 -0
- package/src/main/java/org/dxworks/insider/technology/finder/model/Technology.java +73 -0
- package/src/main/java/org/dxworks/insider/technology/finder/model/json/JsonConfigurationDTO.java +14 -0
- package/src/main/java/org/dxworks/insider/technology/finder/model/json/TechnologyJsonDTO.java +66 -0
- package/src/main/java/org/dxworks/insider/technology/finder/model/xml/old/CategoryXmlDTO.java +21 -0
- package/src/main/java/org/dxworks/insider/technology/finder/model/xml/old/ConfigurationDataXmlDTO.java +17 -0
- package/src/main/java/org/dxworks/insider/technology/finder/model/xml/old/FingerprintXmlDTO.java +17 -0
- package/src/main/java/org/dxworks/insider/technology/finder/model/xml/old/LanguageXmlDTO.java +20 -0
- package/src/main/java/org/dxworks/insider/technology/finder/model/xml/old/LanguagesXmlDTO.java +18 -0
- package/src/main/java/org/dxworks/insider/technology/finder/model/xml/old/TechnologyXmlDTO.java +19 -0
- package/src/main/java/org/dxworks/insider/technology/finder/model/xml/old/XmlConfigurationDTO.java +17 -0
- package/src/main/java/org/dxworks/insider/technology/finder/parsers/FingerprintsParser.java +14 -0
- package/src/main/java/org/dxworks/insider/technology/finder/parsers/FingerprintsXmlParser.java +57 -0
- package/src/main/java/org/dxworks/insider/technology/finder/parsers/JavaLibrariesCsvParser.java +71 -0
- package/src/main/java/org/dxworks/insider/technology/finder/parsers/JsonFingerprintParser.java +58 -0
- package/src/main/java/org/dxworks/insider/utils/FileUtils.java +45 -0
- package/src/main/java/org/dxworks/insider/utils/ImportUtils.java +21 -0
- package/src/main/java/org/dxworks/insider/utils/LibraryImport.java +17 -0
- package/src/main/java/org/dxworks/insider/utils/LibraryImportInOtherTechnology.java +30 -0
- package/src/main/java/org/dxworks/insider/utils/MapUtils.java +19 -0
- package/src/main/resources/insider-version +1 -0
- package/src/test/java/org/dxworks/insider/application/inspector/services/CommentServiceTest.java +40 -0
- package/src/test/java/org/dxworks/insider/technology/finder/parsers/FingerprintsXmlParserTest.java +15 -0
- package/src/test/java/org/dxworks/insider/utils/FileUtilsTest.java +31 -0
- package/src/test/java/org/dxworks/insider/utils/ImportUtilsTest.java +24 -0
- package/src/test/java/org/dxworks/insider/utils/transformers/JsonToCsvTransformerTest.java +18 -0
- package/src/test/resources/Test1.java +21 -0
- package/src/test/resources/Test2.java +21 -0
- 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
|
+
}
|
package/src/main/java/org/dxworks/insider/technology/finder/model/xml/old/FingerprintXmlDTO.java
ADDED
|
@@ -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
|
+
}
|
package/src/main/java/org/dxworks/insider/technology/finder/model/xml/old/LanguagesXmlDTO.java
ADDED
|
@@ -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
|
+
}
|
package/src/main/java/org/dxworks/insider/technology/finder/model/xml/old/TechnologyXmlDTO.java
ADDED
|
@@ -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
|
+
}
|
package/src/main/java/org/dxworks/insider/technology/finder/model/xml/old/XmlConfigurationDTO.java
ADDED
|
@@ -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
|
+
}
|
package/src/main/java/org/dxworks/insider/technology/finder/parsers/FingerprintsXmlParser.java
ADDED
|
@@ -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
|
+
}
|
package/src/main/java/org/dxworks/insider/technology/finder/parsers/JavaLibrariesCsvParser.java
ADDED
|
@@ -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
|
+
|
package/src/main/java/org/dxworks/insider/technology/finder/parsers/JsonFingerprintParser.java
ADDED
|
@@ -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
|
package/src/test/java/org/dxworks/insider/application/inspector/services/CommentServiceTest.java
ADDED
|
@@ -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
|
+
}
|
package/src/test/java/org/dxworks/insider/technology/finder/parsers/FingerprintsXmlParserTest.java
ADDED
|
@@ -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
|
+
}
|