2017-03-29 1 views
0

J'ai besoin d'aide pour savoir exactement comment cette classe fonctionne. J'ai déjà vu ce code de manière similaire dans plusieurs plugins, mais même lorsque je copie le code exact dans mon IDE, j'ai des erreurs.Comprendre ExampleMetrics.java dans sonar-custom-plugin-example

D'abord le code en question @github:

import static java.util.Arrays.asList; 

import java.util.List; 

import org.sonar.api.measures.CoreMetrics; 
import org.sonar.api.measures.Metric; 
import org.sonar.api.measures.Metrics; 

public class ExampleMetrics implements Metrics { 

    public static final Metric<Integer> FILENAME_SIZE = new Metric.Builder("filename_size", "Filename Size", Metric.ValueType.INT) 
    .setDescription("Number of characters of file names") 
    .setDirection(Metric.DIRECTION_BETTER) 
    .setQualitative(false) 
    .setDomain(CoreMetrics.DOMAIN_GENERAL) 
    .create(); 

    public static final Metric<Integer> FILENAME_SIZE_RATING = new Metric.Builder("filename_size_rating", "Filename Size Rating", Metric.ValueType.RATING) 
    .setDescription("Rating based on size of file names") 
    .setDirection(Metric.DIRECTION_BETTER) 
    .setQualitative(true) 
    .setDomain(CoreMetrics.DOMAIN_GENERAL) 
    .create(); 

    @Override 
    public List<Metric> getMetrics() { 
    return asList(FILENAME_SIZE, FILENAME_SIZE_RATING); 
    } 
} 

C'est l'erreur que je reçois:

Type mismatch: cannot convert from List<Metric<Integer>> to List<Metric> 

et si je fais ce qui suit:

public List<Metric<Integer>> getMetrics() { 
     return asList(FILENAME_SIZE, FILENAME_SIZE_RATING); 
    } 

I obtenir cette erreur:

The return type is incompatible with Metrics.getMetrics() 

Aimerais une explication comment exactement cela est résolu dans le projet.

SOLVED

Ajouter ce qui suit à votre pom.xml

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.5.1</version> 
    <configuration> 
    <source>${jdk.min.version}</source> 
    <target>${jdk.min.version}</target> 
    </configuration> 
</plugin> 

Répondre

0

sont vous essayez

<dependency> 
    <groupId>org.sonarsource.sonarqube</groupId> 
    <artifactId>sonar-plugin-api</artifactId> 
    <version>5.6</version> 
    <scope>provided</scope> 
</dependency> 

dans votre pom.xml?