CloudformationQualityProfile.java
- /*
- * Cloudformation Plugin for SonarQube
- * Copyright (C) 2019 James Pether Sörling
- * james@hack23.com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
- package com.hack23.sonar.cloudformation;
- import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition;
- import org.sonar.api.server.rule.RulesDefinition.Repository;
- import org.sonar.api.server.rule.RulesDefinition.Rule;
- /**
- * The Class CloudformationQualityProfile.
- */
- public final class CloudformationQualityProfile implements BuiltInQualityProfilesDefinition {
- /** The Constant CLOUDFORMATION_RULES. */
- private static final String CLOUDFORMATION_RULES = "Cloudformation(cfn-nag,checkov) Rules";
- /** The Constant TERRAFORM_RULES. */
- private static final String TERRAFORM_RULES = "Terraform(checkov) Rules";
- /** The Constant SERVERLESS. */
- private static final String SERVERLESS = "serverless";
- /** The Constant CLOUDFORMATION. */
- private static final String CLOUDFORMATION = "cloudformation";
- /** The cloudformation rules definition. */
- private final CloudformationRulesDefinition cloudformationRulesDefinition;
- /**
- * Instantiates a new cloudformation quality profile.
- *
- * @param cloudformationRulesDefinition the cloudformation rules definition
- */
- public CloudformationQualityProfile(final CloudformationRulesDefinition cloudformationRulesDefinition) {
- super();
- this.cloudformationRulesDefinition = cloudformationRulesDefinition;
- }
- /**
- * Define.
- *
- * @param context the context
- */
- @Override
- public void define(final Context context) {
- createCloudformationQualityProfile(context, "cloudformation");
- createTerraformQualityProfile(context, "terraform");
- }
- /**
- * Creates the terraform quality profile.
- *
- * @param context the context
- * @param language the language
- */
- private void createTerraformQualityProfile(final Context context, final String language) {
- final NewBuiltInQualityProfile iacProfile = context.createBuiltInQualityProfile(TERRAFORM_RULES, language);
- for (final Repository repository : cloudformationRulesDefinition.getContext().repositories()) {
- if (repository.key().contains("cloudformation-plugin-terraform")) {
- for (final Rule rule : repository.rules()) {
- if (rule.tags().contains(CLOUDFORMATION) || rule.tags().contains(SERVERLESS) || rule.tags().contains("terraform")) {
- iacProfile.activateRule(repository.key(), rule.key());
- }
- }
- }
- }
- iacProfile.done();
- }
- /**
- * Creates the cloudformation quality profile.
- *
- * @param context the context
- * @param language the language
- */
- private void createCloudformationQualityProfile(final Context context, final String language) {
- final NewBuiltInQualityProfile cloudFormationprofile = context
- .createBuiltInQualityProfile(CLOUDFORMATION_RULES, language);
- for (final Repository repository : cloudformationRulesDefinition.getContext().repositories()) {
- if (repository.key().contains("cloudformation-plugin-cfn")) {
- for (final Rule rule : repository.rules()) {
- if (rule.tags().contains(CLOUDFORMATION) || rule.tags().contains(SERVERLESS) || rule.tags().contains("cfn-nag")) {
- cloudFormationprofile.activateRule(repository.key(), rule.key());
- }
- }
- }
- }
- cloudFormationprofile.done();
- }
- }