• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

一段用于统计原代码行数的scala脚本

JAVA相关 水墨上仙 2186次浏览

一段用于统计原代码行数的scala脚本

#!/bin/sh
exec /opt/analysis/analysis "$0" "$@"
!#

import scalax.file._
import scalax.file.ImplicitConversions._

val dirs  = if (args.size>0) args.toList else List(".")
val exts = List(
   "scala","xml","drl","java","ksh","sh","sql","sbt","properties","conf"
 )
 
val excludes = List( "/examples/", "/target/").map(_.r)

case class Result(source:Path, from:String) {
 lazy val lines = source.lines().size
 val ext = source.name.split("[.]").last
}

val sources:List[Result] = 
  for {
    dir <- dirs
    found <- (dir ** "*.*").filter(_.isFile).toList
       if !excludes.exists(_.findFirstIn(found.path).isDefined)
       if exts.exists(ext => found.name.endsWith("."+ext))
  } yield Result(found, dir)
  
def showstat4(sources:List[Result], title:String) {
  println("----------------------------")
  println(title)
  val lines=sources.map(_.lines).sum
  println(s"global lines count : $lines (in ${sources.size} files)")

  for {
    (ext, sources4ext) <- sources.groupBy(_.ext)
  } {
      val count = sources4ext.map(_.lines).sum
      println(s"lines count for $ext : $count (in ${sources4ext.size} files)")
  }
}

showstat4(sources, "All directories")
for {(dir, sources4dir) <- sources.groupBy(_.from) if dirs.size>1 }
  showstat4(sources4dir, s"For directory : $dir") 


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明一段用于统计原代码行数的scala脚本
喜欢 (0)
加载中……