Go - 1.0
Extension ID
com.castsoftware.go
What’s new?
Description
This extension provides support for the Go programming language: https://go.dev/ .
Technology support
Component | Version | Supported |
---|---|---|
Go | 1.x | ✔️ |
Supported file types
The following file types will be analyzed by the extension:
- .go
- .mod
Function Point, Quality and Sizing support
This extension provides the following support:
- Function Points (transactions): a green tick indicates that OMG Function Point counting and Transaction Risk Index are supported
- Quality and Sizing: a tick indicates that CAST can measure size and that a minimum set of Quality Rules exist
Item | Supported |
---|---|
Function Points (transactions) | ✔️ |
Quality and Sizing | ✔️ |
Compatibility
CAST Imaging Core release | Operating System | Supported |
---|---|---|
8.3.x | Microsoft Windows | ✔️ |
Download and installation instructions
Whenever source code containing files with the extensions listed above is delivered for analysis, this extension will be automatically installed by CAST Imaging Console.
What results can you expect?
Objects
Icon | MetaModel Name |
---|---|
Go Package | |
Go Module | |
Go Struct | |
Go Type | |
Go Interface | |
Go Method | |
Go Abstract Method | |
Go Function | |
Go Field |
Links
Analysis of the Go application will result in the following links:
- callLink: Created when a method/abstract method or a function is called. These links connect Go Method/Abstract Go Method and Go Function objects between them.
- inheritExtendLink: Represents direct inheritance between:
- Go Struct and Go Struct objects,
- Go Type and Go Type objects,
- Go Interface and Go Interface objects.
- inheritImplementLink: Represents inheritance between:
- Go Struct and Go Interface objects,
- Go Type and Go Interface objects,
- Go Method and Abstract Go Method objects.
- inheritOverridetLink: Represents inheritance between Go Method and Abstract Go Method objects.
- accessReadLink: Created when a field is called. These links connect:
- Go Function and Go Field objects,
- Go Method and Go Field objects.
- mentionLink: Created when a struct is called. These links connect Go Function and Go Struct objects.
- relyOnLink: Created when a struct, a type or a interface is called. These links connect:
- Go Function and Go Struct objects,
- Go Function and Go Type objects,
- Go Function and Go Interface objects.
callLink
type S struct {
}
func (s S) m() string {
}
func f() {
my_var := S {
}
my_var.m()
}
Go Analyzer will generate this Call link:
inheritExtendLink
Example 1:
type I1 interface {
}
type I2 interface {
I1
}
Go Analyzer will generate this Inherit Extend link (Go Interface):
Example 2:
type S1 struct {
}
type S2 struct {
S1
Go Analyzer will generate this Inherit Extend link (Go Struct):
inheritImplementLink
type I interface {
m()
}
type S struct {
}
func (s S) m() {
}
Go Analyzer will generate these Inherit Implement links:
inheritOverrideLink
Go Analyzer will generate Inherit Override links between Go Methods and Abstract Go Methods as shown in the image above.
accessReadLink
type S struct {
field string
}
func (s S) m() string {
return s.field
}
func main() {
my_var := S {
field: "Field",
}
my_var.m()
my_var.field
}
Go Analyzer will generate these Access Read links:
mentionLink
type I interface {
m()
}
type S struct {
}
func (s S) m() {
}
func f() I {
return S {}
}
Go Analyzer will generate this Mention link when a Go Struct type is mentioned:
relyOnLink
type I interface {
m()
}
type S struct {
}
func (s S) m() {
}
func f() {
my_var := S {}
var v I = my_var
}
Go Analyzer will generate these Rely On links when the variables are declared as Go Struct and Go Interface types (and an additonal mentionLink as above):
Structural Rules
Release | Link |
---|---|
1.0.0-alpha1 | https://technologies.castsoftware.com/rules?sec=srs_go&ref=||1.0.0-alpha1 |