# Go source analysis report
## Scope
- Directory `.`
- Module `github.com/shimabox/diagoram`
- Build context `union`
- Diagnostics `0`
## Analysis settings
- Public API `disabled`
- Unexported identifiers `included`
- Type aliases `included`
- Fields `included`
- Methods `included`
- Interface implementations `included`
- Constants in diagram `not included`
- Package functions in diagram `not included`
- Function filters `none`
- Method filters `none`
- Receiver filters `none`
- Include files `*.go`
- Exclude files `*_test.go`
- Include directories `none`
- Exclude directories `tmp`
- Generated files `included`
- Relation targets `none`
- Members per diagram category `unlimited`
- Dependency reasons `included`
## Structural summary
```text
diagoram: 9 packages, 42 structs, 3 interfaces, 6 named types, 167 functions
cmd/diagoram/
package functions count=1
internal/cli/
Options (struct) fields=35 methods=0
package functions count=16
internal/diagram/
Diagram (struct) fields=3 methods=1 → Edge [field,method-param], EdgeReasons [field,method-result,map-value], PackageNode [field], edgeKey [field,map-key]
Edge (struct) fields=6 methods=0 → EdgeKind [field]
EdgeKind (type) constants=4 methods=0
EdgeReasons (type) constants=11 methods=0
Entry (struct) fields=9 methods=0 → Kind [field], gocode.Field [field], gocode.Function [field], gocode.Method [field], gocode.NamedType [field], gocode.TypeParam [field]
Kind (type) constants=4 methods=0
PackageEdge (struct) fields=4 methods=0
PackageGraph (struct) fields=3 methods=0 → PackageEdge [field], PackageNode [field]
PackageNode (struct) fields=5 methods=0 → Entry [field]
RelTargetNotFoundError (struct) fields=2 methods=1
SummaryOptions (struct) fields=8 methods=0
concreteMethodSets (struct) fields=2 methods=0 → gocode.Method [field,map-value]
edgeKey (struct) fields=3 methods=0 → EdgeKind [field]
entryKey (struct) fields=2 methods=0
entrySummaryMeta (struct) fields=3 methods=0
package functions count=58
pkgPair (struct) fields=2 methods=0
internal/gocode/
BuildContext (struct) fields=3 methods=0
Constant (struct) fields=3 methods=0
Field (struct) fields=3 methods=0 → TypeRef [field]
Function (struct) fields=5 methods=0 → TypeRef [field]
GeneratedFileMode (type) constants=3 methods=0
Import (struct) fields=2 methods=0
Interface (struct) fields=5 methods=0 → Method [field], TypeParam [field], TypeRef [field]
Method (struct) fields=5 methods=0 → TypeRef [field]
NamedType (struct) fields=9 methods=0 → Constant [field], Method [field], NamedTypeKind [field], TypeParam [field], TypeRef [field]
NamedTypeKind (type) constants=6 methods=0
Package (struct) fields=7 methods=0 → Function [field], Import [field], Interface [field], NamedType [field], Struct [field]
ParseOptions (struct) fields=6 methods=0 → BuildContext [field], GeneratedFileMode [field]
Struct (struct) fields=6 methods=0 → Field [field], Method [field], TypeParam [field], TypeRef [field]
TypeParam (struct) fields=2 methods=0 → TypeRef [field]
TypeRef (struct) fields=8 methods=0 → TypeRelation [field]
TypeRelation (type) constants=4 methods=0
Warning (struct) fields=3 methods=1
dirFiles (struct) fields=3 methods=0
fileDecls (struct) fields=7 methods=0 → Constant [field,map-value], Function [field], Interface [field], Method [field,map-value], NamedType [field], Struct [field], pendingConstant [field]
package functions count=35
pendingConstant (struct) fields=2 methods=0 → Constant [field]
internal/portal/
Artifacts (struct) fields=6 methods=0
Meta (struct) fields=3 methods=0
Result (struct) fields=1 methods=0
indexPageData (struct) fields=3 methods=0
mermaidPageData (struct) fields=5 methods=0
package functions count=11
pumlPageData (struct) fields=3 methods=0
reportPageData (struct) fields=3 methods=0
textPageData (struct) fields=3 methods=0
internal/render/
Options (struct) fields=11 methods=0
PackageGraphRenderer (interface) methods=1 → Options [method-param], Renderer [embedding], diagram.PackageGraph [method-param] ← implements: *mermaid.Renderer, *plantuml.Renderer
Renderer (interface) methods=1 → Options [method-param], diagram.Diagram [method-param] ← implements: *mermaid.Renderer, *plantuml.Renderer
internal/render/mermaid/
Renderer (struct) fields=0 methods=2 → diagram.Diagram [method-param], diagram.PackageGraph [method-param], render.Options [method-param]
package functions count=23
internal/render/plantuml/
Renderer (struct) fields=0 methods=2 → diagram.Diagram [method-param], diagram.PackageGraph [method-param], render.Options [method-param]
package functions count=22
internal/testutil/
TestingT (interface) methods=2
package functions count=1
```
## Types and relationships
```mermaid
classDiagram
namespace internal_cli {
class internal_cli_Options["Options"] {
+Help bool
+Version bool
+ClassDiagram bool
+PackageDiagram bool
+Format string
+ShowExternal bool
+HideUnexported bool
+HideAliases bool
+PublicAPI bool
+ShowConstants bool
+ShowFunctions bool
+FunctionPatterns string[]
+MethodPatterns string[]
+ReceiverPatterns string[]
+MaxMembers int
+DisableFields bool
+DisableMethods bool
+DisableImplements bool
+ShowEdgeReasons bool
+Summary bool
+Report bool
+HTMLDir string
+RelTargets string[]
+RelTargetDepth int
+Include string[]
+Exclude string[]
+ExcludeDirs string[]
+IncludeDirs string[]
+ExcludeGenerated bool
+GeneratedOnly bool
+GOOS string
+GOARCH string
+BuildTags string[]
+BuildContextMode string
+Dir string
}
}
namespace internal_diagram {
class internal_diagram_Diagram["Diagram"] {
+Root *PackageNode
+Edges Edge[]
-edgeReasons Map~edgeKey,EdgeReasons~
+ReasonsFor(Edge) EdgeReasons
}
class internal_diagram_Edge["Edge"] {
+From string
+To string
+Kind EdgeKind
+ToCollection bool
+Unexported bool
+PointerOnly bool
}
class internal_diagram_EdgeKind["EdgeKind"] {
<<type>>
type int
}
class internal_diagram_EdgeReasons["EdgeReasons"] {
<<type>>
type uint32
}
class internal_diagram_Entry["Entry"] {
+ID string
+Name string
+TypeParams gocode.TypeParam[]
+Kind Kind
+Doc string
+Fields gocode.Field[]
+Methods gocode.Method[]
+NamedType *gocode.NamedType
+Functions gocode.Function[]
}
class internal_diagram_Kind["Kind"] {
<<type>>
type int
}
class internal_diagram_PackageEdge["PackageEdge"] {
+From string
+To string
+Mutual bool
+External bool
}
class internal_diagram_PackageGraph["PackageGraph"] {
+Root *PackageNode
+Edges PackageEdge[]
+HasRootPackage bool
}
class internal_diagram_PackageNode["PackageNode"] {
+Name string
+Path string
+PackageName string
+Children *PackageNode[]
+Entries *Entry[]
}
class internal_diagram_RelTargetNotFoundError["RelTargetNotFoundError"] {
+Missing string[]
+Candidates string[]
+Error() string
}
class internal_diagram_SummaryOptions["SummaryOptions"] {
+HideUnexported bool
+DisableFields bool
+DisableMethods bool
+DisableImplements bool
+FunctionPatterns string[]
+MethodPatterns string[]
+ReceiverPatterns string[]
+ShowEdgeReasons bool
}
class internal_diagram_concreteMethodSets["concreteMethodSets"] {
-value Map~string,gocode.Method~
-pointer Map~string,gocode.Method~
}
class internal_diagram_edgeKey["edgeKey"] {
+From string
+To string
+Kind EdgeKind
}
class internal_diagram_entryKey["entryKey"] {
+Dir string
+Name string
}
class internal_diagram_entrySummaryMeta["entrySummaryMeta"] {
-name string
-dir string
-packageName string
}
class internal_diagram_pkgPair["pkgPair"] {
+From string
+To string
}
}
namespace internal_gocode {
class internal_gocode_BuildContext["BuildContext"] {
+GOOS string
+GOARCH string
+Tags string[]
}
class internal_gocode_Constant["Constant"] {
+Name string
+Doc string
+Exported bool
}
class internal_gocode_Field["Field"] {
+Name string
+Type TypeRef
+Exported bool
}
class internal_gocode_Function["Function"] {
+Name string
+Doc string
+Params TypeRef[]
+Results TypeRef[]
+Exported bool
}
class internal_gocode_GeneratedFileMode["GeneratedFileMode"] {
<<type>>
type int
}
class internal_gocode_Import["Import"] {
+Alias string
+Path string
}
class internal_gocode_Interface["Interface"] {
+Name string
+TypeParams TypeParam[]
+Doc string
+Methods Method[]
+Embeds TypeRef[]
}
class internal_gocode_Method["Method"] {
+Name string
+Params TypeRef[]
+Results TypeRef[]
+Exported bool
+PointerReceiver bool
}
class internal_gocode_NamedType["NamedType"] {
+Name string
+Doc string
+TypeParams TypeParam[]
+Kind NamedTypeKind
+Underlying TypeRef
+Params TypeRef[]
+Results TypeRef[]
+Methods Method[]
+Constants Constant[]
}
class internal_gocode_NamedTypeKind["NamedTypeKind"] {
<<type>>
type int
}
class internal_gocode_Package["Package"] {
+Dir string
+Name string
+Imports Import[]
+Structs *Struct[]
+Interfaces *Interface[]
+NamedTypes *NamedType[]
+Functions Function[]
}
class internal_gocode_ParseOptions["ParseOptions"] {
+Includes string[]
+Excludes string[]
+ExcludeDirs string[]
+IncludeDirs string[]
+GeneratedFiles GeneratedFileMode
+BuildContext *BuildContext
}
class internal_gocode_Struct["Struct"] {
+Name string
+TypeParams TypeParam[]
+Doc string
+Fields Field[]
+Embeds TypeRef[]
+Methods Method[]
}
class internal_gocode_TypeParam["TypeParam"] {
+Name string
+Constraint TypeRef
}
class internal_gocode_TypeRef["TypeRef"] {
+PkgName string
+Name string
+IsSlice bool
+IsMap bool
+IsPtr bool
+String string
+Related TypeRef[]
+Relation TypeRelation
}
class internal_gocode_TypeRelation["TypeRelation"] {
<<type>>
type int
}
class internal_gocode_Warning["Warning"] {
+File string
+Err error
+BuildExpression string
+Error() string
}
class internal_gocode_dirFiles["dirFiles"] {
+Dir string
+AbsDir string
+Files string[]
}
class internal_gocode_fileDecls["fileDecls"] {
+Structs *Struct[]
+Interfaces *Interface[]
+NamedTypes *NamedType[]
+Methods Map~string,Method[]~
+Constants Map~string,Constant[]~
+PendingConstants pendingConstant[]
+Functions Function[]
}
class internal_gocode_pendingConstant["pendingConstant"] {
+Constant Constant
+RefName string
}
}
namespace internal_portal {
class internal_portal_Artifacts["Artifacts"] {
+ClassMermaid string
+PackageMermaid string
+ClassPlantUML string
+PackagePlantUML string
+Summary string
+ReportMarkdown string
}
class internal_portal_Meta["Meta"] {
+Dir string
+ModulePath string
+Version string
}
class internal_portal_Result["Result"] {
+IndexPath string
}
class internal_portal_indexPageData["indexPageData"] {
+Dir string
+ModulePath string
+Version string
}
class internal_portal_mermaidPageData["mermaidPageData"] {
+Title string
+SourceFile string
+Source string
+Skipped bool
+SkipReason string
}
class internal_portal_pumlPageData["pumlPageData"] {
+Title string
+SourceFile string
+Source string
}
class internal_portal_reportPageData["reportPageData"] {
+Title string
+SourceFile string
+Markdown string
}
class internal_portal_textPageData["textPageData"] {
+Title string
+SourceFile string
+Content string
}
}
namespace internal_render {
class internal_render_Options["Options"] {
+HideUnexported bool
+ShowConstants bool
+ShowFunctions bool
+FunctionPatterns string[]
+MethodPatterns string[]
+ReceiverPatterns string[]
+MaxMembers int
+ShowEdgeReasons bool
+DisableFields bool
+DisableMethods bool
+DisableImplements bool
}
class internal_render_PackageGraphRenderer["PackageGraphRenderer"] {
<<interface>>
+RenderPackageGraph(*diagram.PackageGraph, Options) string, error
}
class internal_render_Renderer["Renderer"] {
<<interface>>
+Render(*diagram.Diagram, Options) string, error
}
}
namespace internal_render_mermaid {
class internal_render_mermaid_Renderer["Renderer"] {
+Render(*diagram.Diagram, render.Options) string, error
+RenderPackageGraph(*diagram.PackageGraph, render.Options) string, error
}
}
namespace internal_render_plantuml {
class internal_render_plantuml_Renderer["Renderer"] {
+RenderPackageGraph(*diagram.PackageGraph, render.Options) string, error
+Render(*diagram.Diagram, render.Options) string, error
}
}
namespace internal_testutil {
class internal_testutil_TestingT["TestingT"] {
<<interface>>
+Helper()
+Fatalf(string, ...any)
}
}
internal_diagram_Diagram ..> internal_diagram_Edge : *, field, method-param
internal_diagram_Diagram ..> internal_diagram_EdgeReasons : *, field, method-result, map-value
internal_diagram_Diagram ..> internal_diagram_PackageNode : field
internal_diagram_Diagram ..> internal_diagram_edgeKey : field, map-key
internal_diagram_Edge ..> internal_diagram_EdgeKind : field
internal_diagram_Entry ..> internal_diagram_Kind : field
internal_diagram_Entry ..> internal_gocode_Field : *, field
internal_diagram_Entry ..> internal_gocode_Function : *, field
internal_diagram_Entry ..> internal_gocode_Method : *, field
internal_diagram_Entry ..> internal_gocode_NamedType : field
internal_diagram_Entry ..> internal_gocode_TypeParam : *, field
internal_diagram_PackageGraph ..> internal_diagram_PackageEdge : *, field
internal_diagram_PackageGraph ..> internal_diagram_PackageNode : field
internal_diagram_PackageNode ..> internal_diagram_Entry : *, field
internal_diagram_concreteMethodSets ..> internal_gocode_Method : *, field, map-value
internal_diagram_edgeKey ..> internal_diagram_EdgeKind : field
internal_gocode_Field ..> internal_gocode_TypeRef : field
internal_gocode_Function ..> internal_gocode_TypeRef : *, field
internal_gocode_Interface ..> internal_gocode_Method : *, field
internal_gocode_Interface ..> internal_gocode_TypeParam : *, field
internal_gocode_Interface ..> internal_gocode_TypeRef : *, field
internal_gocode_Method ..> internal_gocode_TypeRef : *, field
internal_gocode_NamedType ..> internal_gocode_Constant : *, field
internal_gocode_NamedType ..> internal_gocode_Method : *, field
internal_gocode_NamedType ..> internal_gocode_NamedTypeKind : field
internal_gocode_NamedType ..> internal_gocode_TypeParam : *, field
internal_gocode_NamedType ..> internal_gocode_TypeRef : *, field
internal_gocode_Package ..> internal_gocode_Function : *, field
internal_gocode_Package ..> internal_gocode_Import : *, field
internal_gocode_Package ..> internal_gocode_Interface : *, field
internal_gocode_Package ..> internal_gocode_NamedType : *, field
internal_gocode_Package ..> internal_gocode_Struct : *, field
internal_gocode_ParseOptions ..> internal_gocode_BuildContext : field
internal_gocode_ParseOptions ..> internal_gocode_GeneratedFileMode : field
internal_gocode_Struct ..> internal_gocode_Field : *, field
internal_gocode_Struct ..> internal_gocode_Method : *, field
internal_gocode_Struct ..> internal_gocode_TypeParam : *, field
internal_gocode_Struct ..> internal_gocode_TypeRef : *, field
internal_gocode_TypeParam ..> internal_gocode_TypeRef : field
internal_gocode_TypeRef ..> internal_gocode_TypeRelation : field
internal_gocode_fileDecls ..> internal_gocode_Constant : *, field, map-value
internal_gocode_fileDecls ..> internal_gocode_Function : *, field
internal_gocode_fileDecls ..> internal_gocode_Interface : *, field
internal_gocode_fileDecls ..> internal_gocode_Method : *, field, map-value
internal_gocode_fileDecls ..> internal_gocode_NamedType : *, field
internal_gocode_fileDecls ..> internal_gocode_Struct : *, field
internal_gocode_fileDecls ..> internal_gocode_pendingConstant : *, field
internal_gocode_pendingConstant ..> internal_gocode_Constant : field
internal_render_PackageGraphRenderer ..> internal_diagram_PackageGraph : method-param
internal_render_PackageGraphRenderer ..> internal_render_Options : method-param
internal_render_PackageGraphRenderer --|> internal_render_Renderer : embedding
internal_render_Renderer ..> internal_diagram_Diagram : method-param
internal_render_Renderer ..> internal_render_Options : method-param
internal_render_mermaid_Renderer ..> internal_diagram_Diagram : method-param
internal_render_mermaid_Renderer ..> internal_diagram_PackageGraph : method-param
internal_render_mermaid_Renderer ..> internal_render_Options : method-param
internal_render_mermaid_Renderer ..|> internal_render_PackageGraphRenderer : pointer receiver, method-set
internal_render_mermaid_Renderer ..|> internal_render_Renderer : pointer receiver, method-set
internal_render_plantuml_Renderer ..> internal_diagram_Diagram : method-param
internal_render_plantuml_Renderer ..> internal_diagram_PackageGraph : method-param
internal_render_plantuml_Renderer ..> internal_render_Options : method-param
internal_render_plantuml_Renderer ..|> internal_render_PackageGraphRenderer : pointer receiver, method-set
internal_render_plantuml_Renderer ..|> internal_render_Renderer : pointer receiver, method-set
```
## Diagnostics
None
Some embedded diagrams could not be rendered in the browser. Their source is shown instead.