精华内容
下载资源
问答
  • 记得刚毕业的时候,一个总监问我毕业设计的代码量,我当时根本不知道怎么回答。因为里面很多代码是雷同的。 现在公司里做的项目是个大项目,做了快1年多了,但估计30%都没到,前半年还感觉有新东西,后半年接的...
  • AndroidStudio统计项目的代码量

    万次阅读 2016-04-22 15:41:41
    公司自己的项目,在申请版权的时候,在“计算机软件著作权登记申请表”中需要填写项目的代码量,于是网上查找了资料发现很多都说的是AndroidStudio展示当前行号什么的,并不是真正的统计项目的代码量。有一些资料中...

    公司自己的项目,在申请版权的时候,在“计算机软件著作权登记申请表”中需要填写项目的代码量,于是网上查找了资料发现很多都说的是AndroidStudio展示当前行号什么的,并不是真正的统计项目的代码量。有一些资料中提到了Statistic这个插件,这个插件还是很好用的,下面就把使用的方式和大家分享一下:

     

    插件下载地址:链接:http://pan.baidu.com/s/1dFufkuX  密码:q2do

     

    一、安装Statistic插件

    关于插件的安装,我们就直接上图了。

    1、第一步:

     

    2、安装插件

     

     

    3、完成安装插件

     

    提示:从本地安装也是同样的操作,找到本地的插件文件,选中后点击OK即可。

     

     

    二、下面我们就来说一下Statistic的使用方法:

    我们安装好Statistic这个插件之后,studio界面上左下角会出现一个图标,如下图:

     

     

    点击显示界面如下:

     

     

    点击红色框:

     

     

    点击OK之后展示的界面如下:

     

    展开全文
  • 国庆期间接了大佬一个需求,需要来统计不同群组的项目代码行数 如果只是查看单个项目建议可以使用gitstat 下载 git clone https://github.com/hoxu/gitstats.git 使用 ./gitstats projectdir inputdir #projectdir ...

    国庆期间接了大佬一个需求,需要来统计不同群组的项目代码行数

    如果只是查看单个项目建议可以使用gitstat

    下载

    git clone https://github.com/hoxu/gitstats.git
    

    使用

    ./gitstats projectdir inputdir
    #projectdir  为项目目录  inputdir为输出目录
    

    完成后查看inputdir的index.html文件既有web页面展示

    因为需要的是查看所有群组的项目,这里就使用gitlab的python api接口来针对数据进行整理-代码如下

    这里用的线程跑的 发现有很多接口开始报502
    后面也没解决这个问题,
    可以不用线程跑,看项目多少和提交次数
    不过太多的话估计跑个几个小时

    pip3 install python-gitlab
    pip3 install xlwt
    
    import threading
    import gitlab
    import xlwt
    
    def getAllProjects():
        client = gitlab.Gitlab(private_host, private_token=private_token)
        projects = client.projects.list(all=True)
        return projects
    
    
    def getAllBranchByProject(project):
        try:
            branches = project.branches.list()
            return branches
        except:
            return ""
    
    def getCommitByBranch(project, branch):
        author_commits = []
        commits = project.commits.list(all=True, ref_name=branch.name)
        for commit in commits:
            committer_email = commit.committer_email
            title = commit.title
            message = commit.message
            #if ('Merge' in message) or ('Merge' in title):
            #    print('Merge跳过')
            #    continue
            #else:
            author_commits.append(commit)
        return author_commits
    
    def getCodeByCommit(commit, project):
        commit_info = project.commits.get(commit.id)
        code = commit_info.stats
        return code
    
    def getAuthorCode(project):
        print("project:%s" % project)
        branches = getAllBranchByProject(project)
        if branches == "":
            pass
        else:
            for branch in branches:
                if branch.name == "master":
                    #print("branch:%s" % branch)
                    #print('获取工程', project.name, '分支', branch.name, "的提交记录")
                    branchdata = {}
                    branchdata['group'] = project.name_with_namespace.split("/")[0]
                    branchdata['projectname'] = project.name
                    branchdata['branchename'] = branch.name
                    author_commits = getCommitByBranch(project, branch)
                    codes = []
                    for commit in author_commits:
                        #print('获取提交', commit.id, "的代码量")
                        code = getCodeByCommit(commit, project)
                        print(commit,code)
                        codes.append(code)
    
                    record = calculate(codes)
                    branchdata['commitcount'] = len(author_commits)
                    branchdata['codecount'] = record
                    data.append(branchdata)
        #print(codes)
        #print(calculate(codes))
        return data
    
    def writeExcel(excelPath, data):
        workbook = xlwt.Workbook()
        # 获取第一个sheet页
        sheet = workbook.add_sheet('git')
        row0 = ['项目组', '工程名称', '分支名称', '提交次数', '新增代码', '删除代码', '总计代码']
        for i in range(0, len(row0)):
            sheet.write(0, i, row0[i])
        addcount = 0
        delcount = 0
        totalcount = 0
        commitcount = 0
        for i in range(0, len(data)):
            recode = data[i]
            j = 0
            sheet.write(i + 1, j, recode['group'])
            sheet.write(i + 1, j + 1, recode['projectname'])
            sheet.write(i + 1, j + 2, recode['branchename'])
            commitcount += (int)(recode['commitcount'])
            sheet.write(i + 1, j + 3, recode['commitcount'])
            addcount += (int)(recode['codecount']['additions'])
            sheet.write(i + 1, j + 4, recode['codecount']['additions'])
            delcount += (int)(recode['codecount']['deletions'])
            sheet.write(i + 1, j + 5, recode['codecount']['deletions'])
            totalcount += (int)(recode['codecount']['total'])
            sheet.write(i + 1, j + 6, recode['codecount']['total'])
    
        sheet.write(len(data) + 1, 3, commitcount)
        sheet.write(len(data) + 1, 4, addcount)
        sheet.write(len(data) + 1, 5, delcount)
        sheet.write(len(data) + 1, 6, totalcount)
        workbook.save(excelPath)
    
    def calculate(data):
        record = {}
        addacount = 0
        deletecount = 0
        totaolcount = 0
        for i in data:
            print(i)
            addacount += int(i['additions'])
            deletecount += int(i['deletions'])
            totaolcount += int(i['total'])
        record['additions'] = addacount
        record['deletions'] = deletecount
        record['total'] = totaolcount
        return record
    
    
    if __name__ == '__main__':
    # 用户git账户的token
    private_token = ''
    # git地址
    private_host = 'https://gitlab.x.cn/'
    
        data = []
        thread_list = []
        projects = getAllProjects()
        print(projects)
    
        for i in projects:
            t = threading.Thread(target=getAuthorCode, args=(i,))
            thread_list.append(t)
    
        for threadname in thread_list: threadname.start()
        for threadname in thread_list: threadname.join()
        print(data)
        writeExcel('d:/code_count.xls', data)
    

    通过gitlab-api获取到每个项目计算出每次提交的新增和删除发现,最后的统计还是有些问题,有些上传的文件行数也被统计了,但那些不算代码,后面想了下,用了稍微笨一点的方法,下载所有项目然后在,通过cloc工具来统计

    下载所有项目

    import requests,json,uuid
    import subprocess
    
    #获取当前账号有权限的全部工程列表
    def gitlab_projects():
        #print("正在获取gitlab上工程数量...")
        projects_api=git_url+'/api/v4/projects?simple=yes&per_page=20'
        projects_headers=session.head(projects_api).headers
        projects_num=int(projects_headers['X-Total'])
        projects_pages=int(projects_headers['X-Total-Pages'])
        #print("工程总数:",projects_num)
        for i in range(projects_pages):
            pages=i+1
            projects_url=projects_api+'&page='+str(pages)
            projects = session.get(projects_url).text
            # print(projects)
            projects_json = json.loads(projects)
            for project_json in projects_json:
                project_id=project_json['id']
                project_name=project_json['name']
                project_path=project_json['path_with_namespace'].split("/")[0]
                project_http_url_to_repo = project_json["http_url_to_repo"]
                #print(project_json)
                lists.append({"group":project_path,"project_id":project_id,"name":project_name,"project_http_url_to_repo":project_http_url_to_repo})
    
    def mkdir(path):
        import os
        path=path.strip()
        path=path.rstrip("\\")
        isExists=os.path.exists(path)
        if not isExists:
            os.makedirs("/data/count-git/%s"%path)
            print(path+' 创建成功')
            return True
        else:
            pass
    
    def download_git(path,url):
        p = subprocess.Popen("cd /data/count-git/%s && git clone -b master https://root:git@%s"%(path,url),stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)
        print(p.stdout.read())
        print(p.stderr.read())
    
    if __name__ == "__main__":
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',
        }
        # gitlab地址
        git_url = 'https://gitlab.x.cn/'
        # gitlab的token
        git_token = ''
        session = requests.Session()
        headers['PRIVATE-TOKEN'] = git_token
        session.headers = headers
        git_login = session.get(git_url, headers=headers)
        #获取gitlab上的工程列表
        lists = []
        gitlab_projects()
        for i in lists:
            mkdir(i["group"])
            url = i["project_http_url_to_repo"].split("//")[1]
            download_git(i["group"],url)
    

    使用cloc来统计

    import os,subprocess
    import xlwt
    
    def getALLDir(path = "/data/count-git/"):
        filesList = os.listdir(path)
        return filesList
    
    def get_alldir(lists):
        for i in lists:
            if ".py" in i:
                pass
            else:
                filesList = os.listdir("/data/count-git/%s"%i)
                for v in filesList:
                    dir_lists.append("/data/count-git/%s/%s"%(i,v))
    
    
    def clos_get_dir(lists):
        n = 0
        for i in lists:
            p = subprocess.Popen("cloc %s |  tail -2 | awk {'print $5'} "%(i),stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)
            info = p.stdout.read().decode().split("\n")
            group = i.split("/")[3]
            project = i.split("/")[4]
            if info[0] == '' or info[0] is None:
                info[0] = 0
            dir_lists_count.append({"group":group,"project":project,"branch":"master","count":info[0]})
    
    def writeExcel(excelPath, data):
        workbook = xlwt.Workbook()
        # 获取第一个sheet页
        sheet = workbook.add_sheet('git')
            row0 = ['项目组', '工程名称', '分支名称', '总计代码']
        for i in range(0, len(row0)):
            sheet.write(0, i, row0[i])
        addcount = 0
        delcount = 0
        totalcount = 0
        commitcount = 0
        for i in range(0, len(data)):
            recode = data[i]
            j = 0
            sheet.write(i + 1, j, recode['group'])
            sheet.write(i + 1, j + 1, recode['project'])
            sheet.write(i + 1, j + 2, recode['branch'])
            try:
                commitcount += (int(recode['count']))
            except:
                print(commitcount,recode['count'])
            sheet.write(i + 1, j + 3, recode['count'])
    
        sheet.write(len(data) + 1, 3, commitcount)
        workbook.save(excelPath)
    
    
    if __name__ == '__main__':
        dir_lists = []
        dir_lists_count = []
        get_alldir(getALLDir(path = "/data/count-git/"))
        clos_get_dir(dir_lists)
        print(dir_lists_count)
        writeExcel("/data/count-code.xls", dir_lists_count)
    
    展开全文
  • Java之统计项目代码量

    千次阅读 2018-07-20 14:29:21
    申请软件著作权需要统计项目代码量,拿来主义实现之。 统计java源程序代码代码量 精确统计代码量(Java实现) ... Java 统计一个项目中src下的所有 .java 文件的代码行数, 注释行数, 空行数 java 代码覆盖率 ...
    展开全文
  • 今天分享四个代码量很少,但很牛逼很经典算法或项目案例。 1、no code 项目地址: https://github.com/kelseyhightower/nocode 这是一个 GitHub 上的项目,目前标星 34k。 它牛逼之处在于它 基于轻量级跨...

    今天分享四个代码量很少,但很牛逼很经典的算法或项目案例。

    1、no code

    项目地址:

    https://github.com/kelseyhightower/nocode

    这是一个 GitHub 上的项目,目前标星 34k。

    它的牛逼之处在于它 基于轻量级跨平台全自动不可描述工具,采用了不可描述的高级语言语法,不用写一行代码,即可部署运行,提供检测、编译、打包、安装、运行一条龙服务,安全可靠。

    看完代码后,国内外的程序员纷纷留言夸奖。

    真的是阅尽天下代码,心中已然无码!

    2、洗牌算法

    这个代码很简单,只有两行代码,但是却可以实现这个功能:对于给定的 n 个元素,生成的那个排列,每一个元素都能等概率地出现在每一个位置。

    换句话说,每一个位置都能等概率地放置每个元素。

    代码如下:

    for(int i = n - 1; i >= 0 ; i -- )
        swap(arr[i], arr[rand(0, i)]) // rand(0, i) 生成 [0, i] 之间的随机整数
    

    我做了一个动画来帮你理解这个算法。

    以上动画的制作参考了 liuyubobobo 之前写的一篇文章:神一般的算法,如果想更详细了解更多洗牌算法的介绍,可以点击进去看看。

    3、睡眠排序

    代码如下:

    public class SleepSort {  
        public static void main(String[] args) {  
            int[] ints = {1,4,7,3,8,9,2,6,5};  
            SortThread[] sortThreads = new SortThread[ints.length];  
            for (int i = 0; i < sortThreads.length; i++) {  
                sortThreads[i] = new SortThread(ints[i]);  
            }  
            for (int i = 0; i < sortThreads.length; i++) {  
                sortThreads[i].start();  
            }  
        }  
    }  
    class SortThread extends Thread{  
        int ms = 0;  
        public SortThread(int ms){  
            this.ms = ms;  
        }  
        public void run(){  
            try {  
                sleep(ms*10+10);  
            } catch (InterruptedException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
            System.out.println(ms);  
        }  
    }  
    

    它原理是构造 n 个线程,它们和这 n 个数一一对应。

    初始化后,线程们开始睡眠,等到对应的数那么多个时间单位后各自醒来,然后输出它对应的数。

    这样最小的数对应的线程最早醒来,这个数最早被输出。

    等所有线程都醒来,排序就结束了。

    不要问时间复杂度,时间复杂度在这个排序上已经毫无意义!

    4、AI核心代码

    while True:
        print(input('').replace('吗','').replace('?','!'))
    

    这段代码就是传说中的 价值一个亿的AI核心代码,来看一下效果。

    各位技术大神还知道哪些案例,欢迎留言补充:)

    好了,以上就是本文的全部内容了,如果觉得有收获,记得点赞、再看、留言、转发,我们下期再见。

    我的个人网站:https://www.cxyxiaowu.com 上也有很多精彩内容,欢迎来瞅瞅~

    另外,算法的学习也是必经之路,这里给大家推荐一个大佬的刷题笔记。

    > 链接: https://pan.baidu.com/s/1-NtihTGBHLKkBiXCKWaClQ  密码: e0ff

    把这份笔记突击学习一下,很多算法考察,基本都稳了,就算你现在不学算法,那么这份笔记也值得你收藏,万一有人问你 Leetcode 某道题解,或者有大神在讨论题解,咱打开这份笔记,不管三七二十一,直接把最优解扔给他,然后退出群聊。

     

    展开全文
  • 如何查看整个项目工程代码量

    千次阅读 2017-01-09 10:24:00
    对于申请双软认证,iso质量管理认证等,需要统计项目工程的代码量。  估计的话,也能大概估个数,但是不是很准,如何才能比较准确的评估出整个项目工程的代码量呢?  下面推荐一个爆款,可以根据自己设定要统计...
  • cloc工具统计项目代码量

    千次阅读 2017-12-21 17:28:23
    linux下提供了一个很好的工具cloc来计算项目的代码量。 一、首先需要安装cloc,这里以ubuntu为例。 sudo apt-get install cloc 二、查看cloc的使用方法,使用cloc --help defined(%hash) is deprecated at /usr/...
  • 1.下载并安装SVN统计工具StatSVN ...2)解压压缩包,到一个目录,如E:\statsvn-0.7.0; 2.checkout 工作目录 从SVN服务器上checkout最新版本的项目文件,使用CMD,cd E:\statsvn-0.7.0,然后运行
  • 基于SVNkit的项目代码贡献统计

    千次阅读 2017-02-14 15:11:57
    SVNKit (JavaSVN) 是一个纯 Java 的 SVN 客户端库,使用 SVNKit 无需安装任何 SVN 的客户端,支持各种操作系统。通过比对每个文件的修改记录,统计每个成员的代码贡献
  • 如果要统计项目的代码量(行数),需要对整个项目的每一个文件进行统计,很是麻烦。另外,如果是想要查找或者替换项目中的某个词语,一个一个文件找,也是一件麻烦的事情,靠猜的又不是很靠谱,很容易漏掉一些。不过...
  • 在构建和部署机器学习模型时,最佳好方法是使它们尽可能成为端到端工作,这意味着尝试将大多数与模型相关数据转换分组到一个对象中。 在ML世界中,采用pipeline最简单方法是使用Scikit-learn。如果你不太...
  • 统计代码量 项目总结

    2016-05-11 11:38:35
    一直想写一个小程序来统计自己的代码量,但是一直被拖延症折磨着,想在终于完成了,下面是代码 和一些用到的知识点总结,[ps:记下来,希望自己不要忘得太快 (^-^)V] 总结:  //_getcwd() 获取当前工作目录 // char str...
  • 在我们 Java 项目里面,有很多 Java Bean 需要为每属性生成 get/ set 方法...有了这神器,你的 Java Bean 类的代码量至少可以省一半。 什么是Lombok? https://www.projectlombok.org/ 打开它的官网,这是它的...
  • 用StatSVN统计SVN服务器项目的代码量   下载并安装SVN统计工具StatSVN 1)下载地址:sourceforge.net/projects/statsvn/ 2)解压压缩包,到一个目录,如D:\statsvn 找一个svn上项目 check或update这个项目到D:\...
  • [摘要]有时候我们在网上下载一些源码文件,或者直接在C++技术网复制完整的代码,然后存储为代码文件,我们就有很多代码文件了。这些文件是分多个目录和...1.我们从网上下载了一个源码,存放在一个文件夹里。文件夹存...
  • 公司之前有专人处理git代码量,用来作为参考评估研发人员工作量的一个依据,主要思想是借助shell命令进行处理,但是这位同事目前离职了,所以这部分工作就压在了其他同事身上,压力有点增加,所以领导决定是否可以...
  • 因为项目各种文件的代码总行数为十万行以上,用人工计算已是不可能。所以找了找,却发现网上也有很多人提出相同的用户需求,而且很杂乱,最终找到一个eclipse插件,还有在一PM处得到一个很强大的本地工具。 1、org....
  • 开源世界有许多优秀开源项目,我选取其中十个最优秀、最轻C语言的项目,希望可以为C语言开发人员提供参考。 1. Webbench Webbench是一个在linux下使用非常简单网站压测工具。它使用fork()模拟多个...
  • 重构中每次修改都需要进行测试,用来验证修改是否正确,因此单元测试是一个非常好选择。 单元测试 单元测试中可以进行mock操作,从烦人token中摆脱出来,做到在任何人IDE里面都能跑起来,从而任何人都能进行...
  • 代码量的问题

    2015-03-10 15:20:35
    Line Of Code通常指净代码行,即去除空行和注释,扣除生动生成的代码。实际项目中往往还要进一步区分Changed LOC和New LOC。对于系统相对稳定,有持续的版本升级,具有较多重用基础的项目,还是比较适用的种...
  • 在做上一个项目中,大量使用了一般处理程序,由于一般处理程序优点是非常大,但是在善良公社项目中,基本上每一个页面都对应一个一般处理程序,更呕吐是,这些一般处理程序核心内容几句话之外都差不多,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,397
精华内容 7,758
关键字:

一个项目的代码量