1 /***
2 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3 */
4 package net.sourceforge.pmd;
5
6 import net.sourceforge.pmd.renderers.CSVRenderer;
7 import net.sourceforge.pmd.renderers.EmacsRenderer;
8 import net.sourceforge.pmd.renderers.HTMLRenderer;
9 import net.sourceforge.pmd.renderers.IDEAJRenderer;
10 import net.sourceforge.pmd.renderers.Renderer;
11 import net.sourceforge.pmd.renderers.SummaryHTMLRenderer;
12 import net.sourceforge.pmd.renderers.TextRenderer;
13 import net.sourceforge.pmd.renderers.VBHTMLRenderer;
14 import net.sourceforge.pmd.renderers.XMLRenderer;
15 import net.sourceforge.pmd.renderers.PapariTextRenderer;
16
17 public class CommandLineOptions {
18
19 private boolean debugEnabled;
20 private boolean jdk13;
21 private boolean shortNamesEnabled;
22
23 private String inputFileName;
24 private String reportFormat;
25 private String ruleSets;
26
27 private String[] args;
28
29 public CommandLineOptions(String[] args) {
30
31 if (args == null || args.length < 3) {
32 throw new RuntimeException(usage());
33 }
34
35 inputFileName = args[0];
36 reportFormat = args[1];
37 ruleSets = args[2];
38
39 this.args = args;
40
41 for (int i=0; i<args.length; i++) {
42 if (args[i].equals("-debug")) {
43 debugEnabled = true;
44 } else if (args[i].equals("-shortnames")) {
45 shortNamesEnabled = true;
46 } else if (args[i].equals("-jdk13")) {
47 jdk13 = true;
48 }
49 }
50 }
51
52 public Renderer createRenderer() {
53 if (reportFormat.equals("xml")) {
54 return new XMLRenderer();
55 } else if (reportFormat.equals("ideaj")) {
56 return new IDEAJRenderer(args);
57 } else if (reportFormat.equals("papari")) {
58 return new PapariTextRenderer();
59 } else if (reportFormat.equals("text")) {
60 return new TextRenderer();
61 } else if (reportFormat.equals("emacs")) {
62 return new EmacsRenderer();
63 } else if (reportFormat.equals("csv")) {
64 return new CSVRenderer();
65 } else if (reportFormat.equals("html")) {
66 return new HTMLRenderer();
67 }
68 if (reportFormat.equals("summaryhtml")) {
69 return new SummaryHTMLRenderer();
70 }
71 if (reportFormat.equals("vbhtml")) {
72 return new VBHTMLRenderer();
73 }
74 if (!reportFormat.equals("")) {
75 try {
76 return (Renderer)Class.forName(reportFormat).newInstance();
77 } catch (Exception e) {
78 throw new IllegalArgumentException("Can't find the custom format " + reportFormat + ": " + e.getClass().getName());
79 }
80 }
81
82 throw new IllegalArgumentException("Can't create report with format of " + reportFormat);
83 }
84
85 public boolean containsCommaSeparatedFileList() {
86 return inputFileName.indexOf(',') != -1;
87 }
88
89 public String getInputFileName() {
90 return this.inputFileName;
91 }
92
93 public String getReportFormat() {
94 return this.reportFormat;
95 }
96
97 public String getRulesets() {
98 return this.ruleSets;
99 }
100
101 public boolean debugEnabled() {
102 return debugEnabled;
103 }
104
105 public boolean jdk13() {
106 return jdk13;
107 }
108
109 public boolean shortNamesEnabled() {
110 return shortNamesEnabled;
111 }
112
113 public String usage() {
114 return PMD.EOL +
115 PMD.EOL +
116 "Mandatory arguments:" + PMD.EOL +
117 "1) A java source code filename or directory" + PMD.EOL +
118 "2) A report format " + PMD.EOL +
119 "3) A ruleset filename or a comma-delimited string of ruleset filenames" + PMD.EOL +
120 PMD.EOL +
121 "For example: " + PMD.EOL +
122 "c://> java -jar pmd-1.6.jar c://my//source//code html rulesets/unusedcode.xml,rulesets/imports.xml" + PMD.EOL +
123 PMD.EOL +
124 "Optional arguments that may be put after the mandatory arguments are: " + PMD.EOL +
125 "-debug: prints debugging information " + PMD.EOL +
126 "-jdk13: enables PMD to parse source code written using 'assert' as an identifier" + PMD.EOL +
127 "-shortnames: prints shortened filenames in the report" + PMD.EOL +
128 PMD.EOL +
129 "For example: " + PMD.EOL +
130 "c://> java -jar pmd-1.6.jar c://my//source//code html rulesets/unusedcode.xml,rulesets/imports.xml -jdk13 -debug" + PMD.EOL +
131 PMD.EOL;
132 }
133 }
134
135
This page was automatically generated by Maven