代码 API 依赖
显示 API 依赖关系的 Neo4j 图
引言
应用程序开发者依靠公共 API 使其代码正常工作。此模型旨在展示如何标记公共 API 更新对代码的影响。通过定义内部定制客户端代码与其所依赖的 API 方法之间的关系,您可以快速查看哪些 API 更改可能会影响现有代码。
示例数据已加载
// Create code clients
CREATE (Email:Client {id:'1', description:'email client', repo:'localgit:emailClient'})
CREATE (Text:Client {id:'2', description:'sms client', repo:'localgit:textClient'})
CREATE (Invoice:Client {id:'3', description:'produce invoice client', repo:'localgit:invoiceClient'})
// Create Public Api methods
CREATE (MailCh:Vendor {id:'11', name:'mailCh', apiDoc:'https://github.com/mailch/api'})
CREATE (Twil:Vendor {id:'12', name:'twil', apiDoc:'https://github.com/twil/api'})
CREATE (Invoiceapi:Vendor {id:'13', name:'mailCh', apiDoc:'https://github.com/Invoiceapi/api'})
// Create consumes relationship
CREATE (Email)-[:CONSUMES {method:'getServer', version:'1.7', status:'Changed'}]->(MailCh)
CREATE (Text)-[:CONSUMES {method:'getSmsCarrier', version:'3.2', status:'Removed'}]->(Twil)
CREATE (Email)-[:CONSUMES {method:'getEmailServer', version:'1.7', status:'Removed'}]->(MailCh)
CREATE (Invoice)-[:CONSUMES {method:'getInvoiceNumer', version:'2.3', status:'Same'}]->(Invoiceapi)
RETURN *
识别依赖关系
我们收集所有依赖关系
MATCH (client:Client)-[r:CONSUMES]->(vendor)
RETURN client.description AS `Client Description`, client.repo AS `Code Location`, r.method AS `API Method`, r.status AS `Details`
ORDER BY `Details` DESC
识别需要移除的变更
查找需要修改代码的 API 更改。您所依赖的 API 方法如果被移除,则需要您关注并修复。
MATCH (client:Client)-[r:CONSUMES]->(vendor)
WHERE r.status = "Removed"
RETURN client.description AS `Client Description`, client.repo AS `Code Location To Update`, r.method AS `API Method`, r.status AS `Details`, r.version AS `VERSION`
ORDER BY `Details` DESC
识别需要测试的变更
查找应标记为需要测试的 API 更改。现有方法中的更改可能导致隐蔽问题 -> 代码可能正常运行,但结果可能与之前不同。
MATCH (client:Client)-[r:CONSUMES]->(vendor)
WHERE r.status = "Changed"
RETURN client.description AS `Client Description`, client.repo AS `Code Location`, r.method AS `API Method`, r.status AS `Details`, r.version AS `VERSION`
ORDER BY `Details` DESC
此页面有帮助吗?