* fix(aws_profile_loader): New functions
* fix(shellcheck): Temporary remove Shellcheck
* fix(aws_cli_detector): new function
* fix(jq_detector): New function
* fix(os_detector): New function
* fix(output_bucket): Output bucket input check in main
* fix(python_detector): deleted unused python detector
* fix(credentials): credentials check out of whoami
* [break]refactor(main)
* [BREAK] Get list of checks parsing all input options
* [break]refactor(main): execute checks functions
* [break]refactor(main): move functions to libs
* fix(validations): custom check validation and typos
* refactor(validate_options): Include comments
* fix(custom_checks): Minor fixes
* refactor(closing_files): include libraries
* refactor(loader): Include ignored checks
* refactor(main): Fix shellcheck
* refactor(loader): beautify
* refactor(monochrome): without variables
* refactor(modes): MODES array not needed
* refactor(whoami): get error from AWSCLI
* refactor(secrets-detector)
* refactor(secrets-detector)
* fix(html_scoring): html scoring was fixed.
* fix(load_checks_from_file)
* fix(color-code): Print if not mono
* fix(not extra): Fixed if EXCLUDE_CHECK_ID is empty
* fix(IFS): Restore default IFS once modes are parsed
* fix(bucket): validate before whoami
* fix(bucket): validate before whoami
Co-authored-by: n4ch04 <nachor1992@gmail.com>
Co-authored-by: sergargar <sergio@verica.io>
Co-authored-by: Nacho Rivera <59198746+n4ch04@users.noreply.github.com>
Continue to show (unwhitelisted) failed checks as failures in JUnit output, but rather than exclude failing whitelisted checks from JUnit, mark them as skipped
Fixes#590
Rearrange output functions so they support outputting text alongside other formats, if specified
Add a convenience function for checking if JUnit output is enabled
Move monochrome setting into loop so it better supports multiple formats
Update README
If the -J flag is passed, generate JUnit XML reports for each check, in-line with how Java tools generate JUnit reports.
Check section numbers equate to 'root packages', checks are second-level packages, each check equates to a testsuite (mirroring Java where each test class is a testsuite) and each pass/fail of a check equates to a testcase
Time the execution of each check and include this in the report
Include properties (Prowler version, check level etc.) in-line with standard JUnit files
XML escape all strings for safety
Detect if a user has GNU coreutils installed on Mac OS X, but not as their default, switching to using gdate for date commands if so, as it has more features, including getting dates in milliseconds
Add prowler-output, junit-reports and VSCode files to .gitignore
Update README to include JUnit info, address markdownlint warnings
Remove unused arguments to jq in generateJsonAsffOutput
Fixes#537