Go - 1.0

Extension ID

com.castsoftware.go

What’s new?

See Go 1.0 - Release Notes.

Description

This extension provides support for the Go programming language: https://go.dev/external link.

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

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.
type S struct {
}
 
func (s S) m() string {
}
 
func f() {
    my_var := S {
    }
    my_var.m()
}

Go Analyzer will generate this Call link:

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):

type I interface {
    m()
}
 
type S struct {
}
 
func (s S) m() {
}

Go Analyzer will generate these Inherit Implement links:

Go Analyzer will generate Inherit Override links between Go Methods and Abstract Go Methods as shown in the image above.

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:

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:


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-alpha1external link