async run({ version = '1.0.0' } = {}) {
    // Instantiate check groups
    const groups = Object.values(this.checkGroups)
      .filter(c => typeof c === 'function')
      .map(CheckGroup => new CheckGroup());

    // Run checks
    groups.forEach(group => group.run());

    // Generate JSON report
    const report = this._generateReport({ groups, version });

    // If report should be written to logs
    if (this.enableCheckLog) {
      this._logReport(report);
    }
    return report;
  }
Runs all security checks and returns the results.
@params
@returns {Object} The security check report.