📄 ideajrenderer.java
字号:
/** * BSD-style license; for more info see http://pmd.sourceforge.net/license.html*/package net.sourceforge.pmd.renderers;import net.sourceforge.pmd.PMD;import net.sourceforge.pmd.Report;import net.sourceforge.pmd.RuleViolation;import java.util.HashSet;import java.util.Iterator;import java.util.Set;import java.util.StringTokenizer;public class IDEAJRenderer implements Renderer { private static class SourcePath { private Set paths = new HashSet(); public SourcePath(String sourcePathString) { for (StringTokenizer st = new StringTokenizer(sourcePathString, System.getProperty("path.separator")); st.hasMoreTokens();) { paths.add(st.nextToken()); } } public String clipPath(String fullFilename) { for (Iterator i = paths.iterator(); i.hasNext();) { String path = (String) i.next(); if (fullFilename.startsWith(path)) { return fullFilename.substring(path.length() + 1); } } throw new RuntimeException("Couldn't find src path for " + fullFilename); } } private String[] args; public IDEAJRenderer(String[] args) { this.args = args; } public String render(Report report) { if (args[4].equals(".method")) { // working on a directory tree String sourcePath = args[3]; return render(report, sourcePath); } // working on one file String classAndMethodName = args[4]; String singleFileName = args[5]; return render(report, classAndMethodName, singleFileName); } private String render(Report report, String sourcePathString) { SourcePath sourcePath = new SourcePath(sourcePathString); StringBuffer buf = new StringBuffer(); for (Iterator i = report.iterator(); i.hasNext();) { RuleViolation rv = (RuleViolation) i.next(); buf.append(rv.getDescription() + PMD.EOL); buf.append(" at " + getFullyQualifiedClassName(rv.getFilename(), sourcePath) + ".method(" + getSimpleFileName(rv.getFilename()) + ":" + rv.getLine() + ")" + PMD.EOL); } return buf.toString(); } private String render(Report report, String classAndMethod, String file) { StringBuffer buf = new StringBuffer(); for (Iterator i = report.iterator(); i.hasNext();) { RuleViolation rv = (RuleViolation) i.next(); buf.append(rv.getDescription() + PMD.EOL); buf.append(" at " + classAndMethod + "(" + file + ":" + rv.getLine() + ")" + PMD.EOL); } return buf.toString(); } private String getFullyQualifiedClassName(String in, SourcePath sourcePath) { String classNameWithSlashes = sourcePath.clipPath(in); String className = classNameWithSlashes.replace(System.getProperty("file.separator").charAt(0), '.'); return className.substring(0, className.length()-5); } private String getSimpleFileName(String in) { return in.substring(in.lastIndexOf(System.getProperty("file.separator")) + 1); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -