统计项目里某一语言的代码行数

1,递归遍历文件目录。
保存:在需要递归的目录里放sh文件。
运行时:bash filename.sh

#!/bin/bash  
  
# $1是运行脚本时,输入的第一个参数,这里指的是使用者希望搜索的目录  
# 下面的代码是对目录进行判断,如果为空则使用脚本所在的目录;否则,搜索用户输入的目录  
if [[ -z "$1" ]] || [[ ! -d "$1" ]]; then  
    echo "The directory is empty or not exist!"  
    echo "It will use the current directory."  
    nowdir=$(pwd)  
else  
    nowdir=$(cd $1; pwd)  
fi  
echo "$nowdir"  
 
#INF=$(echo -en "\n\b") 

# 递归函数的实现  
function SearchCfile()  
{  
        cd $1  
    for dirname in *
        do  
            if [[ -d "$dirname" ]];then  
                #echo "dir:$dirname"
            #mv "$dirname" `echo "$dirname" | tr ' |  |(|)' '_'`
            #echo "dir:$dirname"
                    cd $dirname
                    #SearchCfile 这里有bug,跳转到根目录了  
                    #这里把当前的目录作为参数输入  
                    SearchCfile $(pwd)  
                    cd .. 
            else 
                echo "file:$dirname"
                if [ "${dirname##*.}" = "gz" ]; then
                    cloc ./*.tar.gz
                fi;
            fi;  
     done;  
}  
  
# 调用上述递归调用函数  
SearchCfile $nowdir 

2,统计代码行数:安利cloc工具。
运行:bash filename.sh>output.txt
统计结果将会保存至txt文件中。
3,根据自己的需求,统计某一种语言的代码行数。

#!/bin/bash
cat output.txt | while read line
do
    if [[ $line =~ ^Verilog-SystemVerilog ]];then
        echo ${line##* }
    fi;
done

运行:bash filename.sh>result.txt
统计结果将会每一项目的代码行数保存至txt文件中。
4,java中对代码行数求和即可。

package codeCount;

import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;

import java.io.*;

import static java.awt.SystemColor.text;

public class getCount {
    public static int readTxtFile(File fileName)throws Exception {
        int rs=0;
        //String result=null;
        FileReader fileReader = null;
        BufferedReader bufferedReader = null;
        try {
            fileReader = new FileReader(fileName);
            bufferedReader = new BufferedReader(fileReader);
            try {
                String read = null;
                while ((read = bufferedReader.readLine()) != null) {
                    //result=result+read+"\r\n";
                    //System.out.println(read);
                    rs += Integer.parseInt(read);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (bufferedReader != null) {
                bufferedReader.close();
            }
            if (fileReader != null) {
                fileReader.close();
            }
        }
        //775419
        //System.out.println("代码总行数:"+rs);
        //return result;
        return rs;
    }
    public static void main(String[] args) throws Exception {
        File vhdl=new File("/home/hadoop/IdeaProjects/count_Log_Mail/src/main/java/codeCount/vhdl.txt");
        File verilog=new File("/home/hadoop/IdeaProjects/count_Log_Mail/src/main/java/codeCount/Verilog.txt");
        File vhdl_verilog=new File("/home/hadoop/IdeaProjects/count_Log_Mail/src/main/java/codeCount/vhdl_verilog.txt");

        int vhdlCount = readTxtFile(vhdl);
        System.out.println("vhdl代码总行数:"+vhdlCount);
        int verilogCount = readTxtFile(verilog);
        System.out.println("verilog代码总行数:"+verilogCount);
        int vhdl_verilogCount = readTxtFile(vhdl_verilog);
        System.out.println("vhdl_verilog代码总行数:"+vhdl_verilogCount);
        //vhdl代码总行数:775419
        //verilog代码总行数:519133
        //vhdl_verilog代码总行数:1636965


    }

}

你可能感兴趣的:(统计项目里某一语言的代码行数)