社区应用 最新帖子 精华区 社区服务 会员列表 统计排行 博客 左右分栏 |帮助
主题 : XCODE 脚本:项目行数统计
级别: 光明使者

UID: 4967
精华: 1
发帖: 732
可可豆: 101122 CB
威望: 3697 点
贡献值: 0 点
交易币: 0
iChat:
GTalk: xhan87@gmail.com
在线时间: 353(时)
注册时间: 2009-04-19
最后登录: 2010-09-02
0 楼:  发表于: 2009-09-15   
来源于 通用代码 分类

XCODE 脚本:项目行数统计

统计项目行数,从某方面也可以陶醉下自己项目规模。
暴力推荐无聊发呆时候使用。

这个从自己一个最早期Rails项目中剥离出来,虽然简单,不过勉强能用了。
使用方法:打开脚本编辑器。添加新脚本。拷贝代码,OutPut 选择 display in alert
That's all , Enjoy!
 
#!/usr/bin/env ruby
 
# description: Count code lines in project
# Copyright by [email]xhan87@gmail.com[/email]
# Sep 15 , 2009
 
 
##
##  this is designed to calculate the total lines of codes in your project
##  version 2 @May 24, 2009
##  \- add file filter ,count specific file types add 
##  version 1 @october 8th,2008 
 
 
 
module Enumerable
  # function to get total lines from a file
  def total_lines
    lines = 0
    each_with_index {|content,lines|}
    return lines+1
  end
end
 
 
class CheckLines
  require 'find'
 
  CheckType = %w{m h c cpp mm}.freeze
 
  def initialize(directory)
    @total_lines = 0
    if  File.directory?(directory)
          @directory = directory 
          @contents = {}
          @content_type ={}
          CheckType.each {|ext| @content_type[ext.to_sym]=0}
          self.go
    else puts "#{directory} is not a directory! check it out!" and return
    end
  end
 
  def go
    if @directory
      Find.find @directory do |path|
        pathlite = path.gsub(@directory,'')
        if File.file?(path)  && is_check_file(path)
          File.open path do |f|
              tmp_line = f.total_lines  
             @contents.store(pathlite,tmp_line)
             @content_type[(path.sub(/.*\./,'').to_sym)] += tmp_line
             @total_lines += tmp_line
          end
        end
      end
      puts "Total Code Lines:#{@total_lines}"
      puts "Total Files #{@contents.keys.size}"
      @content_type.each_pair {|key,value| puts "#{key} : #{value}"}
    end
  end
 
  def is_check_file file_name
    CheckType.any? do |ext|
      !file_name.scan(/\.#{ext}$/).empty?
    end
  end                        
 
  def details
    @contents.each do |key,value|
      puts "#{key} file has lines of #{value}"
    end
  end
end
 
# s=CheckLines.new("/Users/xhan/Codes/plutocms")
 
project_path = `%%%{PBXUtilityScriptsPath}%%%/AskUserForFolderDialog "Select A Project Home Folder"`
#puts project_path
CheckLines.new(project_path[0..-2]) unless project_path.empty?
 
 
级别: 光明使者

UID: 4967
精华: 1
发帖: 732
可可豆: 101122 CB
威望: 3697 点
贡献值: 0 点
交易币: 0
iChat:
GTalk: xhan87@gmail.com
在线时间: 353(时)
注册时间: 2009-04-19
最后登录: 2010-09-02
1 楼:  发表于: 2009-09-16   
效果图:

清空我的评分动态本帖最近评分记录: 共可可豆条评分记录
隐藏评分记录
级别: 论坛版主

UID: 349
精华: 6
发帖: 1185
可可豆: 848 CB
威望: 10008 点
贡献值: 0 点
交易币: 0
iChat:
GTalk:
在线时间: 1901(时)
注册时间: 2008-07-29
最后登录: 2010-09-02
2 楼:  发表于: 2009-09-16   
不错不错, 之前都是用bash搞定的
级别: 论坛版主

UID: 349
精华: 6
发帖: 1185
可可豆: 848 CB
威望: 10008 点
贡献值: 0 点
交易币: 0
iChat:
GTalk:
在线时间: 1901(时)
注册时间: 2008-07-29
最后登录: 2010-09-02
3 楼:  发表于: 2009-09-16   
terminal里面
find . -name '*.m' -exec cat {} \; | wc -l
find . -name '*.h' -exec cat {} \; | wc -l
也可以获得, 嘿嘿
级别: 骑士
UID: 1239
精华: 0
发帖: 193
可可豆: 1930 CB
威望: 1687 点
贡献值: 0 点
交易币: 0
iChat:
GTalk:
在线时间: 195(时)
注册时间: 2008-11-06
最后登录: 2010-09-02
4 楼:  发表于: 2009-09-16   
回 3楼(透明de面具) 的帖子
还是这个来的亲切
http://www.quaful.com

厚积薄发
级别: 光明使者

UID: 4967
精华: 1
发帖: 732
可可豆: 101122 CB
威望: 3697 点
贡献值: 0 点
交易币: 0
iChat:
GTalk: xhan87@gmail.com
在线时间: 353(时)
注册时间: 2009-04-19
最后登录: 2010-09-02
5 楼:  发表于: 2009-09-16   
BASH 实在强大。。
级别: 论坛版主

UID: 491
精华: 5
发帖: 10000
可可豆: 60014103 CB
威望: 86853 点
贡献值: 804 点
交易币: 0
iChat: 0
GTalk: 0
在线时间: 5019(时)
注册时间: 2008-08-19
最后登录: 2010-09-03
6 楼:  发表于: 2009-09-17   
一直都是直接wc空格加星星过来的。。。
在CocoaChina讨论的艺术

Love is patient.  愛是恒久忍耐。 --《新约·哥林多前书》第13章

从来不报任何希望,所以从来不失望 - Lv@CC
级别: 光明使者

UID: 4967
精华: 1
发帖: 732
可可豆: 101122 CB
威望: 3697 点
贡献值: 0 点
交易币: 0
iChat:
GTalk: xhan87@gmail.com
在线时间: 353(时)
注册时间: 2009-04-19
最后登录: 2010-09-02
7 楼:  发表于: 2009-10-02   
``555555   ~~~被鄙视了。
级别: 论坛版主

UID: 491
精华: 5
发帖: 10000
可可豆: 60014103 CB
威望: 86853 点
贡献值: 804 点
交易币: 0
iChat: 0
GTalk: 0
在线时间: 5019(时)
注册时间: 2008-08-19
最后登录: 2010-09-03
8 楼:  发表于: 2009-10-02   
引用
引用第7楼xhan于2009-10-02 10:36 PM发表的  :
``555555   ~~~被鄙视了。


858585

绝对没有鄙视的意思哦
在CocoaChina讨论的艺术

Love is patient.  愛是恒久忍耐。 --《新约·哥林多前书》第13章

从来不报任何希望,所以从来不失望 - Lv@CC
级别: 新手上路
UID: 16444
精华: 0
发帖: 27
可可豆: 270 CB
威望: 270 点
贡献值: 0 点
交易币: 0
iChat:
GTalk:
在线时间: 76(时)
注册时间: 2010-03-30
最后登录: 2010-09-02
9 楼:  发表于: 05-26   
引用
引用楼主xhan于2009-09-15 23:57发表的 XCODE 脚本:项目行数统计 :
统计项目行数,从某方面也可以陶醉下自己项目规模。
暴力推荐无聊发呆时候使用。

这个从自己一个最早期Rails项目中剥离出来,虽然简单,不过勉强能用了。
使用方法:打开脚本编辑器。添加新脚本。拷贝代码,OutPut 选择 display in alert
.......


打开脚本编辑器 编辑器在哪里打开,新手请教
描述
快速回复


[emoji输入] (例如:)
验证问题:
论坛的名字?(小写) 正确答案:cocoachina
按"Ctrl+Enter"直接提交