From a96650fe7e196079844f91ac50b241e77bef22d7 Mon Sep 17 00:00:00 2001 From: iga Date: Mon, 31 Mar 2014 22:35:14 +0900 Subject: [PATCH] adding code. --- .../src/jp/igapyon/jcfa/JavaClassFileAnalyzer.java | 46 +++++++++++++++++++++- jcfa/src/jp/igapyon/jcfa/util/JcfaEclipseUtil.java | 3 ++ jcfa/src/jp/igapyon/jcfa/vo/JcfaClass.java | 9 +++++ 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/jcfa/src/jp/igapyon/jcfa/JavaClassFileAnalyzer.java b/jcfa/src/jp/igapyon/jcfa/JavaClassFileAnalyzer.java index 858b267..6a0957a 100644 --- a/jcfa/src/jp/igapyon/jcfa/JavaClassFileAnalyzer.java +++ b/jcfa/src/jp/igapyon/jcfa/JavaClassFileAnalyzer.java @@ -3,6 +3,7 @@ package jp.igapyon.jcfa; import java.io.File; import java.io.IOException; +import jp.igapyon.jcfa.util.JcfaEclipseUtil; import jp.igapyon.jcfa.util.JcfaUtil; import jp.igapyon.jcfa.vo.JcfaClass; import jp.igapyon.jcfa.vo.JcfaField; @@ -54,8 +55,8 @@ public class JavaClassFileAnalyzer { jcfaUnit.setTargetFile(new File(actualyTargetDir, split[split.length - 1] + ".jcfa")); - - + + writeToFile(jcfaUnit); } catch (ClassFormatException e) { e.printStackTrace(); } catch (IOException e) { @@ -63,6 +64,47 @@ public class JavaClassFileAnalyzer { } } + private void writeToFile(final JcfaUnit jcfaUnit) { + final StringBuffer result = new StringBuffer(); + for (JcfaClass jcfaClass : jcfaUnit.getClassList()) { + writeToBuffer(jcfaClass, result); + } + + System.out.println(JcfaEclipseUtil.formatSource(result.toString())); + } + + private void writeToBuffer(final JcfaClass jcfaClass, + final StringBuffer result) { + result.append(jcfaClass.getAccess()); + result.append(" class " + jcfaClass.getLocalName()); + if (jcfaClass.getExtendsName() != null + && jcfaClass.getExtendsName().length() > 0 + && jcfaClass.getExtendsName().equals("java.lang.Object") == false) { + result.append(" extends " + jcfaClass.getExtendsName()); + } + result.append("{"); + + for (JcfaField jcfaField : jcfaClass.getFieldList()) { + writeToBuffer(jcfaField, result); + } + + for (JcfaMethod jcfaMethod : jcfaClass.getMethodList()) { + writeToBuffer(jcfaMethod, result); + } + + result.append("}"); + } + + private void writeToBuffer(final JcfaField jcfaField, + final StringBuffer result) { + + } + + private void writeToBuffer(final JcfaMethod jcfaMethod, + final StringBuffer result) { + + } + private void analyzeFields(final JavaClass jc, final JcfaClass jcfaClass) { final org.apache.bcel.classfile.Field[] fields = jc.getFields(); for (int indexField = 0; indexField < fields.length; indexField++) { diff --git a/jcfa/src/jp/igapyon/jcfa/util/JcfaEclipseUtil.java b/jcfa/src/jp/igapyon/jcfa/util/JcfaEclipseUtil.java index ec8e6a7..fe3510a 100644 --- a/jcfa/src/jp/igapyon/jcfa/util/JcfaEclipseUtil.java +++ b/jcfa/src/jp/igapyon/jcfa/util/JcfaEclipseUtil.java @@ -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); diff --git a/jcfa/src/jp/igapyon/jcfa/vo/JcfaClass.java b/jcfa/src/jp/igapyon/jcfa/vo/JcfaClass.java index a4e6bc5..e2f428d 100644 --- a/jcfa/src/jp/igapyon/jcfa/vo/JcfaClass.java +++ b/jcfa/src/jp/igapyon/jcfa/vo/JcfaClass.java @@ -47,4 +47,13 @@ public class JcfaClass extends JcfaNode { public List getMethodList() { return methodList; } + + /** + * + * @return + */ + public String getLocalName() { + final String[] split = name.split("\\."); + return split[split.length - 1]; + } } -- 2.11.0