Documentation ¶
Index ¶
- Constants
- type BurndownAnalysis
- func (analyser *BurndownAnalysis) Boot() error
- func (analyser *BurndownAnalysis) Configure(facts map[string]interface{}) error
- func (analyser *BurndownAnalysis) Consume(deps map[string]interface{}) (map[string]interface{}, error)
- func (analyser *BurndownAnalysis) Description() string
- func (analyser *BurndownAnalysis) Deserialize(pbmessage []byte) (interface{}, error)
- func (analyser *BurndownAnalysis) Finalize() interface{}
- func (analyser *BurndownAnalysis) Flag() string
- func (analyser *BurndownAnalysis) Fork(n int) []core.PipelineItem
- func (analyser *BurndownAnalysis) Hibernate() error
- func (analyser *BurndownAnalysis) Initialize(repository *git.Repository) error
- func (analyser *BurndownAnalysis) ListConfigurationOptions() []core.ConfigurationOption
- func (analyser *BurndownAnalysis) Merge(branches []core.PipelineItem)
- func (analyser *BurndownAnalysis) MergeResults(r1, r2 interface{}, c1, c2 *core.CommonAnalysisResult) interface{}
- func (analyser *BurndownAnalysis) Name() string
- func (analyser *BurndownAnalysis) Provides() []string
- func (analyser *BurndownAnalysis) Requires() []string
- func (analyser *BurndownAnalysis) Serialize(result interface{}, binary bool, writer io.Writer) error
- type BurndownResult
- type CommitStat
- type CommitsAnalysis
- func (ca *CommitsAnalysis) Configure(facts map[string]interface{}) error
- func (ca *CommitsAnalysis) Consume(deps map[string]interface{}) (map[string]interface{}, error)
- func (ca *CommitsAnalysis) Description() string
- func (ca *CommitsAnalysis) Finalize() interface{}
- func (ca *CommitsAnalysis) Flag() string
- func (ca *CommitsAnalysis) Fork(n int) []core.PipelineItem
- func (ca *CommitsAnalysis) Initialize(repository *git.Repository) error
- func (ca *CommitsAnalysis) ListConfigurationOptions() []core.ConfigurationOption
- func (ca *CommitsAnalysis) Name() string
- func (ca *CommitsAnalysis) Provides() []string
- func (ca *CommitsAnalysis) Requires() []string
- func (ca *CommitsAnalysis) Serialize(result interface{}, binary bool, writer io.Writer) error
- type CommitsResult
- type CouplesAnalysis
- func (couples *CouplesAnalysis) Configure(facts map[string]interface{}) error
- func (couples *CouplesAnalysis) Consume(deps map[string]interface{}) (map[string]interface{}, error)
- func (couples *CouplesAnalysis) Description() string
- func (couples *CouplesAnalysis) Deserialize(pbmessage []byte) (interface{}, error)
- func (couples *CouplesAnalysis) Finalize() interface{}
- func (couples *CouplesAnalysis) Flag() string
- func (couples *CouplesAnalysis) Fork(n int) []core.PipelineItem
- func (couples *CouplesAnalysis) Initialize(repository *git.Repository) error
- func (couples *CouplesAnalysis) ListConfigurationOptions() []core.ConfigurationOption
- func (couples *CouplesAnalysis) MergeResults(r1, r2 interface{}, c1, c2 *core.CommonAnalysisResult) interface{}
- func (couples *CouplesAnalysis) Name() string
- func (couples *CouplesAnalysis) Provides() []string
- func (couples *CouplesAnalysis) Requires() []string
- func (couples *CouplesAnalysis) Serialize(result interface{}, binary bool, writer io.Writer) error
- type CouplesResult
- type DenseHistory
- type DevTick
- type DevsAnalysis
- func (devs *DevsAnalysis) Configure(facts map[string]interface{}) error
- func (devs *DevsAnalysis) Consume(deps map[string]interface{}) (map[string]interface{}, error)
- func (devs *DevsAnalysis) Description() string
- func (devs *DevsAnalysis) Deserialize(pbmessage []byte) (interface{}, error)
- func (devs *DevsAnalysis) Finalize() interface{}
- func (devs *DevsAnalysis) Flag() string
- func (devs *DevsAnalysis) Fork(n int) []core.PipelineItem
- func (devs *DevsAnalysis) Initialize(repository *git.Repository) error
- func (devs *DevsAnalysis) ListConfigurationOptions() []core.ConfigurationOption
- func (devs *DevsAnalysis) MergeResults(r1, r2 interface{}, c1, c2 *core.CommonAnalysisResult) interface{}
- func (devs *DevsAnalysis) Name() string
- func (devs *DevsAnalysis) Provides() []string
- func (devs *DevsAnalysis) Requires() []string
- func (devs *DevsAnalysis) Serialize(result interface{}, binary bool, writer io.Writer) error
- type DevsResult
- type FileHistory
- type FileHistoryAnalysis
- func (history *FileHistoryAnalysis) Configure(facts map[string]interface{}) error
- func (history *FileHistoryAnalysis) Consume(deps map[string]interface{}) (map[string]interface{}, error)
- func (history *FileHistoryAnalysis) Description() string
- func (history *FileHistoryAnalysis) Finalize() interface{}
- func (history *FileHistoryAnalysis) Flag() string
- func (history *FileHistoryAnalysis) Fork(n int) []core.PipelineItem
- func (history *FileHistoryAnalysis) Initialize(repository *git.Repository) error
- func (history *FileHistoryAnalysis) ListConfigurationOptions() []core.ConfigurationOption
- func (history *FileHistoryAnalysis) Name() string
- func (history *FileHistoryAnalysis) Provides() []string
- func (history *FileHistoryAnalysis) Requires() []string
- func (history *FileHistoryAnalysis) Serialize(result interface{}, binary bool, writer io.Writer) error
- type FileHistoryResult
- type FileStat
- type ImportsMap
- type ImportsPerDeveloper
- func (ipd *ImportsPerDeveloper) Configure(facts map[string]interface{}) error
- func (ipd *ImportsPerDeveloper) Consume(deps map[string]interface{}) (map[string]interface{}, error)
- func (ipd *ImportsPerDeveloper) Description() string
- func (ipd *ImportsPerDeveloper) Deserialize(pbmessage []byte) (interface{}, error)
- func (ipd *ImportsPerDeveloper) Finalize() interface{}
- func (ipd *ImportsPerDeveloper) Flag() string
- func (ipd *ImportsPerDeveloper) Fork(n int) []core.PipelineItem
- func (ipd *ImportsPerDeveloper) Initialize(repository *git.Repository) error
- func (ipd *ImportsPerDeveloper) ListConfigurationOptions() []core.ConfigurationOption
- func (ipd *ImportsPerDeveloper) Name() string
- func (ipd *ImportsPerDeveloper) Provides() []string
- func (ipd *ImportsPerDeveloper) Requires() []string
- func (ipd *ImportsPerDeveloper) Serialize(result interface{}, binary bool, writer io.Writer) error
- type ImportsPerDeveloperResult
- type NodeSummary
- type ShotnessAnalysis
- func (shotness *ShotnessAnalysis) Configure(facts map[string]interface{}) error
- func (shotness *ShotnessAnalysis) Consume(deps map[string]interface{}) (map[string]interface{}, error)
- func (shotness *ShotnessAnalysis) Description() string
- func (shotness *ShotnessAnalysis) Features() []string
- func (shotness *ShotnessAnalysis) Finalize() interface{}
- func (shotness *ShotnessAnalysis) Flag() string
- func (shotness *ShotnessAnalysis) Fork(n int) []core.PipelineItem
- func (shotness *ShotnessAnalysis) Initialize(repository *git.Repository) error
- func (shotness *ShotnessAnalysis) ListConfigurationOptions() []core.ConfigurationOption
- func (shotness *ShotnessAnalysis) Name() string
- func (shotness *ShotnessAnalysis) Provides() []string
- func (shotness *ShotnessAnalysis) Requires() []string
- func (shotness *ShotnessAnalysis) Serialize(result interface{}, binary bool, writer io.Writer) error
- type ShotnessResult
Constants ¶
const ( // ConfigBurndownGranularity is the name of the option to set BurndownAnalysis.Granularity. ConfigBurndownGranularity = "Burndown.Granularity" // ConfigBurndownSampling is the name of the option to set BurndownAnalysis.Sampling. ConfigBurndownSampling = "Burndown.Sampling" // ConfigBurndownTrackFiles enables burndown collection for files. ConfigBurndownTrackFiles = "Burndown.TrackFiles" // ConfigBurndownTrackPeople enables burndown collection for authors. ConfigBurndownTrackPeople = "Burndown.TrackPeople" // ConfigBurndownHibernationThreshold sets the hibernation threshold for the underlying // RBTree allocator. It is useful to trade CPU time for reduced peak memory consumption // if there are many branches. ConfigBurndownHibernationThreshold = "Burndown.HibernationThreshold" // ConfigBurndownHibernationToDisk sets whether the hibernated RBTree allocator must be saved // on disk rather than kept in memory. ConfigBurndownHibernationToDisk = "Burndown.HibernationOnDisk" // ConfigBurndownHibernationDirectory sets the name of the temporary directory to use for // saving hibernated RBTree allocators. ConfigBurndownHibernationDirectory = "Burndown.HibernationDirectory" // ConfigBurndownDebug enables some extra debug assertions. ConfigBurndownDebug = "Burndown.Debug" // DefaultBurndownGranularity is the default number of ticks for BurndownAnalysis.Granularity // and BurndownAnalysis.Sampling. DefaultBurndownGranularity = 30 )
const ( // ConfigShotnessXpathStruct is the name of the configuration option (ShotnessAnalysis.Configure()) // which sets the UAST XPath to choose the analysed nodes. // The format is Semantic UASTv2, see https://docs.sourced.tech/babelfish/using-babelfish/uast-querying ConfigShotnessXpathStruct = "Shotness.XpathStruct" // ConfigShotnessXpathName is the name of the configuration option (ShotnessAnalysis.Configure()) // which sets the UAST XPath to find the name of the nodes chosen by ConfigShotnessXpathStruct. // The format is Semantic UASTv2, see https://docs.sourced.tech/babelfish/using-babelfish/uast-querying ConfigShotnessXpathName = "Shotness.XpathName" // DefaultShotnessXpathStruct is the default UAST XPath to choose the analysed nodes. // It extracts functions. DefaultShotnessXpathStruct = "//uast:FunctionGroup" // DefaultShotnessXpathName is the default UAST XPath to choose the names of the analysed nodes. // It looks at the current tree level and at the immediate children. DefaultShotnessXpathName = "/Nodes/uast:Alias/Name" )
const (
// ConfigDevsConsiderEmptyCommits is the name of the option to set DevsAnalysis.ConsiderEmptyCommits.
ConfigDevsConsiderEmptyCommits = "Devs.ConsiderEmptyCommits"
)
const ( // CouplesMaximumMeaningfulContextSize is the threshold on the number of files in a commit to // consider them as grouped together. CouplesMaximumMeaningfulContextSize = 1000 )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BurndownAnalysis ¶
type BurndownAnalysis struct { // Granularity sets the size of each band - the number of ticks it spans. // Smaller values provide better resolution but require more work and eat more // memory. 30 ticks is usually enough. Granularity int // Sampling sets how detailed is the statistic - the size of the interval in // ticks between consecutive measurements. It may not be greater than Granularity. Try 15 or 30. Sampling int // TrackFiles enables or disables the fine-grained per-file burndown analysis. // It does not change the project level burndown results. TrackFiles bool // PeopleNumber is the number of developers for which to collect the burndown stats. 0 disables it. PeopleNumber int // TickSize indicates the size of each time granule: day, hour, week, etc. TickSize time.Duration // HibernationThreshold sets the hibernation threshold for the underlying // RBTree allocator. It is useful to trade CPU time for reduced peak memory consumption // if there are many branches. HibernationThreshold int // HibernationToDisk specifies whether the hibernated RBTree allocator must be saved on disk // rather than kept in memory. HibernationToDisk bool // HibernationDirectory is the name of the temporary directory to use for saving hibernated // RBTree allocators. HibernationDirectory string // Debug activates the debugging mode. Analyse() runs slower in this mode // but it accurately checks all the intermediate states for invariant // violations. Debug bool // contains filtered or unexported fields }
BurndownAnalysis allows to gather the line burndown statistics for a Git repository. It is a LeafPipelineItem. Reference: https://erikbern.com/2016/12/05/the-half-life-of-code.html
func (*BurndownAnalysis) Boot ¶
func (analyser *BurndownAnalysis) Boot() error
Boot decompresses the bound RBTree memory with the files.
func (*BurndownAnalysis) Configure ¶
func (analyser *BurndownAnalysis) Configure(facts map[string]interface{}) error
Configure sets the properties previously published by ListConfigurationOptions().
func (*BurndownAnalysis) Consume ¶
func (analyser *BurndownAnalysis) Consume(deps map[string]interface{}) (map[string]interface{}, error)
Consume runs this PipelineItem on the next commit's data. `deps` contain all the results from upstream PipelineItem-s as requested by Requires(). Additionally, DependencyCommit is always present there and represents the analysed *object.Commit. This function returns the mapping with analysis results. The keys must be the same as in Provides(). If there was an error, nil is returned.
func (*BurndownAnalysis) Description ¶
func (analyser *BurndownAnalysis) Description() string
Description returns the text which explains what the analysis is doing.
func (*BurndownAnalysis) Deserialize ¶
func (analyser *BurndownAnalysis) Deserialize(pbmessage []byte) (interface{}, error)
Deserialize converts the specified protobuf bytes to BurndownResult.
func (*BurndownAnalysis) Finalize ¶
func (analyser *BurndownAnalysis) Finalize() interface{}
Finalize returns the result of the analysis. Further Consume() calls are not expected.
func (*BurndownAnalysis) Flag ¶
func (analyser *BurndownAnalysis) Flag() string
Flag for the command line switch which enables this analysis.
func (*BurndownAnalysis) Fork ¶
func (analyser *BurndownAnalysis) Fork(n int) []core.PipelineItem
Fork clones this item. Everything is copied by reference except the files which are copied by value.
func (*BurndownAnalysis) Hibernate ¶
func (analyser *BurndownAnalysis) Hibernate() error
Hibernate compresses the bound RBTree memory with the files.
func (*BurndownAnalysis) Initialize ¶
func (analyser *BurndownAnalysis) Initialize(repository *git.Repository) error
Initialize resets the temporary caches and prepares this PipelineItem for a series of Consume() calls. The repository which is going to be analysed is supplied as an argument.
func (*BurndownAnalysis) ListConfigurationOptions ¶
func (analyser *BurndownAnalysis) ListConfigurationOptions() []core.ConfigurationOption
ListConfigurationOptions returns the list of changeable public properties of this PipelineItem.
func (*BurndownAnalysis) Merge ¶
func (analyser *BurndownAnalysis) Merge(branches []core.PipelineItem)
Merge combines several items together. We apply the special file merging logic here.
func (*BurndownAnalysis) MergeResults ¶
func (analyser *BurndownAnalysis) MergeResults( r1, r2 interface{}, c1, c2 *core.CommonAnalysisResult) interface{}
MergeResults combines two BurndownResult-s together.
func (*BurndownAnalysis) Name ¶
func (analyser *BurndownAnalysis) Name() string
Name of this PipelineItem. Uniquely identifies the type, used for mapping keys, etc.
func (*BurndownAnalysis) Provides ¶
func (analyser *BurndownAnalysis) Provides() []string
Provides returns the list of names of entities which are produced by this PipelineItem. Each produced entity will be inserted into `deps` of dependent Consume()-s according to this list. Also used by core.Registry to build the global map of providers.
func (*BurndownAnalysis) Requires ¶
func (analyser *BurndownAnalysis) Requires() []string
Requires returns the list of names of entities which are needed by this PipelineItem. Each requested entity will be inserted into `deps` of Consume(). In turn, those entities are Provides() upstream.
type BurndownResult ¶
type BurndownResult struct { // [number of samples][number of bands] // The number of samples depends on Sampling: the less Sampling, the bigger the number. // The number of bands depends on Granularity: the less Granularity, the bigger the number. GlobalHistory DenseHistory // The key is a path inside the Git repository. The value's dimensions are the same as // in GlobalHistory. FileHistories map[string]DenseHistory // The key is a path inside the Git repository. The value is a mapping from developer indexes // (see reversedPeopleDict) and the owned line numbers. Their sum equals to the total number of // lines in the file. FileOwnership map[string]map[int]int // [number of people][number of samples][number of bands] PeopleHistories []DenseHistory // [number of people][number of people + 2] // The first element is the total number of lines added by the author. // The second element is the number of removals by unidentified authors (outside reversedPeopleDict). // The rest of the elements are equal the number of line removals by the corresponding // authors in reversedPeopleDict: 2 -> 0, 3 -> 1, etc. PeopleMatrix DenseHistory // contains filtered or unexported fields }
BurndownResult carries the result of running BurndownAnalysis - it is returned by BurndownAnalysis.Finalize().
func (BurndownResult) GetIdentities ¶ added in v10.1.0
func (br BurndownResult) GetIdentities() []string
GetIdentities returns the list of developer identities used to generate this burndown analysis result. The format is |-joined keys, see internals/plumbing/identity for details.
func (BurndownResult) GetTickSize ¶ added in v10.1.0
func (br BurndownResult) GetTickSize() time.Duration
GetTickSize returns the tick size used to generate this burndown analysis result.
type CommitStat ¶
CommitStat is the statistics for a commit
type CommitsAnalysis ¶
type CommitsAnalysis struct { core.NoopMerger // contains filtered or unexported fields }
CommitsAnalysis extracts statistics for each commit
func (*CommitsAnalysis) Configure ¶
func (ca *CommitsAnalysis) Configure(facts map[string]interface{}) error
Configure sets the properties previously published by ListConfigurationOptions().
func (*CommitsAnalysis) Consume ¶
func (ca *CommitsAnalysis) Consume(deps map[string]interface{}) (map[string]interface{}, error)
Consume runs this PipelineItem on the next commit data. `deps` contain all the results from upstream PipelineItem-s as requested by Requires(). Additionally, DependencyCommit is always present there and represents the analysed *object.Commit. This function returns the mapping with analysis results. The keys must be the same as in Provides(). If there was an error, nil is returned.
func (*CommitsAnalysis) Description ¶
func (ca *CommitsAnalysis) Description() string
Description returns the text which explains what the analysis is doing.
func (*CommitsAnalysis) Finalize ¶
func (ca *CommitsAnalysis) Finalize() interface{}
Finalize returns the result of the analysis. Further Consume() calls are not expected.
func (*CommitsAnalysis) Flag ¶
func (ca *CommitsAnalysis) Flag() string
Flag for the command line switch which enables this analysis.
func (*CommitsAnalysis) Fork ¶
func (ca *CommitsAnalysis) Fork(n int) []core.PipelineItem
Fork clones this pipeline item.
func (*CommitsAnalysis) Initialize ¶
func (ca *CommitsAnalysis) Initialize(repository *git.Repository) error
Initialize resets the temporary caches and prepares this PipelineItem for a series of Consume() calls. The repository which is going to be analysed is supplied as an argument.
func (*CommitsAnalysis) ListConfigurationOptions ¶
func (ca *CommitsAnalysis) ListConfigurationOptions() []core.ConfigurationOption
ListConfigurationOptions returns the list of changeable public properties of this PipelineItem.
func (*CommitsAnalysis) Name ¶
func (ca *CommitsAnalysis) Name() string
Name of this PipelineItem. Uniquely identifies the type, used for mapping keys, etc.
func (*CommitsAnalysis) Provides ¶
func (ca *CommitsAnalysis) Provides() []string
Provides returns the list of names of entities which are produced by this PipelineItem. Each produced entity will be inserted into `deps` of dependent Consume()-s according to this list. Also used by core.Registry to build the global map of providers.
func (*CommitsAnalysis) Requires ¶
func (ca *CommitsAnalysis) Requires() []string
Requires returns the list of names of entities which are needed by this PipelineItem. Each requested entity will be inserted into `deps` of Consume(). In turn, those entities are Provides() upstream.
type CommitsResult ¶
type CommitsResult struct { Commits []*CommitStat // contains filtered or unexported fields }
CommitsResult is returned by CommitsAnalysis.Finalize() and carries the statistics per commit.
type CouplesAnalysis ¶
type CouplesAnalysis struct { core.NoopMerger core.OneShotMergeProcessor // PeopleNumber is the number of developers for which to build the matrix. 0 disables this analysis. PeopleNumber int // contains filtered or unexported fields }
CouplesAnalysis calculates the number of common commits for files and authors. The results are matrices, where cell at row X and column Y is the number of commits which changed X and Y together. In case with people, the numbers are summed for every common file.
func (*CouplesAnalysis) Configure ¶
func (couples *CouplesAnalysis) Configure(facts map[string]interface{}) error
Configure sets the properties previously published by ListConfigurationOptions().
func (*CouplesAnalysis) Consume ¶
func (couples *CouplesAnalysis) Consume(deps map[string]interface{}) (map[string]interface{}, error)
Consume runs this PipelineItem on the next commit data. `deps` contain all the results from upstream PipelineItem-s as requested by Requires(). Additionally, DependencyCommit is always present there and represents the analysed *object.Commit. This function returns the mapping with analysis results. The keys must be the same as in Provides(). If there was an error, nil is returned.
func (*CouplesAnalysis) Description ¶
func (couples *CouplesAnalysis) Description() string
Description returns the text which explains what the analysis is doing.
func (*CouplesAnalysis) Deserialize ¶
func (couples *CouplesAnalysis) Deserialize(pbmessage []byte) (interface{}, error)
Deserialize converts the specified protobuf bytes to CouplesResult.
func (*CouplesAnalysis) Finalize ¶
func (couples *CouplesAnalysis) Finalize() interface{}
Finalize returns the result of the analysis. Further Consume() calls are not expected.
func (*CouplesAnalysis) Flag ¶
func (couples *CouplesAnalysis) Flag() string
Flag for the command line switch which enables this analysis.
func (*CouplesAnalysis) Fork ¶
func (couples *CouplesAnalysis) Fork(n int) []core.PipelineItem
Fork clones this pipeline item.
func (*CouplesAnalysis) Initialize ¶
func (couples *CouplesAnalysis) Initialize(repository *git.Repository) error
Initialize resets the temporary caches and prepares this PipelineItem for a series of Consume() calls. The repository which is going to be analysed is supplied as an argument.
func (*CouplesAnalysis) ListConfigurationOptions ¶
func (couples *CouplesAnalysis) ListConfigurationOptions() []core.ConfigurationOption
ListConfigurationOptions returns the list of changeable public properties of this PipelineItem.
func (*CouplesAnalysis) MergeResults ¶
func (couples *CouplesAnalysis) MergeResults(r1, r2 interface{}, c1, c2 *core.CommonAnalysisResult) interface{}
MergeResults combines two CouplesAnalysis-s together.
func (*CouplesAnalysis) Name ¶
func (couples *CouplesAnalysis) Name() string
Name of this PipelineItem. Uniquely identifies the type, used for mapping keys, etc.
func (*CouplesAnalysis) Provides ¶
func (couples *CouplesAnalysis) Provides() []string
Provides returns the list of names of entities which are produced by this PipelineItem. Each produced entity will be inserted into `deps` of dependent Consume()-s according to this list. Also used by core.Registry to build the global map of providers.
func (*CouplesAnalysis) Requires ¶
func (couples *CouplesAnalysis) Requires() []string
Requires returns the list of names of entities which are needed by this PipelineItem. Each requested entity will be inserted into `deps` of Consume(). In turn, those entities are Provides() upstream.
type CouplesResult ¶
type CouplesResult struct { // PeopleMatrix is how many times developers changed files which were also changed by other developers. // The mapping's key is the other developer, and the value is the sum over all the files both developers changed. // Each element of that sum is min(C1, C2) where Ci is the number of commits developer i made which touched the file. PeopleMatrix []map[int]int64 // PeopleFiles is how many times developers changed files. The first dimension (left []) is developers, // and the second dimension (right []) is file indexes. PeopleFiles [][]int // FilesMatrix is how many times file pairs occurred in the same commit. FilesMatrix []map[int]int64 // FilesLines is the number of lines contained in each file from the last analyzed commit. FilesLines []int // Files is the names of the files. The order matches PeopleFiles' indexes and FilesMatrix. Files []string // contains filtered or unexported fields }
CouplesResult is returned by CouplesAnalysis.Finalize() and carries couples matrices from authors and files.
type DenseHistory ¶
type DenseHistory = [][]int64
DenseHistory is the matrix [number of samples][number of bands] -> number of lines.
y x
type DevTick ¶
type DevTick struct { // Commits is the number of commits made by a particular developer in a particular tick. Commits int items.LineStats // LanguagesDetection carries fine-grained line stats per programming language. Languages map[string]items.LineStats }
DevTick is the statistics for a development tick and a particular developer.
type DevsAnalysis ¶
type DevsAnalysis struct { core.NoopMerger core.OneShotMergeProcessor // ConsiderEmptyCommits indicates whether empty commits (e.g., merges) should be taken // into account. ConsiderEmptyCommits bool // contains filtered or unexported fields }
DevsAnalysis calculates the number of commits through time per developer. It also records the numbers of added, deleted and changed lines through time per developer. Those numbers are additionally measured per language.
func (*DevsAnalysis) Configure ¶
func (devs *DevsAnalysis) Configure(facts map[string]interface{}) error
Configure sets the properties previously published by ListConfigurationOptions().
func (*DevsAnalysis) Consume ¶
func (devs *DevsAnalysis) Consume(deps map[string]interface{}) (map[string]interface{}, error)
Consume runs this PipelineItem on the next commit data. `deps` contain all the results from upstream PipelineItem-s as requested by Requires(). Additionally, DependencyCommit is always present there and represents the analysed *object.Commit. This function returns the mapping with analysis results. The keys must be the same as in Provides(). If there was an error, nil is returned.
func (*DevsAnalysis) Description ¶
func (devs *DevsAnalysis) Description() string
Description returns the text which explains what the analysis is doing.
func (*DevsAnalysis) Deserialize ¶
func (devs *DevsAnalysis) Deserialize(pbmessage []byte) (interface{}, error)
Deserialize converts the specified protobuf bytes to DevsResult.
func (*DevsAnalysis) Finalize ¶
func (devs *DevsAnalysis) Finalize() interface{}
Finalize returns the result of the analysis. Further Consume() calls are not expected.
func (*DevsAnalysis) Flag ¶
func (devs *DevsAnalysis) Flag() string
Flag for the command line switch which enables this analysis.
func (*DevsAnalysis) Fork ¶
func (devs *DevsAnalysis) Fork(n int) []core.PipelineItem
Fork clones this pipeline item.
func (*DevsAnalysis) Initialize ¶
func (devs *DevsAnalysis) Initialize(repository *git.Repository) error
Initialize resets the temporary caches and prepares this PipelineItem for a series of Consume() calls. The repository which is going to be analysed is supplied as an argument.
func (*DevsAnalysis) ListConfigurationOptions ¶
func (devs *DevsAnalysis) ListConfigurationOptions() []core.ConfigurationOption
ListConfigurationOptions returns the list of changeable public properties of this PipelineItem.
func (*DevsAnalysis) MergeResults ¶
func (devs *DevsAnalysis) MergeResults(r1, r2 interface{}, c1, c2 *core.CommonAnalysisResult) interface{}
MergeResults combines two DevsAnalysis-es together.
func (*DevsAnalysis) Name ¶
func (devs *DevsAnalysis) Name() string
Name of this PipelineItem. Uniquely identifies the type, used for mapping keys, etc.
func (*DevsAnalysis) Provides ¶
func (devs *DevsAnalysis) Provides() []string
Provides returns the list of names of entities which are produced by this PipelineItem. Each produced entity will be inserted into `deps` of dependent Consume()-s according to this list. Also used by core.Registry to build the global map of providers.
func (*DevsAnalysis) Requires ¶
func (devs *DevsAnalysis) Requires() []string
Requires returns the list of names of entities which are needed by this PipelineItem. Each requested entity will be inserted into `deps` of Consume(). In turn, those entities are Provides() upstream.
type DevsResult ¶
type DevsResult struct { // Ticks is <tick index> -> <developer index> -> daily stats Ticks map[int]map[int]*DevTick // contains filtered or unexported fields }
DevsResult is returned by DevsAnalysis.Finalize() and carries the daily statistics per developer.
func (DevsResult) GetIdentities ¶ added in v10.1.0
func (dr DevsResult) GetIdentities() []string
GetIdentities returns the list of developer identities used to generate this devs analysis result. The format is |-joined keys, see internals/plumbing/identity for details.
func (DevsResult) GetTickSize ¶ added in v10.1.0
func (dr DevsResult) GetTickSize() time.Duration
GetTickSize returns the tick size used to generate this devs analysis result.
type FileHistory ¶
type FileHistory struct { // Hashes is the list of commit hashes which changed this file. Hashes []plumbing.Hash // People is the mapping from developers to the number of lines they altered. People map[int]items.LineStats }
FileHistory is the gathered stats about a particular file.
type FileHistoryAnalysis ¶
type FileHistoryAnalysis struct { core.NoopMerger core.OneShotMergeProcessor // contains filtered or unexported fields }
FileHistoryAnalysis contains the intermediate state which is mutated by Consume(). It should implement LeafPipelineItem.
func (*FileHistoryAnalysis) Configure ¶
func (history *FileHistoryAnalysis) Configure(facts map[string]interface{}) error
Configure sets the properties previously published by ListConfigurationOptions().
func (*FileHistoryAnalysis) Consume ¶
func (history *FileHistoryAnalysis) Consume(deps map[string]interface{}) (map[string]interface{}, error)
Consume runs this PipelineItem on the next commit data. `deps` contain all the results from upstream PipelineItem-s as requested by Requires(). Additionally, DependencyCommit is always present there and represents the analysed *object.Commit. This function returns the mapping with analysis results. The keys must be the same as in Provides(). If there was an error, nil is returned.
func (*FileHistoryAnalysis) Description ¶
func (history *FileHistoryAnalysis) Description() string
Description returns the text which explains what the analysis is doing.
func (*FileHistoryAnalysis) Finalize ¶
func (history *FileHistoryAnalysis) Finalize() interface{}
Finalize returns the result of the analysis. Further Consume() calls are not expected.
func (*FileHistoryAnalysis) Flag ¶
func (history *FileHistoryAnalysis) Flag() string
Flag for the command line switch which enables this analysis.
func (*FileHistoryAnalysis) Fork ¶
func (history *FileHistoryAnalysis) Fork(n int) []core.PipelineItem
Fork clones this PipelineItem.
func (*FileHistoryAnalysis) Initialize ¶
func (history *FileHistoryAnalysis) Initialize(repository *git.Repository) error
Initialize resets the temporary caches and prepares this PipelineItem for a series of Consume() calls. The repository which is going to be analysed is supplied as an argument.
func (*FileHistoryAnalysis) ListConfigurationOptions ¶
func (history *FileHistoryAnalysis) ListConfigurationOptions() []core.ConfigurationOption
ListConfigurationOptions returns the list of changeable public properties of this PipelineItem.
func (*FileHistoryAnalysis) Name ¶
func (history *FileHistoryAnalysis) Name() string
Name of this PipelineItem. Uniquely identifies the type, used for mapping keys, etc.
func (*FileHistoryAnalysis) Provides ¶
func (history *FileHistoryAnalysis) Provides() []string
Provides returns the list of names of entities which are produced by this PipelineItem. Each produced entity will be inserted into `deps` of dependent Consume()-s according to this list. Also used by core.Registry to build the global map of providers.
func (*FileHistoryAnalysis) Requires ¶
func (history *FileHistoryAnalysis) Requires() []string
Requires returns the list of names of entities which are needed by this PipelineItem. Each requested entity will be inserted into `deps` of Consume(). In turn, those entities are Provides() upstream.
type FileHistoryResult ¶
type FileHistoryResult struct {
Files map[string]FileHistory
}
FileHistoryResult is returned by Finalize() and represents the analysis result.
type ImportsMap ¶ added in v10.7.0
ImportsMap is the type of the mapping from dev indexes to languages to import names to ticks to usage counts. Ticks start counting from 0 and correspond to the earliest commit timestamp (included in the YAML/protobuf header).
type ImportsPerDeveloper ¶ added in v10.6.0
type ImportsPerDeveloper struct { core.NoopMerger core.OneShotMergeProcessor // TickSize defines the time mapping granularity (the last ImportsMap's key). TickSize time.Duration // contains filtered or unexported fields }
ImportsPerDeveloper collects imports per developer.
func (*ImportsPerDeveloper) Configure ¶ added in v10.6.0
func (ipd *ImportsPerDeveloper) Configure(facts map[string]interface{}) error
Configure sets the properties previously published by ListConfigurationOptions().
func (*ImportsPerDeveloper) Consume ¶ added in v10.6.0
func (ipd *ImportsPerDeveloper) Consume(deps map[string]interface{}) (map[string]interface{}, error)
Consume runs this PipelineItem on the next commit data. `deps` contain all the results from upstream PipelineItem-s as requested by Requires(). Additionally, DependencyCommit is always present there and represents the analysed *object.Commit. This function returns the mapping with analysis results. The keys must be the same as in Provides(). If there was an error, nil is returned.
func (*ImportsPerDeveloper) Description ¶ added in v10.6.0
func (ipd *ImportsPerDeveloper) Description() string
Description returns the text which explains what the analysis is doing.
func (*ImportsPerDeveloper) Deserialize ¶ added in v10.7.0
func (ipd *ImportsPerDeveloper) Deserialize(pbmessage []byte) (interface{}, error)
Deserialize converts the specified protobuf bytes to ImportsPerDeveloperResult.
func (*ImportsPerDeveloper) Finalize ¶ added in v10.6.0
func (ipd *ImportsPerDeveloper) Finalize() interface{}
Finalize returns the result of the analysis. Further Consume() calls are not expected.
func (*ImportsPerDeveloper) Flag ¶ added in v10.6.0
func (ipd *ImportsPerDeveloper) Flag() string
Flag for the command line switch which enables this analysis.
func (*ImportsPerDeveloper) Fork ¶ added in v10.6.0
func (ipd *ImportsPerDeveloper) Fork(n int) []core.PipelineItem
Fork clones this PipelineItem.
func (*ImportsPerDeveloper) Initialize ¶ added in v10.6.0
func (ipd *ImportsPerDeveloper) Initialize(repository *git.Repository) error
Initialize resets the temporary caches and prepares this PipelineItem for a series of Consume() calls. The repository which is going to be analysed is supplied as an argument.
func (*ImportsPerDeveloper) ListConfigurationOptions ¶ added in v10.6.0
func (ipd *ImportsPerDeveloper) ListConfigurationOptions() []core.ConfigurationOption
ListConfigurationOptions returns the list of changeable public properties of this PipelineItem.
func (*ImportsPerDeveloper) Name ¶ added in v10.6.0
func (ipd *ImportsPerDeveloper) Name() string
Name of this PipelineItem. Uniquely identifies the type, used for mapping keys, etc.
func (*ImportsPerDeveloper) Provides ¶ added in v10.6.0
func (ipd *ImportsPerDeveloper) Provides() []string
Provides returns the list of names of entities which are produced by this PipelineItem. Each produced entity will be inserted into `deps` of dependent Consume()-s according to this list. Also used by core.Registry to build the global map of providers.
func (*ImportsPerDeveloper) Requires ¶ added in v10.6.0
func (ipd *ImportsPerDeveloper) Requires() []string
Requires returns the list of names of entities which are needed by this PipelineItem. Each requested entity will be inserted into `deps` of Consume(). In turn, those entities are Provides() upstream.
func (*ImportsPerDeveloper) Serialize ¶ added in v10.6.0
func (ipd *ImportsPerDeveloper) Serialize(result interface{}, binary bool, writer io.Writer) error
Serialize converts the analysis result as returned by Finalize() to text or bytes. The text format is YAML and the bytes format is Protocol Buffers.
type ImportsPerDeveloperResult ¶ added in v10.6.0
type ImportsPerDeveloperResult struct { // Imports is the imports mapping, see the referenced type for details. Imports ImportsMap // contains filtered or unexported fields }
ImportsPerDeveloperResult is returned by Finalize() and represents the analysis result.
type NodeSummary ¶
NodeSummary carries the node attributes which annotate the "shotness" analysis' counters. These attributes are supposed to uniquely identify each node.
func (NodeSummary) String ¶
func (node NodeSummary) String() string
type ShotnessAnalysis ¶
type ShotnessAnalysis struct { core.NoopMerger core.OneShotMergeProcessor XpathStruct string XpathName string // contains filtered or unexported fields }
ShotnessAnalysis contains the intermediate state which is mutated by Consume(). It should implement LeafPipelineItem.
func (*ShotnessAnalysis) Configure ¶
func (shotness *ShotnessAnalysis) Configure(facts map[string]interface{}) error
Configure sets the properties previously published by ListConfigurationOptions().
func (*ShotnessAnalysis) Consume ¶
func (shotness *ShotnessAnalysis) Consume(deps map[string]interface{}) (map[string]interface{}, error)
Consume runs this PipelineItem on the next commit data. `deps` contain all the results from upstream PipelineItem-s as requested by Requires(). Additionally, DependencyCommit is always present there and represents the analysed *object.Commit. This function returns the mapping with analysis results. The keys must be the same as in Provides(). If there was an error, nil is returned.
func (*ShotnessAnalysis) Description ¶
func (shotness *ShotnessAnalysis) Description() string
Description returns the text which explains what the analysis is doing.
func (*ShotnessAnalysis) Features ¶ added in v10.3.0
func (shotness *ShotnessAnalysis) Features() []string
Features returns the Hercules features required to deploy this leaf.
func (*ShotnessAnalysis) Finalize ¶
func (shotness *ShotnessAnalysis) Finalize() interface{}
Finalize returns the result of the analysis. Further Consume() calls are not expected.
func (*ShotnessAnalysis) Flag ¶
func (shotness *ShotnessAnalysis) Flag() string
Flag returns the command line switch which activates the analysis.
func (*ShotnessAnalysis) Fork ¶
func (shotness *ShotnessAnalysis) Fork(n int) []core.PipelineItem
Fork clones this PipelineItem.
func (*ShotnessAnalysis) Initialize ¶
func (shotness *ShotnessAnalysis) Initialize(repository *git.Repository) error
Initialize resets the temporary caches and prepares this PipelineItem for a series of Consume() calls. The repository which is going to be analysed is supplied as an argument.
func (*ShotnessAnalysis) ListConfigurationOptions ¶
func (shotness *ShotnessAnalysis) ListConfigurationOptions() []core.ConfigurationOption
ListConfigurationOptions returns the list of changeable public properties of this PipelineItem.
func (*ShotnessAnalysis) Name ¶
func (shotness *ShotnessAnalysis) Name() string
Name of this PipelineItem. Uniquely identifies the type, used for mapping keys, etc.
func (*ShotnessAnalysis) Provides ¶
func (shotness *ShotnessAnalysis) Provides() []string
Provides returns the list of names of entities which are produced by this PipelineItem. Each produced entity will be inserted into `deps` of dependent Consume()-s according to this list. Also used by core.Registry to build the global map of providers.
func (*ShotnessAnalysis) Requires ¶
func (shotness *ShotnessAnalysis) Requires() []string
Requires returns the list of names of entities which are needed by this PipelineItem. Each requested entity will be inserted into `deps` of Consume(). In turn, those entities are Provides() upstream.
type ShotnessResult ¶
type ShotnessResult struct { Nodes []NodeSummary Counters []map[int]int }
ShotnessResult is returned by ShotnessAnalysis.Finalize() and represents the analysis result.