open-index/open-npm huggingface dataset:
npm package: @iflow-mcp/scast
Description: Static Code Analysis and Visualization. Convert Code to UML and Flow Diagram and explain by AI.
Author: DKZ davidkingzyb@163.com
Latest version: 0.1.0

# 🔱SCAST

**代码静态分析可视化工具**

2024/9/27 by DKZ

[English](./README.md)/中文

![](https://davidkingzyb.github.io/blogmd/blogImg/scastbanner.png)

[🔱SCAST](https://davidkingzyb.github.io/scast/SCAST.html) 可以将输入的代码转换为UML图和流程图，可用作整理流程架构，输出文档图表。

[📺视频](https://www.bilibili.com/video/BV1QK2QYXEPW)  
[📺教程](https://www.bilibili.com/video/BV1EZNBejEfR)  
[📺MCP](https://www.bilibili.com/video/BV1fkoyY3EB5/)  

多种语言支持
- javascript (使用[acorn](https://github.com/acornjs/acorn))
- typescript (目前使用 [typescript](https://www.typescriptlang.org/) 之后可能迁移到 [estree](https://typescript-eslint.io/) 版本)
- csharp (定制的解析器，之后不再支持)
- python (定制解析器功能较全，之后可能迁移到 [filbert](https://github.com/differentmatt/filbert) 目前功能不全)

原理是将输入代码整理为AST树并对其进行静态分析，最后输出使用[Mermaid](https://github.com/mermaid-js/mermaid-live-editor) 和 [D3](https://github.com/d3/d3) 输出可视化图表.

可以使用在线版本 [online](https://davidkingzyb.github.io/scast/SCAST.html) 或者下载源码双击**SCAST.html**文件在浏览器中使用.  
对于开发者可使用 `npm run server` 将它部署在服务器中. 或者作为 **MCP** server 使用将它集成到你的 AI 客户端中.

![scast_uml](https://github.com/user-attachments/assets/0185738e-0815-4c92-8770-e9ff2b0da1d5)

## 更新

### MCP

![mcp](https://github.com/user-attachments/assets/f35cf086-0105-47ce-a3d2-6ec1e09748d7)

1. `git clone https://github.com/davidkingzyb/SCAST.git` 下载源码.
2. `npm install`
3. 在你的客户端设置
```
{
  "mcpServers": {
    "scast":{
      "command":"node",
      "args":[
        "/YOUR_INSTALL_DIR/SCAST/mcp/index.js",
        "/YOUR_WORKSPACE/",
        "C:\\Users\\DKZ\\OTHER_ALLOWED_DIR\\",
      ]
    }
  }
}
```

#### 工具

##### scast_analysis:
SCAST 是一个帮助用户分析总结代码并将可视化的工具.
只需要提供源代码所在的文件夹路径, SCAST 会对文件夹下的源代码做静态分析,生成 AST 树, 帮助用户理解代码结构,解释代码的功能. 
生成一系列的可视化图表, 如 UML 类图, AST tree 图 以及 Mermaid flowchart 图等.
最后返回一个keyword列表,包含所有类和方法名称和其功能解释,并附一个连接, 让用户在浏览器中查看图表详情.

##### scast_retriever
SCAST 是一个帮助用户分析总结代码并将可视化的工具.
需要提供源代码所在的文件夹路径, SCAST 会对文件夹下的源代码做静态分析,生成 AST 树, 帮助用户理解代码结构, 解释代码的功能. 
使用 SCAST 分析完代码目录之后, 可以通过提供关键字在 AST 树中进行检索,用 RAG 的方法更好的回答用户的提问.
这个关键字可以是类名,方法名,或者是字段名称. SCAST 会找到其定义处的源代码并返回. 

#### Ollama AI

请先安装[ollama](https://ollama.com/)
[ai.js](./js/ai.js)中查看更多详情

![ollama](https://github.com/user-attachments/assets/afe8f504-17f7-4897-9990-4baa4f66213d)

#### ESTree

兼容ESTree规范的AST paser

#### 力导引图

![FDP](https://github.com/user-attachments/assets/6a34b405-492e-4966-a075-fce60330bccf)

#### 其他 D3 图表

- Indented tree
- Tidy tree
- Cluster tree
- Tadial tidy tree
- Radial cluster tree
- Force directed tree
- Edge bundling

![scast_d3](https://github.com/user-attachments/assets/11c4e11f-05e6-48b0-a3ee-c1e5f6a0816d)