Documentation
¶
Overview ¶
Package lookout provides gRPC APIs to implement analysis servers and clients.
Services ¶
There are two services:
- Analyzer: analyzers process source code changes and provide analysis results as text comments, possibly linked to specific parts of the code.
2. Data: provides simple access to source code changes.
Index ¶
- Variables
- func RegisterAnalyzerServer(s *grpc.Server, srv AnalyzerServer)
- func RegisterDataServer(s *grpc.Server, srv *DataServerHandler)
- type AnalysisStatus
- type Analyzer
- type AnalyzerClient
- type AnalyzerComments
- type AnalyzerCommentsGroups
- type AnalyzerConfig
- type AnalyzerServer
- type Change
- type ChangeGetter
- type ChangeScanner
- type ChangesRequest
- type ClientChangeScanner
- type ClientFileScanner
- type Comment
- type CommentsFilterFn
- type CommitRevision
- type DataClient
- type DataServerHandler
- type Event
- type EventHandler
- type EventID
- type EventResponse
- type EventType
- type File
- type FileGetter
- type FileScanner
- type FilesRequest
- type FnChangeScanner
- type FnFileScanner
- type Poster
- type PushEvent
- type ReferencePointer
- type RepositoryInfo
- type ReviewEvent
- type Watcher
Constants ¶
This section is empty.
Variables ¶
var ( // NoErrStopWatcher if a new error of this kind is returned by EventHandler // the Watcher.Watch function exits without error. NoErrStopWatcher = errors.NewKind("Stop watcher") )
Functions ¶
func RegisterAnalyzerServer ¶
func RegisterAnalyzerServer(s *grpc.Server, srv AnalyzerServer)
func RegisterDataServer ¶
func RegisterDataServer(s *grpc.Server, srv *DataServerHandler)
Types ¶
type AnalysisStatus ¶ added in v0.0.3
type AnalysisStatus int
AnalysisStatus is the status reported to the provider to inform that we are performing an analysis, or that it has finished
const ( // ErrorAnalysisStatus represents an error status ErrorAnalysisStatus AnalysisStatus // FailureAnalysisStatus represents a failure status FailureAnalysisStatus // PendingAnalysisStatus represents a pending status PendingAnalysisStatus // SuccessAnalysisStatus represents a success status SuccessAnalysisStatus )
func (AnalysisStatus) String ¶ added in v0.0.3
func (st AnalysisStatus) String() string
type Analyzer ¶
type Analyzer struct {
Client AnalyzerClient
Config AnalyzerConfig
}
Analyzer is a struct of analyzer client and config
type AnalyzerClient ¶
type AnalyzerClient = pb.AnalyzerClient
func NewAnalyzerClient ¶
func NewAnalyzerClient(conn *grpc.ClientConn) AnalyzerClient
type AnalyzerComments ¶ added in v0.0.4
type AnalyzerComments struct {
Config AnalyzerConfig
Comments []*Comment
}
AnalyzerComments contains a group of comments and the config for the analyzer that created them
type AnalyzerCommentsGroups ¶ added in v0.6.0
type AnalyzerCommentsGroups []AnalyzerComments
AnalyzerCommentsGroups list of AnalyzerComments
func (AnalyzerCommentsGroups) Count ¶ added in v0.8.0
func (g AnalyzerCommentsGroups) Count() int
Count returns the total number of comments
func (AnalyzerCommentsGroups) Dedup ¶ added in v0.8.0
func (g AnalyzerCommentsGroups) Dedup() AnalyzerCommentsGroups
Dedup filters duplicated comments
func (AnalyzerCommentsGroups) Filter ¶ added in v0.6.0
func (g AnalyzerCommentsGroups) Filter(fn CommentsFilterFn) ([]AnalyzerComments, error)
Filter filters comments groups using CommentsFilterFn
type AnalyzerConfig ¶
type AnalyzerConfig struct {
Name string
// Addr is gRPC URL.
// can be defined only in global config, repository-scoped configuration is ignored
Addr string
// Disabled repository-scoped configuration can accept only true value, false value is ignored
Disabled bool
// Feedback is a url to be linked after each comment
Feedback string
// Settings any configuration for an analyzer
Settings map[string]interface{}
}
AnalyzerConfig is a configuration of analyzer
type AnalyzerServer ¶
type AnalyzerServer = pb.AnalyzerServer
type ChangeGetter ¶
type ChangeGetter interface {
// GetChanges returns a ChangeScanner that scans all changes according
// to the request.
GetChanges(context.Context, *ChangesRequest) (ChangeScanner, error)
}
ChangeGetter is used to retrieve code changes.
type ChangeScanner ¶
type ChangeScanner interface {
// Next advances the scanner to the next change. It returns true if a new
// change is found, and false otherwise. After the user is done scanning,
// Err must be called to check if all changes were consumed or there was an
// error.
Next() bool
// Err returns any error found during scanning.
Err() error
// Change returns the current change.
Change() *Change
// Close closes the scanner.
Close() error
}
ChangeScanner is a scanner for changes.
type ChangesRequest ¶
type ChangesRequest = pb.ChangesRequest
type ClientChangeScanner ¶
type ClientChangeScanner struct {
// contains filtered or unexported fields
}
func (*ClientChangeScanner) Change ¶
func (s *ClientChangeScanner) Change() *Change
func (*ClientChangeScanner) Close ¶
func (s *ClientChangeScanner) Close() error
func (*ClientChangeScanner) Err ¶
func (s *ClientChangeScanner) Err() error
func (*ClientChangeScanner) Next ¶
func (s *ClientChangeScanner) Next() bool
type ClientFileScanner ¶
type ClientFileScanner struct {
// contains filtered or unexported fields
}
func (*ClientFileScanner) Close ¶
func (s *ClientFileScanner) Close() error
func (*ClientFileScanner) Err ¶
func (s *ClientFileScanner) Err() error
func (*ClientFileScanner) File ¶
func (s *ClientFileScanner) File() *File
func (*ClientFileScanner) Next ¶
func (s *ClientFileScanner) Next() bool
type CommentsFilterFn ¶ added in v0.6.0
CommentsFilterFn is a function that filters comments
type CommitRevision ¶
type CommitRevision = pb.CommitRevision
CommitRevision defines a range of commits, from a base to a head
type DataClient ¶
type DataClient struct {
// contains filtered or unexported fields
}
func NewDataClient ¶
func NewDataClient(cc *grpc.ClientConn) *DataClient
func (*DataClient) GetChanges ¶
func (c *DataClient) GetChanges(ctx context.Context, in *ChangesRequest, opts ...grpc.CallOption) ( ChangeScanner, error)
func (*DataClient) GetFiles ¶
func (c *DataClient) GetFiles(ctx context.Context, in *FilesRequest, opts ...grpc.CallOption) ( FileScanner, error)
type DataServerHandler ¶
type DataServerHandler struct {
ChangeGetter ChangeGetter
FileGetter FileGetter
}
func (*DataServerHandler) GetChanges ¶
func (s *DataServerHandler) GetChanges(req *ChangesRequest, srv pb.Data_GetChangesServer) (err error)
func (*DataServerHandler) GetFiles ¶
func (s *DataServerHandler) GetFiles(req *FilesRequest, srv pb.Data_GetFilesServer) (err error)
type Event ¶
type Event interface {
// ID returns the EventID.
ID() EventID
// Type returns the EventType, in order to identify the concreate type of
// the event.
Type() EventType
// Revision returns a commit revision, containing the head and the base of
// the changes.
Revision() *CommitRevision
// Validate returns an error if the event is malformed
Validate() error
// GetProvider returns the name of the provider that created this event
GetProvider() string
// GetOrganizationID returns the organization to which this event's repository
// belongs to
GetOrganizationID() string
}
Event represents a repository event.
type EventHandler ¶
EventHandler is the function to be called when a new event happens.
func CachedHandler ¶ added in v0.3.0
func CachedHandler(fn EventHandler) EventHandler
CachedHandler wraps an EventHandler, keeping a cache to skip successfully processed Events
type EventResponse ¶
type EventResponse = pb.EventResponse
type FileGetter ¶
type FileGetter interface {
// GetFiles returns a FilesScanner that scans all files according
// to the request.
GetFiles(context.Context, *FilesRequest) (FileScanner, error)
}
FileGetter is used to retrieve all code for a revision.
type FileScanner ¶
type FileScanner interface {
// Next advances the scanner to the next file. It returns true if a new
// file is found, and false otherwise. After the user is done scanning,
// Err must be called to check if all files were consumed or there was an
// error.
Next() bool
// Err returns any error found during scanning.
Err() error
// File returns the current file.
File() *File
// Close closes the scanner.
Close() error
}
FileScanner is a scanner for files.
type FilesRequest ¶
type FilesRequest = pb.FilesRequest
type FnChangeScanner ¶
type FnChangeScanner struct {
Scanner ChangeScanner
Fn func(*Change) (bool, error)
OnStart func() error
// contains filtered or unexported fields
}
FnChangeScanner implements ChangeScanner using functions
func (*FnChangeScanner) Change ¶
func (s *FnChangeScanner) Change() *Change
func (*FnChangeScanner) Close ¶
func (s *FnChangeScanner) Close() error
func (*FnChangeScanner) Err ¶
func (s *FnChangeScanner) Err() error
func (*FnChangeScanner) Next ¶
func (s *FnChangeScanner) Next() bool
type FnFileScanner ¶
type FnFileScanner struct {
Scanner FileScanner
Fn func(*File) (bool, error)
OnStart func() error
// contains filtered or unexported fields
}
FnFileScanner implements FileScanner using functions
func (*FnFileScanner) Close ¶
func (s *FnFileScanner) Close() error
func (*FnFileScanner) Err ¶
func (s *FnFileScanner) Err() error
func (*FnFileScanner) File ¶
func (s *FnFileScanner) File() *File
func (*FnFileScanner) Next ¶
func (s *FnFileScanner) Next() bool
type Poster ¶
type Poster interface {
// Post posts comments about an event.
// poster should make sure comments weren't posted before if safe is true
Post(ctx context.Context, e Event, cs []AnalyzerComments, safe bool) error
// Status sends the current analysis status to the provider
Status(context.Context, Event, AnalysisStatus) error
}
Poster can post comments about an event.
type PushEvent ¶
type PushEvent struct {
pb.PushEvent
// OrganizationID is the organization to which this event's repository
// belongs to
OrganizationID string
}
PushEvent represents a Push to a git repository. It wraps the pb.PushEvent adding information only relevant to lookout, and not for the analyzers.
func (*PushEvent) GetOrganizationID ¶ added in v0.8.0
GetOrganizationID returns the organization to which this event's repository belongs to
func (*PushEvent) GetProvider ¶ added in v0.8.0
GetProvider returns the name of the provider that created this event
type ReferencePointer ¶
type ReferencePointer = pb.ReferencePointer
ReferencePointer is a pointer to a git refererence in a repository
type RepositoryInfo ¶
type RepositoryInfo = pb.RepositoryInfo
RepositoryInfo contains information about a repository
type ReviewEvent ¶
type ReviewEvent struct {
pb.ReviewEvent
// OrganizationID is the organization to which this event's repository
// belongs to
OrganizationID string
}
ReviewEvent represents a Review (pull request in case of GitHub) being created or updated. It wraps the pb.PushEvent adding information only relevant to lookout, and not for the analyzers.
func (*ReviewEvent) GetOrganizationID ¶ added in v0.8.0
func (e *ReviewEvent) GetOrganizationID() string
GetOrganizationID returns the organization to which this event's repository belongs to
func (*ReviewEvent) GetProvider ¶ added in v0.8.0
func (e *ReviewEvent) GetProvider() string
GetProvider returns the name of the provider that created this event
type Watcher ¶
type Watcher interface {
// Watch for new events triggering the EventHandler for each new issue,
// it stops until an error is returned by the EventHandler. Network errors
// or other temporal errors are handled as non-fatal errors, just logging it.
Watch(context.Context, EventHandler) error
}
Watcher watch for new events in given provider.
Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
dummy
command
|
|
|
lookout-sdk
command
|
|
|
lookoutd
command
|
|
|
Package dummy implements an example analyzer.
|
Package dummy implements an example analyzer. |
|
provider
|
|
|
service
|
|
|
bblfsh
Package bblfsh provides access to bblfsh parsing for the data service.
|
Package bblfsh provides access to bblfsh parsing for the data service. |
|
git
Package git provides access to git repositories.
|
Package git provides access to git repositories. |
|
models
Code generated by https://github.com/src-d/go-kallax.
|
Code generated by https://github.com/src-d/go-kallax. |
|
util
|
|