Skip to content

Commit

Permalink
Sonar-API-6.7
Browse files Browse the repository at this point in the history
  • Loading branch information
tgmz committed Dec 12, 2022
1 parent 84b10af commit 1dd29b8
Show file tree
Hide file tree
Showing 34 changed files with 989 additions and 1,002 deletions.
823 changes: 412 additions & 411 deletions pom.xml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,15 @@
import javax.xml.parsers.ParserConfigurationException;

import org.apache.commons.io.IOUtils;
import org.sonar.api.config.Settings;
import org.sonar.api.config.Configuration;
import org.sonar.api.utils.log.Logger;
import org.sonar.api.utils.log.Loggers;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

import de.tgmz.sonar.plugins.xinfo.config.XinfoConfig;
import de.tgmz.sonar.plugins.xinfo.plicomp.PACKAGE;
import de.tgmz.sonar.plugins.xinfo.settings.XinfoSettings;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;

/**
Expand All @@ -45,7 +45,7 @@ public abstract class AbstractXinfoProvider implements IXinfoProvider {
private static final Logger LOGGER = Loggers.get(AbstractXinfoProvider.class);
private DocumentBuilder documentBuilder;
private Unmarshaller unmarshaller;
private Settings settings;
private Configuration configuration;

public AbstractXinfoProvider() {
try {
Expand All @@ -58,10 +58,10 @@ public AbstractXinfoProvider() {
}
}

public AbstractXinfoProvider(Settings settings) {
public AbstractXinfoProvider(Configuration configuration) {
this();

this.settings = settings;
this.configuration = configuration;
}

@SuppressFBWarnings(value="XXE_DOCUMENT", justification="Not possible due to DocumentBuilderFactory settings")
Expand Down Expand Up @@ -99,7 +99,7 @@ public PACKAGE createXinfo(InputStream is) throws XinfoException {
// - COBOL and Assembler do not include a prologue. This causes a CharConversionException
// if xinfo is EBCDIC-encoded
try {
String c = settings.getString(XinfoSettings.XINFO_ENCODING);
String c = configuration.get(XinfoConfig.XINFO_ENCODING).orElse(Charset.defaultCharset().name());

String xml = IOUtils.toString(new ByteArrayInputStream(buf), c != null ? Charset.forName(c) : Charset.defaultCharset());

Expand Down Expand Up @@ -139,7 +139,7 @@ public PACKAGE createXinfo(InputStream is) throws XinfoException {
return p;
}

protected Settings getSettings() {
return settings;
protected Configuration getConfiguration() {
return configuration;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,37 +10,36 @@
*******************************************************************************/
package de.tgmz.sonar.plugins.xinfo;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.charset.Charset;

import org.apache.commons.io.IOUtils;
import org.sonar.api.batch.fs.InputFile;

import de.tgmz.sonar.plugins.xinfo.languages.Language;

/**
* File implementation of {@link XinfoFileAnalyzable}
*/
public class XinfoFileAnalyzable implements IXinfoAnalyzable {
private File f;
private InputFile f;
private Language language;

public XinfoFileAnalyzable(Language language, File f) {
public XinfoFileAnalyzable(Language language, InputFile f) {
this.language = language;
this.f = f;
}

@Override
public String getName() {
int i = f.getName().lastIndexOf('.');
int i = f.filename().lastIndexOf('.');

return (i == -1 ? f.getName() : f.getName().substring(0, i));
return (i == -1 ? f.filename() : f.filename().substring(0, i));
}

@Override
public String getSource() throws IOException {
return IOUtils.toString(new FileInputStream(f), Charset.defaultCharset());
return IOUtils.toString(f.inputStream(), Charset.defaultCharset());
}

@Override
Expand Down
10 changes: 5 additions & 5 deletions src/main/java/de/tgmz/sonar/plugins/xinfo/XinfoFileProvider.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@
import org.apache.commons.io.IOCase;
import org.apache.commons.io.filefilter.NameFileFilter;
import org.apache.commons.io.filefilter.TrueFileFilter;
import org.sonar.api.config.Settings;
import org.sonar.api.config.Configuration;
import org.sonar.api.utils.log.Logger;
import org.sonar.api.utils.log.Loggers;

import de.tgmz.sonar.plugins.xinfo.config.XinfoConfig;
import de.tgmz.sonar.plugins.xinfo.plicomp.ObjectFactory;
import de.tgmz.sonar.plugins.xinfo.plicomp.PACKAGE;
import de.tgmz.sonar.plugins.xinfo.settings.XinfoSettings;

/**
* Provides programinformations by walking through the filesystem.
Expand All @@ -37,8 +37,8 @@
public class XinfoFileProvider extends AbstractXinfoProvider {
private static final Logger LOGGER = Loggers.get(XinfoFileProvider.class);

public XinfoFileProvider(Settings settings) {
super(settings);
public XinfoFileProvider(Configuration configuration) {
super(configuration);
}

@Override
Expand All @@ -49,7 +49,7 @@ public PACKAGE getXinfo(IXinfoAnalyzable pgm) throws XinfoException {

xinfoFile = pgm.getName() + ".xml";

String xinfoRoot = getSettings().getString(XinfoSettings.XINFO_ROOT);
String xinfoRoot = getConfiguration().get(XinfoConfig.XINFO_ROOT).orElse("xml");

Path p = Paths.get(xinfoRoot == null ? "" : xinfoRoot).toAbsolutePath();

Expand Down
12 changes: 6 additions & 6 deletions src/main/java/de/tgmz/sonar/plugins/xinfo/XinfoPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@
import org.sonar.api.Plugin;

import de.tgmz.sonar.plugins.xinfo.languages.AssemblerLanguage;
import de.tgmz.sonar.plugins.xinfo.languages.AssemblerQualityProfile;
import de.tgmz.sonar.plugins.xinfo.languages.AssemblerQualityProfileDefinition;
import de.tgmz.sonar.plugins.xinfo.languages.CobolLanguage;
import de.tgmz.sonar.plugins.xinfo.languages.CobolQualityProfile;
import de.tgmz.sonar.plugins.xinfo.languages.CobolQualityProfileDefinition;
import de.tgmz.sonar.plugins.xinfo.languages.PliLanguage;
import de.tgmz.sonar.plugins.xinfo.languages.PliQualityProfile;
import de.tgmz.sonar.plugins.xinfo.languages.PliQualityProfileDefinition;
import de.tgmz.sonar.plugins.xinfo.rules.XinfoRulesDefinition;
import de.tgmz.sonar.plugins.xinfo.sensors.AssemblerColorizer;
import de.tgmz.sonar.plugins.xinfo.sensors.AssemblerIssuesLoader;
Expand All @@ -38,9 +38,9 @@ public void define(Context context) {
// http://docs.sonarqube.org/display/DEV/Adding+Hooks

// tutorial on languages
context.addExtensions(PliLanguage.class, PliQualityProfile.class);
context.addExtensions(CobolLanguage.class, CobolQualityProfile.class);
context.addExtensions(AssemblerLanguage.class, AssemblerQualityProfile.class);
context.addExtensions(PliLanguage.class, PliQualityProfileDefinition.class);
context.addExtensions(CobolLanguage.class, CobolQualityProfileDefinition.class);
context.addExtensions(AssemblerLanguage.class, AssemblerQualityProfileDefinition.class);

// tutorial on measures

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
*******************************************************************************/
package de.tgmz.sonar.plugins.xinfo;

import org.sonar.api.config.Settings;
import org.sonar.api.config.Configuration;

/**
* Singleton factory for the XinfoProvider to use.
Expand All @@ -22,9 +22,9 @@ private XinfoProviderFactory() {
// Empty private constructor to hide the implicit public one
}

public static IXinfoProvider getProvider(Settings settings) {
public static IXinfoProvider getProvider(Configuration configuration) {
if (provider == null) {
provider = new XinfoFileProvider(settings);
provider = new XinfoFileProvider(configuration);
}

return provider;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,15 @@
*******************************************************************************/
package de.tgmz.sonar.plugins.xinfo.color;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.charset.Charset;
import java.text.NumberFormat;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.io.IOUtils;
import org.sonar.api.batch.fs.InputFile;
import org.sonar.api.batch.sensor.highlighting.TypeOfText;
import org.sonar.api.utils.log.Logger;
import org.sonar.api.utils.log.Loggers;
Expand All @@ -33,7 +30,7 @@ public abstract class AbstractColorizing implements IColorizing {
private static final Logger LOGGER = Loggers.get(AbstractColorizing.class);

/** The areas to colorize. */
private Set<ColorizingData> areas;
private HighligthedAreas areas;
private String[] content;
private int limit;

Expand All @@ -50,29 +47,28 @@ protected NumberFormat initialValue() {
* @param limit maximum number of lines to colorize
* @throws IOException if the file can't be read
*/
public AbstractColorizing(File file, int limit) throws IOException {
public AbstractColorizing(InputFile file, int limit) throws IOException {
this.limit = limit;

LOGGER.debug("Colorize file {}", file.toString());

List<String> readLines = IOUtils.readLines(new FileInputStream(file), Charset.defaultCharset());
List<String> readLines = IOUtils.readLines(file.inputStream(), Charset.defaultCharset());

if (readLines.size() > limit) {
LOGGER.warn("File {} containes {} lines. Syntax highlighting will be limited to {} lines"
, file.getName(), NF.get().format(readLines.size()), NF.get().format(this.limit));
, file.filename(), NF.get().format(readLines.size()), NF.get().format(this.limit));
}

content = new String[Math.min(readLines.size(), limit)];

System.arraycopy(readLines.toArray(new String[readLines.size()]), 0, content, 0, content.length);

areas = new TreeSet<>();
areas = new HighligthedAreas();

createAreas();
}

@Override
public Set<ColorizingData> getAreas() {
public HighligthedAreas getAreas() {
return areas;
}

Expand Down
58 changes: 23 additions & 35 deletions src/main/java/de/tgmz/sonar/plugins/xinfo/color/ColorizingData.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
/**
* Highlighted area.
*/
public class ColorizingData implements Comparable<ColorizingData> {
public class ColorizingData {
private int startLineNumber;
private int startOffset;
private int endLineNumber;
Expand Down Expand Up @@ -64,53 +64,41 @@ public int getEndLineNumber() {
* Two ColorizingData are considered equal if they overlap.
* So we can simply add them to a Set and let it handle overlapping areas.
*/
@Override
public int compareTo(ColorizingData other) {
if (this.getStartLineNumber() > other.getEndLineNumber()) {
return 80 * (other.getEndLineNumber() - this.getStartLineNumber());
public boolean overlap(Object obj) {
if (this == obj) {
return true;
}

if (this.getEndLineNumber() < other.getStartLineNumber()) {
return 80 * (other.getStartLineNumber() - this.getEndLineNumber());
}

if (this.getStartOffset() >= other.getEndOffset()) {
return other.getEndOffset() - this.getStartOffset();
if (obj == null) {
return false;
}

if (this.getEndOffset() <= other.getStartOffset()) { // No overlaps
return other.getStartOffset() - this.getEndOffset();
if (getClass() != obj.getClass()) {
return false;
}

return 0;
}
/*
* Two ColorizingData are considered equal if they overlap.
* So we can simply add them to a Set and let it handle overlapping areas.
*/
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
ColorizingData other = (ColorizingData) obj;

// This area starts after the other ends
if (this.getStartLineNumber() > other.getEndLineNumber()) {
return false;
}

if (obj == null) {
// This area ends before the other starts
if (this.getEndLineNumber() < other.getStartLineNumber()) {
return false;
}

if (this.getStartLineNumber() == other.getEndLineNumber()
&& this.getStartOffset() >= other.getEndOffset()) {
return false;
}

if (getClass() != obj.getClass()) {
if (this.getEndLineNumber() == other.getStartLineNumber()
&& this.getEndOffset() <= other.getStartOffset()) { // No overlaps
return false;
}

return compareTo((ColorizingData) obj) == 0;
}

/*
* Must override. The contract says, that two equal ColorizedData
* must have the same hashCode but we cannot decide this.
*/
@Override
public int hashCode() {
return 0;
return true;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/*******************************************************************************
* Copyright (c) 11.11.2017 Thomas Zierer.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* Thomas Zierer - initial API and implementation and/or initial documentation
*******************************************************************************/
package de.tgmz.sonar.plugins.xinfo.color;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

/**
* Highlighted areas.
*/
public class HighligthedAreas {
private List<ColorizingData> areas;

public HighligthedAreas() {
areas = new LinkedList<>();
}
public List<ColorizingData> getAreas() {
return areas;
}
public void add(ColorizingData t) {
for (Iterator<ColorizingData> iterator = areas.iterator(); iterator.hasNext();) {
if (iterator.next().overlap(t)) {
return;
}
}

areas.add(t);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,10 @@
*******************************************************************************/
package de.tgmz.sonar.plugins.xinfo.color;

import java.util.Set;

/**
* General interface for Syntax highlighting.
*/
@FunctionalInterface
public interface IColorizing {
Set<ColorizingData> getAreas();
HighligthedAreas getAreas();
}
Loading

0 comments on commit 1dd29b8

Please sign in to comment.