Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Code Works OutlineNew to Visual Studio Code? Get it now.
Code Works Outline

Code Works Outline

KickSam

|
1,746 installs
| (0) | Free
A works outline tree provider for VSCode
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

工作流文档管理插件

想必你遇到过下面的问题

  • 还在因为文档散乱无序感到迷茫?

  • 还在因为接手别人的项目感到头疼?

  • 还在因为长时间未开发代码忘记业务如果运行感到烦恼?

  • 代码在哪?

  • 执行流程是怎样的?

  • 相应的文档规则在哪?

  • 文档修改了,我又如何寻找当初对应的配置/方法?

…… wenhao

使用 Works Outline 吧!

该插件以busniess work-flow的形式管理维护业务,将开发者按顺序定义的业务节点(symbol)串联起来

基础功能

  • 文档访问
  • 文档定位symbol
  • 业务流定义
  • 业务流显示
  • 定位symbol
  • symbol反定位

使用说明

请在你的工作目录(workspace)下定义

demo

在 symbols.config.js 中

这个文件中配置一张symbols表,symbol指的是 WorkSpace 中存在的变量/类/函数/类成员(私有\共有)等标识符

请暴露一个 symbolsMap

const symbols = [

];
const symbolsMap = new Map();
symbols.forEach(symbol => { symbolsMap.set(symbol.name, symbol); });
module.exports = symbolsMap;

数据结构为:

export interface ISymbol{
    name: string,           // 真实存在的 symbolName
    tag: string,            // 引用标签
    bugAttention?: boolean, // 是否应该引起bug重视
    documentUri?: string,   // 超链接文档说明
}
  • name 尽量唯一 如果是调用一些通用接口
  • 如调用 Canvas.update 请写 Canvas.update
  • 尽量配置关键节点使得业务流简洁,如忽略一些细节如判断有效条件的函数

在 maintain.config.js 中

请暴露一个变量 maintain_works

const maintain_works: IMaintainWork[];
module.exports = maintain_works;

数据结构为:

// 一个节点
export interface ISymbolData{
    name: string               // symbol 名称 ** 一定在 symbols.config.js 中能查找到**
    linkedBussiness?: string   // 指向其他业务(业务嵌套的情况)
    flowComment?: boolean      // 是否是评论节点
    documentUri?: boolean      // 是否存在超链接文档
    children?: ISymbolData[]   // 子节点
    condition?: boolean        // 条件执行 (目前这个只是有提示作用,意思是这个节点在业务流执行时满足一定的条件才执行)
}

// 一个业务流
export interface IMaintainWork {
    name: string,
    comment: string,
    documentUri: string,
    symbols: ISymbolData[],
}

example

symbols.config.js

const DOCUMENT_URL = {
    snap_collision: 'http://google.com'
}

const symbols = [
    { name : '_calIsToggleOnTarget', tag: '计算是否切换ZPlane', },
    { name : 'getPositionByTouchSelection', tag: '获取上位位置', bugAttention: true },
    { name: '_updateZplaneVectorBySelections', tag: '更新投影Zplane', documentUri: DOCUMENT_URL.snap_collision },
    { name: 'ProxyRelationShip.update', tag: '更新关系信息', },
    // ... 我只筛选了一些
]

const symbolsMap = new Map();
symbols.forEach(symbol => { symbolsMap.set(symbol.name, symbol); });
module.exports = symbolsMap;

maintain.config.js

// 需要复用的业务流模块
const WORKS_BLOCK = {
    getCandiateCollisionModel: {
        name: '_getCandiateCollisionModel',
        children: [
            { name: 'getWallMixBVHTree', condition: true },
            { name: 'getContentGroupCloneObject', condition: true },
            { name: 'getSurfaceMixBVHTree', condition: true },
            { name: '_getContentMixBoundingBoxTree', condition: true },
            { name: 'getMoldingBVHTree', condition: true },
            { name: 'getSpeicalSnapTypeFromCategoryType', condition: true },
        ]
    }
}

const maintain_works = [
    {
        name: '强吸附修正',
        comment: '强吸附修正',
        documentUri: '',
        symbols: [
            { name : 'updatePositionWithCorrector', children: [
                { name: 'doCollidedAndWeakSnapCorrect', children: [
                    { name: 'Collisioner.handleDragMove', children: [
                        WORKS_BLOCK.getCandiateCollisionModel,
                        { name: 'getStrongSnapResult', children: [
                            { name: 'getBuildingWallLineGeometry', children: [
                                { name: 'getWallLinesListDataFromDIYWall', condition: true },
                                { name: 'getWallLinesListData', condition: true },
                                { name: 'getWallLineSnapGeometry' },
                            ]},
                            { name: 'doSnapToWallWithWallLineGeometry', condition: true },
                        ]},
                        { name: '如果存在强吸附结果更新:位置/角度/位移', flowComment: true },
                        { name: '_updateColliderModel' , condition: true },
                        { name: '裁剪空间检测/更新,候选人更新', flowComment: true, condition: true },
                        { name: 'doMultiObbPathCascadeCorrect', condition: true },
                        { name: '强吸附全部完成,更新结果[没有独立暴露结果]', flowComment: true },
                    ]},
                ]},
            ]}
        ],
    },
];

图例说明

可以点击节点(非备注节点)直接访问symbol

result

可切换显示模式 (tag模式更好理解)

result

可右键节点直接浏览器访问该节点的文档 (若存在 documentUri)

result

可在对应的节点访问它在业务流(Works-Outline)中的位置

result

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2025 Microsoft