Как получить мерзкую статистику из TFS - PullRequest
14 голосов
/ 12 мая 2011

Я работаю с TFS уже несколько месяцев и хотел бы получить базовую статистику и сделать ее доступной для нашей команды. В git я могу получить статистику по «коммит по автору» и «коммит по дате» и т. Д.

Я бы хотел показать похожую статистику из TFS (или из TeamCity).

Возможно ли это?

Ответы [ 5 ]

5 голосов
/ 14 марта 2012

Самый простой способ, который я нахожу для просмотра статистики TFS - это играть с отчетами Excel - вы можете вращаться вокруг всего, что только можете себе представить.Чтобы ознакомиться с руководством по началу работы, ознакомьтесь с этой записью в блоге, которую я написал:

http://www.woodwardweb.com/vsts/getting_started.html

TFS предоставляет полное хранилище данных поверх обычных данных репозитория, в которые вы можете покопаться..

5 голосов
/ 13 мая 2011

Вы можете использовать TFS API для создания любых запросов, которые вам нравятся. Вы можете довольно легко перебирать наборы изменений, просматривая все коммиты определенного автора или коммиты в определенную дату:

TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri("http://tfsserver:8080/"));
tpc.EnsureAuthenticated();
VersionControlServer vcs = tpc.GetService<VersionControlServer>(); 

int latest = vcs.GetLatestChangesetId();
DateTime earliestDate = new DateTime(2011, 1, 1);
do
{
    var changeset = vcs.GetChangeset(latest);                
    if (changeset.CreationDate < earliestDate)
    {
        break;
    }
    // do analysis of the changeset here,
    // e.g. use changeset.Committer or changeset.Changes
} while (latest-- > 0);
4 голосов
/ 13 марта 2012

Здесь вы можете найти некоторые запросы, которые можно выполнить в базе данных TFS, чтобы получить статистику.

-- Change this to the name of your collection DB. You’ll need to run these queries for each of your collection DBs. 
USE Tfs_DefaultCollection 
GO

-- Recent Users 
select count(distinct IdentityName) as [Recent Users] from tbl_Command with (nolock)

-- Users with Assigned Work Items 
select count(distinct [System.AssignedTo]) AS [Users with Assigned Work Items] from WorkItemsAreUsed with (nolock)

-- Version Control Users 
select COUNT(*) AS [Version Control Users] from [Tfs_Configuration].[dbo].tbl_security_identity_cache as ic JOIN tbl_Identity as i ON i.TeamFoundationId=ic.tf_id where ic.is_group = 0

-- Total Work Items 
select count(*) AS [Total Work Items] from WorkItemsAreUsed with (nolock)

-- Areas and Iterations 
select count(*) AS [Areas and Iterations] from tbl_nodes with (nolock)

-- Work Item Versions 
select count(*) AS [Work Item Versions] from (select [System.Id] from WorkItemsAreUsed with (nolock) union all select [System.Id] from WorkItemsWereUsed with (nolock)) x 
-- Work Item Attachments 
select count(*) AS [Work Item Attachments] from WorkItemFiles with (nolock) where FldID = 50 
-- Work Item Queries 
select count(*) AS [Work Item Queries] from QueryItems with (nolock)

-- Files 
select count(*) as [Files] from tbl_VersionedItem vi with (nolock) join tbl_Version v with (nolock) on v.ItemId = vi.ItemId where VersionTo = 2147483647

-- Compressed File Sizes 
select (sum(convert(bigint,OffsetTo - OffsetFrom + 1)) / (1024 * 1024)) AS [Compressed File Sizes] from tbl_Content with (nolock)

-- Uncompressed File Sizes 
select (sum(FileLength) / (1024 * 1024)) AS [Uncompressed File Sizes] from tbl_File with (nolock)

-- Checkins 
select max(ChangeSetId) AS [Checkins] from tbl_ChangeSet with (nolock)

-- Shelvesets 
select COUNT(*) AS [Shelvesets] from tbl_Workspace with (nolock) where type='1'

-- Merge History 
select SUM(st.row_count) AS [Merge History] from sys.dm_db_partition_stats st WHERE object_name(object_id) = 'tbl_MergeHistory' AND (index_id < 2)

-- Pending Changes 
select count(*) AS [Pending Changes] from tbl_PendingChange pc with (nolock) join tbl_Workspace w with (nolock) on pc.WorkspaceId = w.WorkspaceId where w.Type = 0 
-- Workspaces 
select COUNT(*) AS [Workspaces] from tbl_Workspace with (nolock) where type='0' 
-- Local Copies 
select SUM(st.row_count) AS [Local Copies] from sys.dm_db_partition_stats st WHERE object_name(object_id) = 'tbl_LocalVersion' AND (index_id < 2)

-- Command Counts 
select Command, count(*) as [Execution Count] from tbl_Command with (nolock) WHERE Command IN ('QueryWorkitems', 'Update', 'GetWorkItem', 'Get', 'VCDownloadHandler', 'Checkin', 'Upload', 'Shelve') GROUP BY Command, Application ORDER BY [Application],[Command]
2 голосов
/ 13 мая 2011

Я обнаружил, что в веб-клиенте Visual Studio Team System есть представление набора изменений на вкладке «источник». Выделите нужный проект и выберите историю версий в раскрывающемся списке проектов.

Этого достаточно для моих нужд.

0 голосов
/ 13 марта 2012

Существует Пакет отчетов о производительности TFS , который предоставит вам информацию, но это не совсем та информация, которую вы запросили

  • Сроки выполнения
  • Состояние сервера - Очередь запросов контроля источника
  • Состояние сервера - топ пользователей в обход прокси
  • Состояние сервера - исторические тенденции производительности
  • Состояние сервера - последние тенденции производительности
...