_generateReport({ groups, version }) {
    // Create report template
    const report = {
      report: {
        version,
        state: CheckState.success,
        groups: [],
      },
    };

    // Identify report version
    switch (version) {
      case '1.0.0':
      default:
        // For each check group
        for (const group of groups) {
          // Create group report
          const groupReport = {
            name: group.name(),
            state: CheckState.success,
            checks: [],
          };

          // Create check reports
          groupReport.checks = group.checks().map(check => {
            const checkReport = {
              title: check.title,
              state: check.checkState(),
            };
            if (check.checkState() == CheckState.fail) {
              checkReport.warning = check.warning;
              checkReport.solution = check.solution;
              report.report.state = CheckState.fail;
              groupReport.state = CheckState.fail;
            }
            return checkReport;
          });

          report.report.groups.push(groupReport);
        }
    }
    return report;
  }
Generates a security check report in JSON format with schema:
```
{
   report: {
     version: "1.0.0", // The report version, defines the schema
     state: "fail"     // The disjunctive indicator of failed checks in all groups.
     groups: [         // The check groups
       {
         name: "House",            // The group name
         state: "fail"             // The disjunctive indicator of failed checks in this group.
         checks: [                 // The checks
           title: "Door locked",   // The check title
           state: "fail"           // The check state
           warning: "Anyone can enter your house."   // The warning.
           solution: "Lock your door."               // The solution.
         ]
       },
       ...
     ]
   }
}
```
@param {Object} params The parameters.
@param {Array<CheckGroup>} params.groups The check groups.
@param {String} params.version: The report schema version.
@returns {Object} The report.