SlideShare a Scribd company logo
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止
Static analysis for go lang
Selft-Introduction
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止
daisuke0131 



After graduated from university, Joined Fujitsu Laboratories. 

I developed firmware, AI, Web services, ios/android apps. 



After the career, Joined startups to experience something new. 



Joined ANDPAD in 2016. Developed mobile applications. 

山下 大輔 Daisuke Yamashita



ANDPAD Chief Development Officer
Self-Introduction
What is ANDPAD?
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止
What is ANDPAD?
Confidential
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止
・Project Management System For Construction Industry
・Project Management, Chat, Blueprint, Inspection, Schedule Adjustment
swift/kotlin swift/kotlin swift ReactNative→Flutter Flutter
Many features in ANDPAD
Confidential
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止
Project Management
Chat Communication
Inspection
Blueprint
The others
ANDPAD
Built by Ruby on Rails Microservices by Go
Notifications
Approval
Authorization
・・・
Static analysis
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止
Development cycle
Confidential
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止
Requirement
Definition
Implementation QA test release
Cost gradually increases
Confidential
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止
Implementation QA test release
increased cost
Shift-Left
Requirement
Definition
Why should we use static analysis?
Confidential
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止
QA test release
static analysis
unit test/
integration test
Requirement
Definition Implementation
Static analysis for Go
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止
Static Analysis for Go
Confidential
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止
Structure Analysis
Type Check
Static Single Assignment(SSA)
Pointer Analysis
ref) https://docs.google.com/presentation/d/1I4pHnzV2dFOMbRcpA-XD0TaLcX6PBKpls6WxGHoMjOg/edit#slide=id.g80ffbfd5e3_0_168
Static Analysis for Go
Confidential
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止
Structure Analysis
Type Check
Static Single Assignment(SSA)
Pointer Analysis
ref) https://docs.google.com/presentation/d/1I4pHnzV2dFOMbRcpA-XD0TaLcX6PBKpls6WxGHoMjOg/edit#slide=id.g80ffbfd5e3_0_168
how to analyze the sourcecode
Static Analysis for Go
Confidential
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止
Structure Analysis
Type Check
Static Single Assignment(SSA)
Pointer Analysis
ref) https://docs.google.com/presentation/d/1I4pHnzV2dFOMbRcpA-XD0TaLcX6PBKpls6WxGHoMjOg/edit#slide=id.g80ffbfd5e3_0_168
how to check the detail.
Structure Analysis
Confidential
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止
Structure Analysis
Type Check
Static Single Assignment(SSA)
Pointer Analysis
ref) https://docs.google.com/presentation/d/1I4pHnzV2dFOMbRcpA-XD0TaLcX6PBKpls6WxGHoMjOg/edit#slide=id.g80ffbfd5e3_0_168
a+1
a
+
1
BinaryExpr
Ident BasicLit
AST
(Abstract Syntax Tree):
Code:
Structure Analysis
Confidential
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止
ref) https://go.dev/play/p/9jenf3yjoWg
Code:
AST:
Static Single Assignment(SSA)
Confidential
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止
Structure Analysis
Type Check
Static Single Assignment(SSA)
Pointer Analysis
ref) https://docs.google.com/presentation/d/1I4pHnzV2dFOMbRcpA-XD0TaLcX6PBKpls6WxGHoMjOg/edit#slide=id.g80ffbfd5e3_0_168
n := 10
n += 100
n0 = 10
n1 = n0 + 100
It is easy to analyze process flow.
Static Single Assignment(SSA)
Confidential
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止
ref) https://golang-ssaview.herokuapp.com/
Code:
SSA:
Type Check
Confidential
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止
Structure Analysis
Type Check
Static Single Assignment(SSA)
Pointer Analysis
ref) https://docs.google.com/presentation/d/1I4pHnzV2dFOMbRcpA-XD0TaLcX6PBKpls6WxGHoMjOg/edit#slide=id.g80ffbfd5e3_0_168
n := 10 + 30
m := n + 200
What type is this?
-> int
Pointer Analysis
Confidential
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止
Structure Analysis
Type Check
Static Single Assignment(SSA)
Pointer Analysis
ref) https://docs.google.com/presentation/d/1I4pHnzV2dFOMbRcpA-XD0TaLcX6PBKpls6WxGHoMjOg/edit#slide=id.g80ffbfd5e3_0_168
var n int
p := &n
g(p)
g(p1)
g(p2)
func g(p *int){
}
We can understand where the
pointer come from.
how to develop static analysis on Go
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止
Start from Skeleton
Confidential
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止
ref) https://github.com/gostaticanalysis/skeleton
layered architecture
Confidential
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止
ref) https://www.oreilly.com/content/software-architecture-patterns/
What kind of dependency is prohibited
Confidential
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止
ref) https://www.oreilly.com/content/software-architecture-patterns/
×
×
⭕
⭕
⭕
⭕
Find incorrect dependency
Confidential
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止
interface
→ Dependency Inversion Principle(DIP)
a_service → a_repository(interface) ◯
b_service → a_repository(implement) ×
ref) https://github.com/daisuke0131/layer
Find incorrect dependency
Confidential
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止
ref) https://github.com/daisuke0131/layer
Conclusion
Confidential
Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止
・explained static analysis for Go.
・developed a static analysis for layered architecture.

More Related Content

PDF
歯磨き.go Go言語の静的解析とコード生成勉強会
PDF
State management for ios development
PDF
ライブラリを作って5年たったので振り返る
PDF
歯磨き.go #2
PDF
potatotips_77.pdf
PDF
Convert the notification feature to the notification microservice
PDF
Your Code Isn’t Static. Your Processes Shouldn’t be Either.
PPTX
Nsc42 security knights slayer of dragons 0-5_very_short_15m_share
歯磨き.go Go言語の静的解析とコード生成勉強会
State management for ios development
ライブラリを作って5年たったので振り返る
歯磨き.go #2
potatotips_77.pdf
Convert the notification feature to the notification microservice
Your Code Isn’t Static. Your Processes Shouldn’t be Either.
Nsc42 security knights slayer of dragons 0-5_very_short_15m_share

Similar to Static analysis for go lang (11)

PPTX
C# 6.0 Preview
PDF
ScalaMatsuri 2016 ドワンゴアカウントシステムを支えるScala技術
PDF
JVM code reading -- C2
PDF
ASPLOS10&Vee10 report-suzaki
PPTX
Let's LL
PDF
Coding in Style
ODP
Rust言語紹介
PDF
Who go Types in my Systems Programing!
PDF
エンタープライズ・クラウドと 並列・分散・非同期処理
PDF
Notes for xx_use_serialgc
PDF
How To Use Scala At Work - Airframe In Action at Arm Treasure Data
C# 6.0 Preview
ScalaMatsuri 2016 ドワンゴアカウントシステムを支えるScala技術
JVM code reading -- C2
ASPLOS10&Vee10 report-suzaki
Let's LL
Coding in Style
Rust言語紹介
Who go Types in my Systems Programing!
エンタープライズ・クラウドと 並列・分散・非同期処理
Notes for xx_use_serialgc
How To Use Scala At Work - Airframe In Action at Arm Treasure Data
Ad

More from Daisuke Yamashita (12)

PDF
Tensorflow
PDF
Introduction of ios-chart in oss-labs#3
PDF
About SnapKit - Open source lab -
PDF
View Monitoring Tips
PDF
Swift open source library - ViewMonitor -
PDF
Let's Start Swift Open Source Activity.
PDF
バグのことは嫌いになってもXcodeのことは嫌いにならないでください。
PDF
Unity Introduction from 2D shooting game.
PDF
OpenCV on mobile
PDF
Introduction of Swift from Machine Learning
PDF
Introduction of Swift from Game Development
PDF
How to measure UIView position on Native App
Tensorflow
Introduction of ios-chart in oss-labs#3
About SnapKit - Open source lab -
View Monitoring Tips
Swift open source library - ViewMonitor -
Let's Start Swift Open Source Activity.
バグのことは嫌いになってもXcodeのことは嫌いにならないでください。
Unity Introduction from 2D shooting game.
OpenCV on mobile
Introduction of Swift from Machine Learning
Introduction of Swift from Game Development
How to measure UIView position on Native App
Ad

Recently uploaded (20)

PDF
WOOl fibre morphology and structure.pdf for textiles
PPTX
A Presentation on Touch Screen Technology
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
Approach and Philosophy of On baking technology
PDF
August Patch Tuesday
PDF
1 - Historical Antecedents, Social Consideration.pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
PDF
Zenith AI: Advanced Artificial Intelligence
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
Chapter 5: Probability Theory and Statistics
PDF
Heart disease approach using modified random forest and particle swarm optimi...
PPTX
A Presentation on Artificial Intelligence
PDF
A comparative study of natural language inference in Swahili using monolingua...
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Web App vs Mobile App What Should You Build First.pdf
PDF
NewMind AI Weekly Chronicles - August'25-Week II
WOOl fibre morphology and structure.pdf for textiles
A Presentation on Touch Screen Technology
SOPHOS-XG Firewall Administrator PPT.pptx
Programs and apps: productivity, graphics, security and other tools
A comparative analysis of optical character recognition models for extracting...
Approach and Philosophy of On baking technology
August Patch Tuesday
1 - Historical Antecedents, Social Consideration.pdf
Encapsulation_ Review paper, used for researhc scholars
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
Zenith AI: Advanced Artificial Intelligence
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Chapter 5: Probability Theory and Statistics
Heart disease approach using modified random forest and particle swarm optimi...
A Presentation on Artificial Intelligence
A comparative study of natural language inference in Swahili using monolingua...
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Web App vs Mobile App What Should You Build First.pdf
NewMind AI Weekly Chronicles - August'25-Week II

Static analysis for go lang

  • 1. Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止 Static analysis for go lang
  • 2. Selft-Introduction Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止
  • 3. daisuke0131 
 
 After graduated from university, Joined Fujitsu Laboratories. 
 I developed firmware, AI, Web services, ios/android apps. 
 
 After the career, Joined startups to experience something new. 
 
 Joined ANDPAD in 2016. Developed mobile applications. 
 山下 大輔 Daisuke Yamashita
 
 ANDPAD Chief Development Officer Self-Introduction
  • 4. What is ANDPAD? Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止
  • 5. What is ANDPAD? Confidential Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止 ・Project Management System For Construction Industry ・Project Management, Chat, Blueprint, Inspection, Schedule Adjustment swift/kotlin swift/kotlin swift ReactNative→Flutter Flutter
  • 6. Many features in ANDPAD Confidential Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止 Project Management Chat Communication Inspection Blueprint The others ANDPAD Built by Ruby on Rails Microservices by Go Notifications Approval Authorization ・・・
  • 7. Static analysis Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止
  • 8. Development cycle Confidential Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止 Requirement Definition Implementation QA test release
  • 9. Cost gradually increases Confidential Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止 Implementation QA test release increased cost Shift-Left Requirement Definition
  • 10. Why should we use static analysis? Confidential Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止 QA test release static analysis unit test/ integration test Requirement Definition Implementation
  • 11. Static analysis for Go Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止
  • 12. Static Analysis for Go Confidential Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止 Structure Analysis Type Check Static Single Assignment(SSA) Pointer Analysis ref) https://docs.google.com/presentation/d/1I4pHnzV2dFOMbRcpA-XD0TaLcX6PBKpls6WxGHoMjOg/edit#slide=id.g80ffbfd5e3_0_168
  • 13. Static Analysis for Go Confidential Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止 Structure Analysis Type Check Static Single Assignment(SSA) Pointer Analysis ref) https://docs.google.com/presentation/d/1I4pHnzV2dFOMbRcpA-XD0TaLcX6PBKpls6WxGHoMjOg/edit#slide=id.g80ffbfd5e3_0_168 how to analyze the sourcecode
  • 14. Static Analysis for Go Confidential Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止 Structure Analysis Type Check Static Single Assignment(SSA) Pointer Analysis ref) https://docs.google.com/presentation/d/1I4pHnzV2dFOMbRcpA-XD0TaLcX6PBKpls6WxGHoMjOg/edit#slide=id.g80ffbfd5e3_0_168 how to check the detail.
  • 15. Structure Analysis Confidential Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止 Structure Analysis Type Check Static Single Assignment(SSA) Pointer Analysis ref) https://docs.google.com/presentation/d/1I4pHnzV2dFOMbRcpA-XD0TaLcX6PBKpls6WxGHoMjOg/edit#slide=id.g80ffbfd5e3_0_168 a+1 a + 1 BinaryExpr Ident BasicLit AST (Abstract Syntax Tree): Code:
  • 16. Structure Analysis Confidential Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止 ref) https://go.dev/play/p/9jenf3yjoWg Code: AST:
  • 17. Static Single Assignment(SSA) Confidential Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止 Structure Analysis Type Check Static Single Assignment(SSA) Pointer Analysis ref) https://docs.google.com/presentation/d/1I4pHnzV2dFOMbRcpA-XD0TaLcX6PBKpls6WxGHoMjOg/edit#slide=id.g80ffbfd5e3_0_168 n := 10 n += 100 n0 = 10 n1 = n0 + 100 It is easy to analyze process flow.
  • 18. Static Single Assignment(SSA) Confidential Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止 ref) https://golang-ssaview.herokuapp.com/ Code: SSA:
  • 19. Type Check Confidential Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止 Structure Analysis Type Check Static Single Assignment(SSA) Pointer Analysis ref) https://docs.google.com/presentation/d/1I4pHnzV2dFOMbRcpA-XD0TaLcX6PBKpls6WxGHoMjOg/edit#slide=id.g80ffbfd5e3_0_168 n := 10 + 30 m := n + 200 What type is this? -> int
  • 20. Pointer Analysis Confidential Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止 Structure Analysis Type Check Static Single Assignment(SSA) Pointer Analysis ref) https://docs.google.com/presentation/d/1I4pHnzV2dFOMbRcpA-XD0TaLcX6PBKpls6WxGHoMjOg/edit#slide=id.g80ffbfd5e3_0_168 var n int p := &n g(p) g(p1) g(p2) func g(p *int){ } We can understand where the pointer come from.
  • 21. how to develop static analysis on Go Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止
  • 22. Start from Skeleton Confidential Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止 ref) https://github.com/gostaticanalysis/skeleton
  • 23. layered architecture Confidential Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止 ref) https://www.oreilly.com/content/software-architecture-patterns/
  • 24. What kind of dependency is prohibited Confidential Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止 ref) https://www.oreilly.com/content/software-architecture-patterns/ × × ⭕ ⭕ ⭕ ⭕
  • 25. Find incorrect dependency Confidential Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止 interface → Dependency Inversion Principle(DIP) a_service → a_repository(interface) ◯ b_service → a_repository(implement) × ref) https://github.com/daisuke0131/layer
  • 26. Find incorrect dependency Confidential Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止 ref) https://github.com/daisuke0131/layer
  • 27. Conclusion Confidential Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止 ・explained static analysis for Go. ・developed a static analysis for layered architecture.