/*
* Coverity Sonar Plugin
* Copyright (c) 2017 Synopsys, Inc
* support@coverity.com
*
* All rights reserved. This program and the accompanying materials are made
* available under the terms of the Eclipse Public License v1.0 which
* accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html.
*/
package org.sonar.plugins.coverity.server;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.sonar.api.ExtensionPoint;
import org.sonar.api.ExtensionProvider;
import org.sonar.api.profiles.ProfileDefinition;
import org.sonar.api.profiles.RulesProfile;
import org.sonar.api.rules.Rule;
import org.sonar.api.rules.RuleFinder;
import org.sonar.api.rules.RuleQuery;
import org.sonar.api.server.ServerSide;
import org.sonar.api.utils.ValidationMessages;
import org.sonar.plugins.coverity.CoverityPlugin;
import java.util.ArrayList;
import java.util.List;
@ServerSide
@ExtensionPoint
public class CoverityProfiles extends ExtensionProvider {
private static final Logger LOG = LoggerFactory.getLogger(CoverityProfiles.class);
private RuleFinder ruleFinder;
public CoverityProfiles(RuleFinder ruleFinder) {
this.ruleFinder = ruleFinder;
}
@Override
public List<CoverityProfile> provide() {
List<CoverityProfile> list = new ArrayList<CoverityProfile>();
for(String language : CoverityPlugin.COVERITY_LANGUAGES) {
list.add(new CoverityProfile(language));
}
return list;
}
class CoverityProfile extends ProfileDefinition {
String language;
public CoverityProfile(String language) {
this.language = language;
}
@Override
public RulesProfile createProfile(ValidationMessages validation) {
final RulesProfile profile = RulesProfile.create("Coverity(" + language + ")", language);
for(Rule rule : ruleFinder.findAll(RuleQuery.create().withRepositoryKey(CoverityPlugin.REPOSITORY_KEY + "-" + language))){
profile.activateRule(Rule.create("coverity-" + language, rule.getKey()), rule.getSeverity());
}
return profile;
}
@Override
public String toString() {
return "Coverity(" + language + ")";
}
}
@Override
public String toString() {
return "Coverity";
}
}