`
lucene3212
  • 浏览: 138044 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

统计9645

    博客分类:
  • java
阅读更多
    require 'find'
def remark str,type
  if str.strip[0] == type
    return 1
  end
  str1 = str
  string = ""
  while index = str.index(type)#<=>0yfufuyfy
    string << str[0..index-1]
   
    num = string.count("\'")%2+string.count("\"")%2+(string.count("\[")-string.count("\]")).abs+(string.count("\{")-string.count("\}")).abs+(string.count("\(")-string.count("\)")).abs
    if num == 0
      return 2
    end
    str = str[index+1..-1]
  end
  return 0
end
def place i,record,singnum,blankline,tow,benum,ennum,type,tybegin,tyend,mark = 0
  #puts mark
  #puts "hello"
  if mark == 0
    #puts "beign"
    if i.chomp == tybegin
      benum << record
    elsif i.chomp == tyend
      ennum << record
    elsif remark(i,type) == 1
      singnum << record
    elsif remark(i,type) == 2
      singnum << record
      $two += 1
    elsif i.chomp == ""
      blankline << record
    end
  end
  if mark != 0
    #puts "end"
    if remark(i,tybegin)== 1
      benum << record
    elsif remark(i,tybegin)== 2
      benum << record
      $two += 1
    elsif  i.index(tyend) == i.length - tyend.length - 1
      ennum << record     
    elsif i.include? tyend and i.index(tyend) != i.length - tyend.length - 1
      puts "inde"
      ennum << record
      $two += 1
    elsif remark(i,type) == 1
      singnum << record
    elsif remark(i,type) == 2
      singnum << record
      $two += 1
    elsif i.chomp == ""
      blankline << record
    end
  end 
end

def type str
  string = file.basename(str).reverse
  if index = string.index('.')
    type = string[0,index].reverse
  end
  type
end

def snum benum,ennum,record #bjkbiugkjbvfvuy
  num = []
  benum.sort!
  ennum.sort!
  belength = benum.length
  enlength = ennum.length
  i = 0
  j = 0
  if belength > 0
    if enlength == 0
      num << benum[0] << record
    end
    while j < enlength
      if benum[0] < ennum[j]###viuvui
        num << benum[i] << ennum[j]
        i +=1
        j += 1
        puts num
        puts i,j
        break
      else j += 1        
      end
    end
    while i <belength and j < enlength
      if benum[i] < ennum[j] and benum[i] > ennum[j-1]
        num << benum[i] << ennum[j]
        i += 1
        j += 1
      else j += 1
      end
    end
    if i < j 
      num << benum[i] << record
    end
    return num
  end
  return num
end
def countannotations record,singnum,benum,ennum,blankline
  arrnum = snum(benum,ennum,record)
  print singnum.length
  annotations = 0
  annotations  += singnum.length
  if arrnum.length > 0
    arrnum.length.times{|i|
      if i%2 == 1
      annotations = annotations+arrnum[i].to_i-arrnum[i-1].to_i+1 
    end
    }
   puts "annotations :#{annotations}"
    i = 0
    arrnum.sort!
    for i in (0..arrnum.length-1)
    if i%2 == 1
        if singnum.length > 0
         
          for j in (0..singnum.length-1)
            puts "times#{singnum[j]}"
            puts "times#{arrnum[i-1]}"
            if singnum[j] < arrnum[i] and singnum[j] > arrnum[i-1]
              puts "gengoiwengownego",arrnum[i-1]
              annotations -= 1
            end
          end
        end
        if blankline.length > 0
          blankline.length.times{|j|
            if blankline[j]< arrnum[i] and blankline[j]> arrnum[i-1]
              annotations -= 1
            end
          }
        end
      end
      i += 1
    end
  end
  print "the all code:#{record}\t"
  print "the fact code:#{record-annotations-blankline.length+$two}\t"
  print "the blank line:#{blankline.length}\t"
  print "the annotations:#{annotations}\t"
  $codeall += record-annotations-blankline.length+$two
  $blankal += blankline.length
  $annall  += annotations
  $all     += record
end
dir = gets.chomp
patharr = []
$codeall = 0
$blankal = 0
$all = 0
$annall = 0
find.find('d:/') do |path|
  if ["rb","c","cpp","cpp","java"].include? type(path)
   
    file = file.read(path)
    benum = []
    ennum = []
    singnum = []
    blankline = []
    record = 0
    $two = 0
    sing = ""
    tybegin = ""
    tyend = ""
    if ["c","cpp","cpp","java"].include? type(path)
      sing = '//'
      tybegin = '/*'
      tyend = '*/'
      mark = 1
    else
      sing = "#"
      tybegin = '=begin'
      tyend = '=end'
      mark = 0     
    end
   
    file.each_line{|i|
      record += 1
      place i,record,singnum,blankline,$tow,benum,ennum,sing,tybegin,tyend,mark#,"begin"
=begin
      if i.chomp == "=begin"
        benum << record
      elsif i.chomp == "=end"
        ennum << record
      elsif remark(i) == 1
        singnum << record
      elsif remark(i) == 2
        singnum << record
        $two += 1
      elsif i.chomp == ""
        blankline << record
      end
=end
    }
   print type(path),"\t"
    countannotations record,singnum,benum,ennum,blankline
    puts path
  end
end
puts "the all factcode   :#{$codeall}"
      puts "the all blankal    :#{$blankal} "
      puts "the all annotations:#{$annall}"
      puts "the all code       :#{$all}"
 
0
5
分享到:
评论

相关推荐

    代码统计工具 可统计项目行数

    可用于对VC++、C++ Builder、Delphi、VB、C/C++、ASM、Java、C#、SQL 等程序源码进行详细的统计,可以准确的分析出程序中代码行、注释行和空白行的行数。程序会自动根据你选择的文件类型选择相应的统计方式,并将...

    统计数模历年优秀论文-全国大学生统计建模大赛

    为在大学生中倡导学习统计、应用统计的良好氛围,促进大学生关注经济社会热点难点问题,适应大数据时代下高校及统计部门对统计人才的培养要求,中国统计教育学会、全国应用统计专业学位研究生教育指导委员会联合举办...

    国家统计局统计用行政区划代码2020版(全国)

    为更好满足2020年常规统计调查和专项调查的需要,国家统计局组织开展了2019年度统计用区划代码和城乡划分代码更新维护工作,调查时点为2019年10月31日。目前,已完成更新维护工作,现予公布。  2019年统计用区划代码...

    (1949-2022年期间)中国教育统计年鉴

    (1949-2022年期间)中国教育统计年鉴(1949-2022年期间)中国教育统计年鉴(1949-2022年期间)中国教育统计年鉴(1949-2022年期间)中国教育统计年鉴(1949-2022年期间)中国教育统计年鉴(1949-2022年期间)中国...

    冰雨数理统计器

    "冰雨数理统计器"是一款专为统计分析设计的软件工具,主要服务于那些需要进行大量数据处理和统计计算的用户。它集成了多种数理统计方法,可以帮助用户快速理解和解释数据,从而在科研、教育、商业等领域发挥重要作用...

    字数统计工具,统计文字字数

    在IT行业中,文本处理是一项基础且重要的任务,而字数统计是其中不可或缺的一环。"字数统计工具"就是专为此目的设计的应用程序,能够帮助用户快速准确地计算出一段文字或文档中的字符数,这对于写作、编辑、排版、...

    统计思维-程序员数学之概率统计源码

    《统计思维-程序员数学之概率统计》是一本深入浅出介绍概率统计的书籍,特别针对程序员这一群体进行了定制,旨在帮助他们理解并运用统计方法解决实际问题。这本书的源码是用Python编程语言编写的,这使得理论知识与...

    ENVI下的统计分析功能

    ### ENVI下的统计分析功能详解 #### 一、概述 ENVI是一款强大的遥感图像处理软件,它提供了丰富的工具和算法来支持各种图像处理任务,包括图像校正、分类、特征提取以及统计分析等。其中,统计分析功能是ENVI中的一...

    MTDriver盈亏统计指标1.93.rar_MT4 盈亏统计_MT4盈亏统计_mt driver eazhijia_mtdri

    MT4盈亏统计指标,最新版本可统计每天的盈利和浮亏,非常实用

    小丽君统计器

    "小丽君统计器"是一款源自网络的数据统计工具,它以其实用性和广泛的应用范围而受到用户的欢迎。这款软件主要用于各种数据的统计分析,尤其在处理特定类型的数据时,如肖、五行、号码、头、尾、波、合数等方面表现...

    代码规模统计工具代码规模统计工具

    代码规模统计工具代码规模统计工具代码规模统计工具代码规模统计工具代码规模统计工具代码规模统计工具代码规模统计工具代码规模统计工具代码规模统计工具代码规模统计工具代码规模统计工具代码规模统计工具代码规模...

    代码行数统计工具

    标题提到的“代码行数统计工具”是专门用于计算源代码文件中行数的实用程序,适用于各种项目。这种工具能够帮助开发者、项目经理和质量保证人员了解项目的整体状况,进行进度跟踪、资源规划和复杂性分析。 代码行数...

    李东风 R 语言、SAS、概率统计、统计计算、LaTeX、Maxima

    本文将深入探讨李东风教授分享的R语言、SAS、概率统计、统计计算、LaTeX以及Maxima的相关知识点。 首先,R语言是一种广泛使用的开源编程语言和环境,特别适合进行数据处理、统计分析和可视化。R语言教程中,李东风...

    axure统计图表模板 统计图表.rplib

    axure统计图表模板

    统计分布_方开泰

    《统计分布_方开泰》是一本专注于统计分布理论与应用的书籍,旨在帮助读者深入理解和掌握统计学的核心概念,特别是在多元统计学习中的应用。统计分布是统计学的基础,它描述了随机变量可能出现的各种结果及其概率...

    InDesign cs6整个文档字数统计脚本

    《InDesign CS6 整个文档字数统计脚本详解》 Adobe InDesign CS6是一款专业级别的排版软件,广泛应用于出版、广告设计等领域。在处理大量文本内容时,了解文档的字数统计是一项非常重要的任务,这有助于优化文本...

    《贝叶斯统计》电子书

    《贝叶斯统计》是一本深入探讨贝叶斯方法在统计学中应用的电子书,它为我们揭示了在处理不确定性问题时,如何运用概率论来更新我们的信念。这本书的出现,源于统计学领域中对传统统计理论与贝叶斯统计理论的长期讨论...

    C#代码统计工具

    在IT行业中,编程语言的代码统计是一项常见的任务,它能够帮助开发者评估项目规模,了解代码质量,以及在软件维护和优化时提供参考数据。本文将详细介绍一个专为C#项目设计的代码统计工具,该工具简化了代码行数的...

    pdf与文本文档字数统计

    在IT行业中,字数统计是一项基础但至关重要的任务,尤其对于文档处理和内容分析而言。本文将详细探讨如何对PDF和文本文档进行字数、单词及符号统计,并提供相关工具和技术的介绍。 首先,我们要了解PDF(Portable ...

Global site tag (gtag.js) - Google Analytics