remove Profile
[idea/community.git] / platform / lang-impl / src / com / intellij / help / impl / InspectionDump.java
1 /*
2  * Copyright 2000-2016 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.help.impl;
17
18 import com.intellij.codeInspection.ex.InspectionToolRegistrar;
19 import com.intellij.codeInspection.ex.InspectionToolWrapper;
20 import com.intellij.openapi.application.ApplicationStarter;
21 import com.intellij.openapi.application.PathManager;
22 import org.w3c.dom.CDATASection;
23 import org.w3c.dom.Document;
24 import org.w3c.dom.Element;
25
26 import javax.xml.parsers.DocumentBuilder;
27 import javax.xml.parsers.DocumentBuilderFactory;
28 import javax.xml.parsers.ParserConfigurationException;
29 import javax.xml.transform.*;
30 import javax.xml.transform.dom.DOMSource;
31 import javax.xml.transform.stream.StreamResult;
32 import java.io.File;
33 import java.util.List;
34
35 public class InspectionDump implements ApplicationStarter {
36   @Override
37   public String getCommandName() {
38     return "inspection-dump";
39   }
40
41   @Override
42   public void premain(String[] args) {
43
44   }
45
46   @Override
47   public void main(String[] args) {
48     DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
49     try {
50       DocumentBuilder builder = factory.newDocumentBuilder();
51       Document document = builder.newDocument();
52       Element inspections = document.createElement("Inspections");
53       document.appendChild(inspections);
54       List<InspectionToolWrapper> tools = InspectionToolRegistrar.getInstance().createTools();
55       for (InspectionToolWrapper tool : tools) {
56         Element inspection = document.createElement("Inspection");
57         inspection.setAttribute("group", tool.getGroupDisplayName());
58         inspection.setAttribute("name", tool.getDisplayName());
59         inspection.setAttribute("level", tool.getDefaultLevel().getName());
60         if (tool.getLanguage() != null) {
61           inspection.setAttribute("language", tool.getLanguage());
62         }
63         Element description = document.createElement("description");
64         CDATASection descriptionSection = document.createCDATASection(escapeCDATA(tool.loadDescription()));
65         description.appendChild(descriptionSection);
66         inspection.appendChild(description);
67         inspections.appendChild(inspection);
68       }
69
70       Transformer transformer = TransformerFactory.newInstance().newTransformer();
71       transformer.setOutputProperty(OutputKeys.INDENT, "yes");
72       DOMSource source = new DOMSource(document);
73       final String path = args.length == 2 ? args[1] : PathManager.getHomePath() + File.separator + "AllInspections.xml";
74       StreamResult console = new StreamResult(new File(path));
75       transformer.transform(source, console);
76
77       System.exit(0);
78     }
79     catch (ParserConfigurationException e) {
80       e.printStackTrace();
81     }
82     catch (TransformerConfigurationException e) {
83       e.printStackTrace();
84     }
85     catch (TransformerException e) {
86       e.printStackTrace();
87     }
88   }
89
90   private static String escapeCDATA(String cData) {
91     return cData.replaceAll("\\]", "&#x005D;").replaceAll("\\[", "&#x005B;");
92   }
93 }