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");
}
}
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);
}
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();
}
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;
}
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);
}
}
Aggregations