OSDN Git Service

adding code.
authoriga <tosiki.iga@nifty.ne.jp>
Mon, 31 Mar 2014 13:35:14 +0000 (22:35 +0900)
committeriga <tosiki.iga@nifty.ne.jp>
Mon, 31 Mar 2014 13:35:14 +0000 (22:35 +0900)
jcfa/src/jp/igapyon/jcfa/JavaClassFileAnalyzer.java
jcfa/src/jp/igapyon/jcfa/util/JcfaEclipseUtil.java
jcfa/src/jp/igapyon/jcfa/vo/JcfaClass.java

index 858b267..6a0957a 100644 (file)
@@ -3,6 +3,7 @@ package jp.igapyon.jcfa;
 import java.io.File;\r
 import java.io.IOException;\r
 \r
+import jp.igapyon.jcfa.util.JcfaEclipseUtil;\r
 import jp.igapyon.jcfa.util.JcfaUtil;\r
 import jp.igapyon.jcfa.vo.JcfaClass;\r
 import jp.igapyon.jcfa.vo.JcfaField;\r
@@ -54,8 +55,8 @@ public class JavaClassFileAnalyzer {
 \r
                        jcfaUnit.setTargetFile(new File(actualyTargetDir,\r
                                        split[split.length - 1] + ".jcfa"));\r
-                       \r
-                       \r
+\r
+                       writeToFile(jcfaUnit);\r
                } catch (ClassFormatException e) {\r
                        e.printStackTrace();\r
                } catch (IOException e) {\r
@@ -63,6 +64,47 @@ public class JavaClassFileAnalyzer {
                }\r
        }\r
 \r
+       private void writeToFile(final JcfaUnit jcfaUnit) {\r
+               final StringBuffer result = new StringBuffer();\r
+               for (JcfaClass jcfaClass : jcfaUnit.getClassList()) {\r
+                       writeToBuffer(jcfaClass, result);\r
+               }\r
+\r
+               System.out.println(JcfaEclipseUtil.formatSource(result.toString()));\r
+       }\r
+\r
+       private void writeToBuffer(final JcfaClass jcfaClass,\r
+                       final StringBuffer result) {\r
+               result.append(jcfaClass.getAccess());\r
+               result.append(" class " + jcfaClass.getLocalName());\r
+               if (jcfaClass.getExtendsName() != null\r
+                               && jcfaClass.getExtendsName().length() > 0\r
+                               && jcfaClass.getExtendsName().equals("java.lang.Object") == false) {\r
+                       result.append(" extends " + jcfaClass.getExtendsName());\r
+               }\r
+               result.append("{");\r
+\r
+               for (JcfaField jcfaField : jcfaClass.getFieldList()) {\r
+                       writeToBuffer(jcfaField, result);\r
+               }\r
+\r
+               for (JcfaMethod jcfaMethod : jcfaClass.getMethodList()) {\r
+                       writeToBuffer(jcfaMethod, result);\r
+               }\r
+\r
+               result.append("}");\r
+       }\r
+\r
+       private void writeToBuffer(final JcfaField jcfaField,\r
+                       final StringBuffer result) {\r
+\r
+       }\r
+\r
+       private void writeToBuffer(final JcfaMethod jcfaMethod,\r
+                       final StringBuffer result) {\r
+\r
+       }\r
+\r
        private void analyzeFields(final JavaClass jc, final JcfaClass jcfaClass) {\r
                final org.apache.bcel.classfile.Field[] fields = jc.getFields();\r
                for (int indexField = 0; indexField < fields.length; indexField++) {\r
index ec8e6a7..fe3510a 100644 (file)
@@ -17,6 +17,9 @@ public class JcfaEclipseUtil {
         * @return Formatted source.
         */
        public static String formatSource(final String source) {
+               if (false)
+                       System.out.println("TRACE: " + source);
+
                final CodeFormatter cf = ToolFactory.createCodeFormatter(null);
                final TextEdit te = cf.format(CodeFormatter.K_UNKNOWN, source, 0,
                                source.length(), 0, null);
index a4e6bc5..e2f428d 100644 (file)
@@ -47,4 +47,13 @@ public class JcfaClass extends JcfaNode {
        public List<JcfaMethod> getMethodList() {
                return methodList;
        }
+
+       /**
+        * 
+        * @return
+        */
+       public String getLocalName() {
+               final String[] split = name.split("\\.");
+               return split[split.length - 1];
+       }
 }