Search in sources :

Example 1 with MavenProject

use of org.sonar.maven.model.maven2.MavenProject in project sonar-java by SonarSource.

the class PomCheckVerifier method scanFile.

private static void scanFile(String filename, PomCheck check, PomCheckVerifier mavenCheckVerifier) {
    File pom = new File(filename);
    Document document = XmlParser.parseXML(pom);
    if (document != null) {
        MavenProject project = PomParser.parseXML(pom);
        if (project != null) {
            XmlCheckVerifier.retrieveExpectedIssuesFromFile(pom, mavenCheckVerifier);
            FakePomCheckContext context = new FakePomCheckContext(document, pom, project);
            check.scanFile(context);
            mavenCheckVerifier.checkIssues(context.getMessages(), false);
        } else {
            Fail.fail("The test file is not a pom");
        }
    } else {
        Fail.fail("The test file can not be parsed");
    }
}
Also used : MavenProject(org.sonar.maven.model.maven2.MavenProject) Document(org.w3c.dom.Document) File(java.io.File)

Example 2 with MavenProject

use of org.sonar.maven.model.maven2.MavenProject in project sonar-java by SonarSource.

the class PomParserTest method should_retrieve_dependencies_from_dependency_management.

@Test
public void should_retrieve_dependencies_from_dependency_management() {
    MavenProject project = PomParser.parseXML(SIMPLE_POM_FILE);
    DependencyManagement dependencyManagement = project.getDependencyManagement();
    checkPosition(dependencyManagement, 26, 3, 36, 3);
    Dependency dependency = dependencyManagement.getDependencies().getDependencies().get(0);
    checkAttribute(dependency.getGroupId(), "fake", 29, 18, 29, 22);
    checkAttribute(dependency.getArtifactId(), "mock", 30, 21, 30, 25);
    checkAttribute(dependency.getVersion(), "4.0", 31, 18, 31, 21);
    checkAttribute(dependency.getScope(), "system", 32, 16, 32, 22);
    checkAttribute(dependency.getSystemPath(), "hello", 33, 21, 33, 26);
}
Also used : MavenProject(org.sonar.maven.model.maven2.MavenProject) Dependency(org.sonar.maven.model.maven2.Dependency) DependencyManagement(org.sonar.maven.model.maven2.DependencyManagement) Test(org.junit.Test)

Example 3 with MavenProject

use of org.sonar.maven.model.maven2.MavenProject in project sonar-java by SonarSource.

the class PomParserTest method should_parse_simple_pom.

@Test
public void should_parse_simple_pom() throws Exception {
    MavenProject project = PomParser.parseXML(SIMPLE_POM_FILE);
    assertThat(project).isNotNull();
    assertThat(project.getProperties().getElements()).hasSize(3);
    assertThat(project.getDependencies().getDependencies()).hasSize(4);
    assertThat(project.getBuild().getPlugins().getPlugins()).hasSize(1);
    assertThat(project.getScm()).isNull();
    assertThat(project.getParent()).isNull();
}
Also used : MavenProject(org.sonar.maven.model.maven2.MavenProject) Test(org.junit.Test)

Example 4 with MavenProject

use of org.sonar.maven.model.maven2.MavenProject in project sonar-java by SonarSource.

the class PomParser method parseXML.

@CheckForNull
public static MavenProject parseXML(File file) {
    try (FileInputStream is = new FileInputStream(file)) {
        // it is necessary to provide classloader explicitly, otherwise Thread.contextClassLoader will be used,
        // which doesn't include jar of plugin
        JAXBContext context = JAXBContext.newInstance("org.sonar.maven.model.maven2", PomParser.class.getClassLoader());
        XMLInputFactory factory = XMLInputFactory.newInstance();
        enableLocationPropertyForIBM(factory);
        XMLStreamReader reader = factory.createXMLStreamReader(is);
        StreamListener streamListener = new StreamListener(reader);
        Unmarshaller unmarshaller = context.createUnmarshaller();
        unmarshaller.setListener(streamListener);
        unmarshaller.setAdapter(new LocatedAttributeAdapter(reader));
        JAXBElement<MavenProject> unmarshalledObject = unmarshaller.unmarshal(reader, MavenProject.class);
        if (!"project".equalsIgnoreCase(unmarshalledObject.getName().getLocalPart())) {
            return null;
        }
        return unmarshalledObject.getValue();
    } catch (JAXBException | XMLStreamException | IOException e) {
        LOG.error("Unable to parse pom file " + file.getPath(), e);
    }
    return null;
}
Also used : XMLStreamReader(javax.xml.stream.XMLStreamReader) JAXBException(javax.xml.bind.JAXBException) JAXBContext(javax.xml.bind.JAXBContext) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream) LocatedAttributeAdapter(org.sonar.maven.model.LocatedAttributeAdapter) MavenProject(org.sonar.maven.model.maven2.MavenProject) XMLStreamException(javax.xml.stream.XMLStreamException) Unmarshaller(javax.xml.bind.Unmarshaller) XMLInputFactory(javax.xml.stream.XMLInputFactory) CheckForNull(javax.annotation.CheckForNull)

Example 5 with MavenProject

use of org.sonar.maven.model.maven2.MavenProject in project sonar-java by SonarSource.

the class PomElementOrderCheck method scanFile.

@Override
public void scanFile(PomCheckContext context) {
    MavenProject project = context.getMavenProject();
    List<Location> issues = checkPositions(project.getModelVersion(), project.getParent(), project.getGroupId(), project.getArtifactId(), project.getVersion(), project.getPackaging(), project.getName(), project.getDescription(), project.getUrl(), project.getInceptionYear(), project.getOrganization(), project.getLicenses(), project.getDevelopers(), project.getContributors(), project.getMailingLists(), project.getPrerequisites(), project.getModules(), project.getScm(), project.getIssueManagement(), project.getCiManagement(), project.getDistributionManagement(), project.getProperties(), project.getDependencyManagement(), project.getDependencies(), project.getRepositories(), project.getPluginRepositories(), project.getBuild(), project.getReporting(), project.getProfiles());
    if (!issues.isEmpty()) {
        context.reportIssue(this, project.startLocation().line(), "Reorder the elements of this pom to match the recommended order.", issues);
    }
}
Also used : MavenProject(org.sonar.maven.model.maven2.MavenProject) Location(org.sonar.java.xml.maven.PomCheckContext.Location)

Aggregations

MavenProject (org.sonar.maven.model.maven2.MavenProject)12 Test (org.junit.Test)8 File (java.io.File)3 Element (org.w3c.dom.Element)3 Configuration (org.sonar.maven.model.maven2.PluginExecution.Configuration)2 FileInputStream (java.io.FileInputStream)1 IOException (java.io.IOException)1 CheckForNull (javax.annotation.CheckForNull)1 JAXBContext (javax.xml.bind.JAXBContext)1 JAXBException (javax.xml.bind.JAXBException)1 Unmarshaller (javax.xml.bind.Unmarshaller)1 XMLInputFactory (javax.xml.stream.XMLInputFactory)1 XMLStreamException (javax.xml.stream.XMLStreamException)1 XMLStreamReader (javax.xml.stream.XMLStreamReader)1 Location (org.sonar.java.xml.maven.PomCheckContext.Location)1 LocatedAttributeAdapter (org.sonar.maven.model.LocatedAttributeAdapter)1 Dependency (org.sonar.maven.model.maven2.Dependency)1 DependencyManagement (org.sonar.maven.model.maven2.DependencyManagement)1 Properties (org.sonar.maven.model.maven2.MavenProject.Properties)1 Plugin (org.sonar.maven.model.maven2.Plugin)1