Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 02cc67b

Browse files
authored
Merge pull request #10 from codefuse-ai/add-java-tutorial
add java analysis tutorial
2 parents c9d9a63 + fbbf192 commit 02cc67b

File tree

1 file changed

+98
-0
lines changed

1 file changed

+98
-0
lines changed
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "markdown",
5+
"metadata": {},
6+
"source": [
7+
"# Java 分析示例\n",
8+
"这是一个使用CodeFuse-Query分析java项目的教程。在教程中,你将体验到使用命令行工具对代码仓库进行数据化,然后使用Godel语言来分析这个仓库。"
9+
]
10+
},
11+
{
12+
"cell_type": "markdown",
13+
"metadata": {},
14+
"source": [
15+
"STEP 0: 克隆要分析的仓库。我们以蚂蚁集团的 SOFABolt 项目为例。"
16+
]
17+
},
18+
{
19+
"cell_type": "code",
20+
"execution_count": null,
21+
"metadata": {},
22+
"outputs": [],
23+
"source": [
24+
"!git clone https://github.com/sofastack/sofa-bolt.git"
25+
]
26+
},
27+
{
28+
"cell_type": "markdown",
29+
"metadata": {},
30+
"source": [
31+
"STEP 1: 代码数据化。使用 `sparrow database create` 命令创建一个db文件,需要指定待分析的仓库地址,分析的语言,以及db文件的存储路径。该文件存储着代码仓库的结构化数据,之后的分析就是针对这份数据进行。"
32+
]
33+
},
34+
{
35+
"cell_type": "code",
36+
"execution_count": null,
37+
"metadata": {},
38+
"outputs": [],
39+
"source": [
40+
"!sparrow database create --source-root sofa-bolt --data-language-type java --output ./db/sofa-bolt"
41+
]
42+
},
43+
{
44+
"cell_type": "markdown",
45+
"metadata": {},
46+
"source": [
47+
"STEP 2: 使用Godel分析语言分析db文件。在本教程中,可以点击代码左侧的执行按钮,直接运行分析脚本。在命令行中,你可以使用 `sparrow query run` 命令来执行查询脚本,具体可以使用`sparrow query run -h` 来获取详细参数信息。\n",
48+
"在这个例子中,我们使用Godel语言查询了全仓库的类方法。你也可以在where子句中加入过滤条件,获取你想要的结果。"
49+
]
50+
},
51+
{
52+
"cell_type": "code",
53+
"execution_count": null,
54+
"metadata": {},
55+
"outputs": [],
56+
"source": [
57+
"%db db/sofa-bolt\n",
58+
"// script\n",
59+
"use coref::java::{Callable, Class, Interface, JavaDB}\n",
60+
"\n",
61+
"fn db() -> JavaDB {\n",
62+
" return JavaDB::load(\"coref_java_src.db\")\n",
63+
"}\n",
64+
"\n",
65+
"query class_method from\n",
66+
" m in Callable(db()),\n",
67+
" c in Class(db())\n",
68+
"where\n",
69+
" c.id = m.getBelongedClass().id\n",
70+
"select\n",
71+
" c.getQualifiedName() as className,\n",
72+
" m.getName() as methodName,\n",
73+
" m.getSignature() as methodSignature"
74+
]
75+
}
76+
],
77+
"metadata": {
78+
"kernelspec": {
79+
"display_name": "Godel kernel",
80+
"language": "rust",
81+
"name": "godel-jupyter"
82+
},
83+
"language_info": {
84+
"file_extension": ".gdl",
85+
"help_links": [
86+
{
87+
"text": "Godel kernel Magics",
88+
"url": "https://sparrow.alipay.com"
89+
}
90+
],
91+
"mimetype": "text/rust",
92+
"name": "rust",
93+
"version": "0.0.3"
94+
}
95+
},
96+
"nbformat": 4,
97+
"nbformat_minor": 2
98+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /