国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Git統(tǒng)計代碼行數(shù);Java實(shí)現(xiàn)統(tǒng)計代碼行數(shù),忽略空行、注釋行

這篇具有很好參考價值的文章主要介紹了Git統(tǒng)計代碼行數(shù);Java實(shí)現(xiàn)統(tǒng)計代碼行數(shù),忽略空行、注釋行。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

前言

某天,產(chǎn)品叫我算下某個項(xiàng)目的代碼行數(shù),我一愣,這怎么統(tǒng)計?總不可能一個文件一個文件算吧?后面我找了下,git是可以統(tǒng)計提交到倉庫的所有的代碼的,不過有個問題,就是假如有些文件我不想算進(jìn)去怎么辦?之后我再查了下,可以只統(tǒng)計指定文件類型的代碼的。

Git統(tǒng)計代碼行數(shù)

在指定項(xiàng)目文件夾里,打開git命令窗口,執(zhí)行下面的命令(直接復(fù)制)

1、統(tǒng)計所有行數(shù)

git log --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { 
printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'

或者

git ls-files | xargs cat | wc -l

上面兩個命令只統(tǒng)計行數(shù),沒有細(xì)分到文件,下面這個命令是會把每個文件都列出來,并統(tǒng)計每個文件的行數(shù)。

 git ls-files | xargs wc -l

2、統(tǒng)計指定文件類型的行數(shù)

find . "(" -name "*.java" -or -name "*.xml" -or -name "*.yml" -or -name "*.properties" ")" -print | xargs wc -l

git統(tǒng)計代碼行數(shù)不算空行,工具類,git,java,github
這個命令會打印出文件和對應(yīng)的行數(shù)。

3、統(tǒng)計某個用戶的代碼量

git log --author="username" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { 
printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'

4、統(tǒng)計某個時間段內(nèi)的代碼量

git log --since=2022-12-06 --until==2022-12-07 --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { 
printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'

--since:起始時間,--until:終止時間

5、統(tǒng)計某個用戶某個時間段內(nèi)的代碼量

git log --since =2022-12-06 --until==2022-12-07 --author="username" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { 
printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'

還有其他命令,可以參考下 這篇文章 ,比較全。

Java實(shí)現(xiàn)統(tǒng)計代碼行數(shù)

Git可以統(tǒng)計代碼行數(shù),但是如果我不想要空行和注釋行也算進(jìn)去怎么辦?我找了下,好像沒有命令可以忽略空行或注釋行,既然Git不行,那我們就自己用代碼實(shí)現(xiàn)統(tǒng)計。


要統(tǒng)計總代碼量,得遍歷這個項(xiàng)目下的全部文件,然后讀取文件內(nèi)容,遍歷每一行的內(nèi)容,如果是空行或者注釋行就忽略。

實(shí)現(xiàn)

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class 統(tǒng)計代碼行數(shù) {

    private static long 空行數(shù) = 0;
    private static long 注釋行數(shù) = 0;
    private static long 代碼行數(shù) = 0;
    private static long 總行數(shù) = 0;

    public static void main(String[] args) {
    	// 這里只統(tǒng)計 \src\main 文件夾里的文件,其他文件像 .idea、test 這些文件夾里的就不算進(jìn)去了
        循環(huán)文件夾("D:\\Java\\workspace\\AssetsJava","\\src\\main\\");
        System.out.println("空行:" + 空行數(shù));
        System.out.println("注釋行:" + 注釋行數(shù));
        System.out.println("代碼行:" + 代碼行數(shù));
        System.out.println("總行:" + 總行數(shù));
    }

    private static void 循環(huán)文件夾(String 項(xiàng)目路徑,String 只統(tǒng)計指定文件夾) {
        File f = new File(項(xiàng)目路徑);
        if (!f.exists()){
            System.out.println("項(xiàng)目路徑不存在!");
            return;
        }
        File[] childs = f.listFiles(); // 獲取這個項(xiàng)目下的文件、文件夾
        for (int i = 0; i < childs.length; i++) {
            File child = childs[i];
            if (!child.isDirectory()) { // 當(dāng)前文件不是文件夾,就讀取
                if (child.getParent().contains(只統(tǒng)計指定文件夾)){ // java文件、xml文件、配置文件 只統(tǒng)計main文件夾下的
                    if (child.getName().matches(".*\\.java$") || child.getName().endsWith(".yml") ||
                            child.getName().endsWith(".properties") || child.getName().endsWith(".xml")) {
                        long 單個文件代碼行數(shù) = 統(tǒng)計代碼行數(shù)(child);
                        System.out.println(單個文件代碼行數(shù)+"\t\t"+child.getName());
                    }
                }else if ("pom.xml".equals(child.getName())){
                    long 單個文件代碼行數(shù) = 統(tǒng)計代碼行數(shù)(child);
                    System.out.println(單個文件代碼行數(shù)+"\t\t"+child.getName());
                }
            }else { // 當(dāng)前文件是文件夾,繼續(xù)遞歸
                循環(huán)文件夾(child.getPath(),只統(tǒng)計指定文件夾);
            }
        }
    }

    private static long 統(tǒng)計代碼行數(shù)(File file){
        long 單個文件代碼行數(shù) = 0;
        BufferedReader br = null;
        try{
            br = new BufferedReader(new FileReader(file));
            String line = "";
            boolean flag = false; // 用于標(biāo)記xml多行注釋,為true表示當(dāng)前行在多行注釋中,一直到最后一行注釋
            while ((line = br.readLine()) != null){
                總行數(shù)++;
                String 內(nèi)容 = line.trim(); // 每一行的內(nèi)容,去掉空格
                if (flag){
                    注釋行數(shù)++;
                    // 當(dāng)多行注釋結(jié)尾是 --> 說明多行注釋結(jié)束,重新標(biāo)記為false,表示當(dāng)前不在統(tǒng)計多行注釋
                    if (內(nèi)容.endsWith("-->")) flag = false;
                }else {
                    if (內(nèi)容.length() == 0){
                        空行數(shù)++;
                    }else if (內(nèi)容.startsWith("http://") || 內(nèi)容.startsWith("/**") || 內(nèi)容.startsWith("*") ||
                            內(nèi)容.startsWith("*/") || 內(nèi)容.startsWith("/*") || 內(nèi)容.startsWith("#")){
                        注釋行數(shù)++;
                    }else if(內(nèi)容.startsWith("<!--")){
                        注釋行數(shù)++;
                        // 當(dāng)前行屬于xml的注釋,且結(jié)尾不是 --> 時,表示是多行注釋,設(shè)置標(biāo)記為true
                        if (!內(nèi)容.endsWith("-->")) flag = true;
                    }else {
                        代碼行數(shù)++;
                        單個文件代碼行數(shù)++;
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return 單個文件代碼行數(shù);
    }
}

統(tǒng)計結(jié)果

git統(tǒng)計代碼行數(shù)不算空行,工具類,git,java,github
git統(tǒng)計代碼行數(shù)不算空行,工具類,git,java,github
最后的總行數(shù),是和用Git統(tǒng)計的總行數(shù)對得上的。文章來源地址http://www.zghlxwxcb.cn/news/detail-784978.html

到了這里,關(guān)于Git統(tǒng)計代碼行數(shù);Java實(shí)現(xiàn)統(tǒng)計代碼行數(shù),忽略空行、注釋行的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Git統(tǒng)計個人提交代碼行數(shù)

    Git統(tǒng)計個人提交代碼行數(shù)

    在實(shí)際開發(fā)中,常常會想查看自己對于某個項(xiàng)目的貢獻(xiàn),管理者會查看項(xiàng)目下各成員的貢獻(xiàn),就需要使用到git的命令進(jìn)行代碼提交的統(tǒng)計。 進(jìn)入到自己的項(xiàng)目文件中,右鍵點(diǎn)擊Git Bash Here 打開后界面 這個統(tǒng)計是以當(dāng)前所在分支為基準(zhǔn)統(tǒng)計的,所以如果是迭代式的往后更迭,統(tǒng)

    2024年02月05日
    瀏覽(22)
  • 使用git log統(tǒng)計代碼行數(shù)

    在軟件開發(fā)過程中,代碼行數(shù)是一個非常重要的指標(biāo),可以用來衡量代碼的質(zhì)量和開發(fā)效率。Git是一個流行的版本控制系統(tǒng),它可以記錄和跟蹤代碼的修改歷史。通過使用Git,我們可以很容易地統(tǒng)計代碼行數(shù)。下面是一些常用的Git命令和解釋,用于統(tǒng)計代碼行數(shù)。 查看當(dāng)前分

    2023年04月15日
    瀏覽(24)
  • git使用-關(guān)于使用git命令統(tǒng)計整個項(xiàng)目的代碼行數(shù)、提交者貢獻(xiàn)統(tǒng)計等等

    可以使用以下命令來統(tǒng)計整個項(xiàng)目的代碼行數(shù): 這個命令會列出當(dāng)前git倉庫中所有的文件,然后將這些文件作為參數(shù)傳遞給 wc -l 命令,用于計算每個文件的行數(shù)。最終輸出的結(jié)果是整個項(xiàng)目的代碼行數(shù)。 請注意,這個命令只會計算代碼文件的行數(shù),不包括注釋、空白行和其

    2024年02月09日
    瀏覽(36)
  • 統(tǒng)計Git項(xiàng)目各成員貢獻(xiàn)量(代碼行數(shù)、提交次數(shù))

    統(tǒng)計Git項(xiàng)目各成員貢獻(xiàn)量(代碼行數(shù)、提交次數(shù))

    在項(xiàng)目的文件夾中,右鍵,選擇Git Bash Here 會彈出命令行框 使用下面的代碼去統(tǒng)計

    2024年02月11日
    瀏覽(23)
  • 使用Java統(tǒng)計gitlab代碼行數(shù)

    一、背景: ? ? ? ?需要對當(dāng)前公司所有的項(xiàng)目進(jìn)行代碼行數(shù)的統(tǒng)計 二、 可實(shí)現(xiàn)方式 ?? 1.腳本 :通過git腳本將所有的項(xiàng)目拉下來并然后通過進(jìn)行代碼行數(shù)的統(tǒng)計 ? 樣例: 將所有的項(xiàng)目進(jìn)行腳本處理之后便可以得到一張項(xiàng)目名稱,代碼行數(shù)的txt文件,因?yàn)橐远禾柗指艄兽D(zhuǎn)換

    2024年02月08日
    瀏覽(19)
  • 在 GitLab 中自動統(tǒng)計代碼行數(shù)

    在 GitLab 中,你可以在項(xiàng)目的 \\\"Settings\\\" 頁面中找到 \\\"Repository statistics\\\" 選項(xiàng)。點(diǎn)擊 \\\"Repository statistics\\\" 后,你就可以看到項(xiàng)目中代碼的行數(shù)統(tǒng)計信息了。這些信息是通過執(zhí)行 git blame 命令來獲取的,它會跟蹤每行代碼的最后一次修改者。 你也可以使用 GitLab 的 API 來獲取項(xiàng)目的代

    2024年02月11日
    瀏覽(19)
  • 代碼行數(shù)統(tǒng)計插件(Intellij IDEA 代碼統(tǒng)計插件 Statistic 詳細(xì)使用教程)

    代碼行數(shù)統(tǒng)計插件(Intellij IDEA 代碼統(tǒng)計插件 Statistic 詳細(xì)使用教程)

    在項(xiàng)目的開發(fā)過程中,你有沒有遇到以下的一些場景: 想統(tǒng)計一下整個項(xiàng)目的代碼量有多少,比如有多少源代碼文件,總體有多少行代碼,空行和注釋行各有多少? 想統(tǒng)計一下整個項(xiàng)目中各種類型的源代碼分別有多少,比如 java和 javascript各有多少? 想統(tǒng)計一下項(xiàng)目下的某個

    2024年02月12日
    瀏覽(45)
  • x-cmd pkg | tokei - 代碼行數(shù)統(tǒng)計工具

    x-cmd pkg | tokei - 代碼行數(shù)統(tǒng)計工具

    tokei 是一個使用 Rust 編寫的顯示有關(guān)代碼統(tǒng)計信息的命令行工具,可以分門別類的統(tǒng)計目錄內(nèi)的代碼行數(shù)。 tokei 具有良好的跨平臺性,可以在 Linux、macOS、Windows 等多種平臺上安裝運(yùn)行。 使用 x tokei 即可自動下載并使用 在終端運(yùn)行 eval \\\"$(curl https://get.x-cmd.com)\\\" 即可完成 x 命令

    2024年01月16日
    瀏覽(27)
  • VSCode常用快捷鍵(放大/縮小字體、切換全屏、跳轉(zhuǎn)指定行數(shù)、返回上一次位置、隱藏 /顯示導(dǎo)航、注釋代碼)

    ——推薦幾個常用的快捷鍵: ——1)“Ctrl+B” = 隱藏 /顯示左側(cè)導(dǎo)航 ——2) F11= 切換至全屏模式(禪宗模式)有利于集中注意力開發(fā) ——3)“Ctrl + +” = 放大編輯器頁面字體 ——4)“Ctrl + -” =縮小編輯器頁面字體 ——5)“Ctrl + /” = 代碼注釋 ——6)“Ctrl + S\\\" = 文件保存

    2024年02月09日
    瀏覽(23)
  • 【工具】Github統(tǒng)計代碼行數(shù)工具推薦(VScode插件、兼容任何平臺、不用下載安裝包)

    【工具】Github統(tǒng)計代碼行數(shù)工具推薦(VScode插件、兼容任何平臺、不用下載安裝包)

    需求: 1)被要求統(tǒng)計代碼行數(shù); 2)不想打開Linux,懶得下載Windows版本GitStats; 3)打開了Linux但也不記得find命令行怎么用; 4)打開了Linux,裝好了Gitstats但自己沒有圖形化界面所以無法打開其輸出結(jié)果; 5)習(xí)慣用VScode編程。 其他工具: 1)Linux愿意使用Gitstats的請直接轉(zhuǎn)到

    2024年02月05日
    瀏覽(34)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包