我正在做一个《Test-Driven Development By Example》第17章中的统计小程序,其中要求统计出.java文件中的方法个数,可是我连怎么识别方法都不知道,怎么统计个数?望大家指教

解决方案 »

  1.   

    可以根据方法的语法来判断吧.
    MethodDeclaration:
    MethodHeader MethodBodyMethodHeader:
    MethodModifiersopt TypeParametersopt ResultType MethodDeclarator 
    Throwsopt
    ResultType:
    Type
    voidMethodDeclarator:
    Identifier ( FormalParameterListopt )
    按这种格式去判断
      

  2.   

    可以从方法的最基本特征入手.java方法的最显著特征就是 返回类型 + 参数列表,这也是只有方法才有的特征.成员变量没有参数列表.所以你从一个class里寻找 返回类型后跟一个方法名,然后跟小括号的结构.当你搜索到一个方法开始的时候,就找对应的后大括号.这个用正则表达式做比较好,可是需要有相当的功底.
      

  3.   

    不知哪位能够说的详细一点啊,我的java基础不是很好编译原理也没有学过。
    如果大家能够给出源代码实现就好了。
    还有一个问题就是:Cyclomatic complexity,不知是不是循环复杂度的意思,如果是的话,如何计算循环复杂度呢?
      

  4.   

    谢谢bigbug9002,那我就用正则来做啦,还要学习正则表达式,估计一下子搞不定了,慢慢来吧。呵呵~~
      

  5.   

    你怕是要用一个栈来找到"/*",之后,继续找到"*/"时出栈.栈空时,再用正则找到方法.String regex="(?s)^[^\\\\]*?\\w+\\(\\)[\\w\\s\\n]*?{";用这个正则应该可以找到到一个方法.
      

  6.   

    改一下正则:
    String regex="(?s)^[^\\\\]*?\\w+\\(.*?\\)[\\w\\s\\n]*?{"; 
    你试试吧。