Skip to content
This repository has been archived by the owner on Sep 9, 2020. It is now read-only.

graphviz: project-package relationship graph #1588

Merged
merged 2 commits into from
Jul 20, 2018

Conversation

darkowlzz
Copy link
Collaborator

@darkowlzz darkowlzz commented Jan 26, 2018

What does this do / why do we need it?

This change introduces "clusters", which are projects with multiple
subpackages. Clusters are created using "subgraph" in dot syntax.

To create a project-package relationship graph, nodes and
subgraphs are created first. Nodes are created when a project has a
single package and that's the root package. A subgraph/cluster is
created when a project has multiple subpackages.

createSubgraph(project, packages) takes a project name and its packages
and creates nodes or subgraphs/clusters based on the packages.

Once all the nodes and subgraphs are created, a target project can be
passed to output(project) to generate a dot output
with all the nodes and subgraphs related to the target project.

Following relation scenarios have been covered:

  1. edge from a node within a cluster to a target cluster
  2. edge from a node within a cluster to a single node
  3. edge from a cluster to a target cluster
  4. edge from a cluster to a target single node
  5. edge from a cluster to a node within a cluster

A few screenshots of the dot output of the test:

subgraph1.dot
screen shot 2018-01-26 at 5 37 44 pm

subgraph2.dot
screen shot 2018-01-26 at 7 31 30 pm

subgraph3.dot
screen shot 2018-01-26 at 7 46 52 pm

subgraph4.dot
screen shot 2018-01-26 at 9 18 35 pm

The graphs of the dot outputs can also be generated using an online tool at http://www.webgraphviz.com/ .

What should your reviewer look out for in this PR?

The implementation.

Do you need help or clarification on anything?

Any kind of improvement/suggestions in how the graph appears?

Which issue(s) does this PR fix?

fixes #1547

@darkowlzz darkowlzz changed the title [WIP] graphviz: project-package relationship graph graphviz: project-package relationship graph Feb 10, 2018
Copy link
Member

@sdboyer sdboyer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good! Add a CHANGELOG entry, please 😄

This change introduces "clusters", which are projects with multiple
subpackages. Clusters are created using "subgraph" in dot syntax.

To create a project-package relationship graph, nodes and
subgraphs are created first. Nodes are created when a project has a
single package and that's the root package. A subgraph/cluster is
created when a project has multiple subpackages.

createSubgraph(project, packages) takes a project name and its packages
and creates nodes or subgraphs/clusters based on the packages.

Once all the nodes and subgraphs are created, a target project can be
passed to output(project) to generate a dot output with all the nodes and
subgraphs related to the target project.

Following relation scenarios have been covered:
1. edge from a node within a cluster to a target cluster
2. edge from a node within a cluster to a single node
3. edge from a cluster to a target cluster
4. edge from a cluster to a target single node
5. edge from a cluster to a node within a cluster
@darkowlzz
Copy link
Collaborator Author

Sorry for the delay.
Added a changelog entry.

@sdboyer sdboyer merged commit 22dc1dd into golang:master Jul 20, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Proposal] Project Relationship Graphs
3 participants