You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计Azure Devops Server 2020中各开发者代码行数?

统计Azure DevOps Server 2020中TFVC仓库的开发者代码行数

方法一:TFVC命令行工具(tf.exe)+ 自定义脚本

借助TFVC自带的tf.exe工具获取变更历史与差异数据,结合脚本可实现类似git fame的代码行数统计,步骤如下:

    1. 环境准备:确保本地安装了Azure DevOps Server命令行工具(随Visual Studio或单独Azure DevOps CLI安装),并通过tf workspace关联目标TFVC仓库。
    1. 导出变更集列表:执行tf history $/ProjectName /recursive /format:detailed /all,获取所有变更集的ID、作者、变更时间等核心信息。
    1. 统计单变更集行数:对每个变更集,使用tf diff $/ProjectName /version:C[变更集ID-1]~C[变更集ID] /format:unified /recursive生成差异内容,解析输出统计新增(+开头非diff header行)、删除(-开头非diff header行)的代码行数,可按需排除二进制文件、空行或注释。
    1. 按作者汇总:用PowerShell或Python脚本遍历所有变更集,按作者分组累加行数,最终生成统计报表。

示例PowerShell核心逻辑片段:

$stats = @{}
# 获取所有变更集的ID和作者
$historyEntries = tf history $/MyProject /recursive /format:detailed /all | Select-String -Pattern "^Changeset: (\d+)\s+User: (\S+)"

foreach ($entry in $historyEntries) {
    $changesetId = $entry.Matches.Groups[1].Value
    $user = $entry.Matches.Groups[2].Value
    # 获取当前变更集与上一版本的差异
    $diffResult = tf diff $/MyProject /version:C($changesetId-1)~C$changesetId /format:unified /recursive
    # 统计新增、删除行数(排除diff头部行)
    $added = ($diffResult | Select-String -Pattern "^\+[^\+]").Count
    $deleted = ($diffResult | Select-String -Pattern "^-[^-]").Count
    # 累加至用户统计
    if ($stats.ContainsKey($user)) {
        $stats[$user].Added += $added
        $stats[$user].Deleted += $deleted
    } else {
        $stats[$user] = @{ Added = $added; Deleted = $deleted }
    }
}
# 输出最终统计
$stats.GetEnumerator() | ForEach-Object {
    $netLines = $_.Value.Added - $_.Value.Deleted
    Write-Host "开发者: $($_.Key) | 新增行数: $($_.Value.Added) | 删除行数: $($_.Value.Deleted) | 净行数: $netLines"
}

方法二:Azure DevOps Server扩展

Azure DevOps Server Marketplace有针对TFVC的代码统计扩展,可直接在界面操作生成报表:

  • Code Lines Counter for TFVC:支持按项目、团队或单个开发者统计,可过滤文件类型、时间范围,生成直观的贡献报表,兼容Server 2020版本。
  • TFVC Code Metrics:除代码行数统计外,还包含代码复杂度、注释率等指标,支持按开发者分组查看贡献数据。

安装扩展后,在项目集合或项目的「扩展」菜单中找到对应工具,配置统计范围(仓库路径、时间区间、目标用户)即可获取结果。

注意事项

  • 过滤非代码文件:统计时需排除二进制文件(如exe、dll、图片)、文档或配置文件,避免数据失真。
  • 分支指定:若仅需统计特定分支,在tf history和tf diff命令中替换为分支路径(如$/MyProject/Main)。
  • 权限要求:执行命令或使用扩展时,需确保账号拥有TFVC仓库历史的读取权限。

内容的提问来源于stack exchange,提问作者buendia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 06:10:37