• 解析java源文件


    尝试从java源文件中解析出类、方法、属性等信息,但下面的代码没有完全实现。

    Sub parseJava() Dim package_name as String 'read a file Documents.Open FileName:="f:CommandCm.java", ConfirmConversions:=False, ReadOnly:=True paraNo = ActiveDocument.Paragraphs.Count For lineNo = 1 To paraNo Set curParaWords = ActiveDocument.Paragraphs(lineNo).Range.Words Dim strCurPara as String strCurPara = ActiveDocument.Paragraphs(lineNo).Range.Text If InStr(strCurPara, "package")=1 Then '包名是package后、分号前的部分 tmpStr = Right(strCurPara,Len(strCurPara)-Len("package")-1) package_name = Left(tmpStr, Len(tmpStr)-2) End If If InStr(strCurPara, "public class")=1 Then '类名是这一行的第三个单词,且不含末尾空格 class_name = RTrim(curParaWords(3).Text) End If If InStr(strCurPara, "public interface")=1 Then '接口名是这一行的第三个单词,且不含末尾空格 class_name = RTrim(curParaWords(3).Text) End If Select Case curParaWords(2).Text Case "public"

    Case "private" Case "protected" Case Else End Case If curParaWords(2)="public" Then '接口名是这一行的第三个单词,且不含末尾空格 class_name = RTrim(ActiveDocument.Paragraphs(lineNo).Range.Words(3).Text) End If Next lineNo ActiveDocument.Close End Sub

    下面是业务逻辑:

    数据结构:

    类相关数据表ClassInfo(Map)

    key: name, description, class_name, package, extends, interface;

    属性数据表PropInfo(List

    方法数据表MethodInfo(List

    文本格式约定:

    顶格、package起首代码行为package声明行;

    顶格、public class起首的代码行是类声明行;

    顶格、 public interface起首的代码行是接口声明行;

    一个tab后跟public、private、protected是方法或者属性

    有左括号的是方法, 左括号前单词是方法名,方法名前是返回值的数据类型;

    无左括号 的是 属性,等号左边单词是属性名,若无等号分号前单词是属性名,若都没有输出一条 “文件名:行号:异常属性/方法,手工提取” 提示;

    一个tab后跟其他字母 输出一条“文件名:行号:异常属性/方法,手工提取”提示;

    一个tab后跟非字母符号(如/*是注释,@是编译标志)略过;

    流程:

    用户输入目标目录

    将文件名保存在ClassInfo.name和class_name中;

    加载该目录下所有java文件, 对于一个java文件:

    第一次文本逐行读取:提取除方法/属性说明外所有信息;

    第二次文本逐行读取:寻找以“* 方法名”开始的行,作为方法说明,放入对应的方法Map中;

  • 相关阅读:
    node.js简单的服务器
    简单的分页1
    定时跳转
    初始化多个vue实例对象
    js获取验证码的方法
    [z]Java代理(jdk静态代理、动态代理和cglib动态代理)
    .net操作word lib DocX
    git常用命令
    [z]查表空间使用情况
    [z]oracle job
  • 原文地址:https://www.cnblogs.com/darkmatter/p/3606796.html
Copyright © 2020-2023  润新知