source insight 的开源替代

news2024/11/26 1:51:52

source insight 的开源替代——sourcetrail,开源地址:https://github.com/CoatiSoftware/Sourcetrail

Sourcetrail 是一个交互式源代码浏览器,它通过为代码编制索引并收集有关其结构的数据来简化现有源代码中的导航。然后,Sourcetrail 提供了一个简单的界面,该界面由三个交互式视图组成,每个视图在帮助您获取所需信息方面都发挥着关键作用:

Sourcetrail 概念

  • 搜索:使用搜索字段在源代码中快速查找和选择索引符号。自动完成框将立即提供整个代码库所有匹配结果的概览。
  • 图:该图显示源代码的结构。它专注于当前选定的元件,并直接显示其他元件的所有传入和传出依赖项。
  • 法典:Code (代码) 视图在代码片段列表中显示当前所选元件的所有源位置。单击其他源位置可以更改选择并更深入地挖掘。

注意:Sourcetrail 目前支持 C/C++、Java 和 Python 语言。因此,大部分 UI 设计都基于这些语言,并且可能会在支持其他语言后立即更改。有关更多信息,请查看支持的语言。

支持的语言

C

C 支持由 Clang 11.0.0 提供支持。对于加载 C 代码时遇到的问题,请查看 Clang 语言兼容性或在我们的错误跟踪器中报告错误。

C++

C++ 支持由 Clang 11.0.0 提供支持。有关更多信息,请访问 Clang C++ 状态。对于加载 C++ 代码时遇到的问题,请查看 Clang 语言兼容性或在我们的错误跟踪器中报告错误。

爪哇岛

Sourcetrail 包括对 Java 12 及更低版本的支持,它由 Eclipse JDT 提供支持。如果您在 Java 项目中使用 Sourcetrail 时遇到任何问题,请在我们的错误跟踪器中提供一个最小示例来告知我们。

Sourcetrail 包括对 Python 2 和 Python 3 的支持,后者由我们的开源 SourcetrailPythonIndexer 提供支持。如果您在 Python 项目上使用 Sourcetrail 时遇到任何问题,请在我们的 bug 跟踪器中提供一个最小示例来告知我们。

开始

这个简短的介绍将简要指导您完成 Sourcetrail 的项目设置和用户界面。项目符号列表将为您提供下一步要执行的步骤:

启动 Sourcetrail

成功下载 Sourcetrail 后,您就可以运行该应用程序了。有关安装的帮助,请访问安装部分。

任务:

  • 启动 Sourcetrail。

启动 Sourcetrail 后,您将看到 Start 窗口。在这里,您可以创建自己的项目或选择预先索引的项目。

任务:

  • 单击 New Project 以创建新项目。
  • 或从 Recent Projects (最近的项目) 中选择一个 (例如: TicTacToe) 并继续 UI Intro (UI 介绍)

启动窗口

创建新项目

创建新的 Sourcetrail 项目时,您将使用 Project Setup Wizard。此向导将设置过程拆分为几个后续步骤。根据项目的结构和使用的构建系统,项目设置有不同的类型。选择正确的设置方法很重要,并且可以使设置过程变得更加容易。

任务:

  • 为您的项目指定 Name (名称) 并选择 Sourcetrail 项目的 Location (位置) 作为 Sourcetrail 项目所在的位置。
  • 单击 Add Source Group 将源文件添加到项目中。

项目设置向导启动

添加源组

Sourcetrail 项目由多个 Source Group 组成。每个 Source Group 都使用特定语言、一组文件和所有配置来为这些文件编制索引。每种支持的编程语言都有不同类型的 Source Group。此外,对于大多数项目来说,创建单个 Source Group 就足够了。

滚动浏览图像以获取有关此设置的详细说明。

任务:

  • 选择您选择的 Source Group 设置类型,并在创建项目后立即返回此处。

Project Setup Wizard 源组类型

C/C++ 的源组设置

C和C++的源组设置类型相同。

您在使用 CMake、Make 还是 Qt Creator 吗?

如果您使用 CMake 或 Make 作为构建环境,则可以将 clang JSON 编译数据库导出为文件。Compilation Database 包含构建项目所需的所有信息,例如源文件、包含路径和编译器标志。拥有编译数据库使 Sourcetrail 中的项目设置变得更加容易。如果可能,我们建议使用此方法。compile_commands.json

导出编译数据库:

  • 通过定义标志从 CMake 开始。(不支持 Visual Studio CMake 生成器)CMAKE_EXPORT_COMPILE_COMMANDS
  • 对于 Make projects (创建项目),请使用 Bear。熊掌记在模拟构建过程中生成文件。熊掌记已在 FreeBSD、GNU/Linux 和 OS X 上进行了测试。compile_commands.json
  • 从 Qt Creator 4.8 版本开始,从“构建”菜单中选择“生成编译数据库”。

如果您成功导出了文件,请继续从 Compilation Database 创建 Source Group,并在创建完项目后返回。compile_commands.json

项目设置向导 启动 CDB

您是否在使用 Visual Studio?

如果您使用的是 Visual Studio,则可以继续从 Visual Studio 创建源组,并使用我们的 Visual Studio 插件导出编译数据库。

项目设置向导启动 VS

创建 Empty

如果以上选项都不适用于您的项目,请继续创建空的 C/C++ 源组,并在创建项目后返回此处。

Project Setup Wizard 源组类型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2195065.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图吧工具箱

图吧工具箱202309绿色版自动解压程序R2.exe,永久有效 链接:https://pan.baidu.com/s/1M6TI7Git8bXOzZX_qZ3LJw?pwdzked 提取码:zked

Java中常用的线程工具(JUC)

多线程 多线程 基本概念 CAS (Compare-And-Swap,比较并交换),是一种用于实现多线程同步的原子操作。主要原理:1.比较内存中的某个位置的当前值和预期值 2.交换如果当前值与预期值相等,则将该位置的值更新为新值,否则…

ZYNQ:Petalinunx构建工程

资料准备 1、xsa 文件:top_020.xsa(使用vivado 2024.1制作) 2、设置 Petalinux (2024.1)环境变量:sptl 创建 petalinux 工程 构建工程 petalinux-create -t project --template zynq -n project配置…

Linux--IO模型与高级IO重要概念

什么是IO? IO是指计算机系统与外部世界进行数据交换的过程。在计算机中,IO通常用于与外部设备通信,这些设备包括键盘、鼠标、打印机、显示器、网络等。通过IO操作,计算机系统可以接收来自外部设备的输入数据,也可以将…

黑马JavaWeb开发跟学(九)MyBatis基础操作

黑马JavaWeb开发跟学九.MyBatis基础操作 1. Mybatis基础操作1.1 需求1.2 准备1.3 删除1.3.1 功能实现1.3.2 日志输入1.3.3 预编译SQL1.3.3.1 介绍1.3.3.2 SQL注入1.3.3.3 参数占位符 1.4 新增1.4.1 基本新增1.4.2 主键返回 1.5 更新1.6 查询1.6.1 根据ID查询1.6.2 数据封装1.6.…

LeetCode刷题日记之二叉树(六)

目录 前言二叉搜索树中的众数二叉树的最近公共祖先二叉搜索树的最近公共祖先总结 前言 又是学习LeetCode二叉树的新一天,今天还是接着学习一下二叉搜索树的内容,希望博主记录的内容能够对大家有所帮助 ,一起加油吧朋友们!&#x…

【ubuntu】ubuntu20.04安装conda

1.下载 安装参考:https://blog.csdn.net/weixin_44119391/article/details/128577681 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 2.安装 sudo chmod 777 -R ./Anaconda3-5.3.1-Linux-x86_64.sh ./Anaconda3-5.3.1-Linux-x86_64.sh Enter键确认安装…

图的基本概念 - 离散数学系列(五)

目录 1. 图的定义 节点与边 2. 度与路径 节点的度 路径与圈 3. 图的连通性 连通图与非连通图 强连通与弱连通 连通分量 4. 实际应用场景 1. 社交网络 2. 城市交通系统 3. 网络结构 5. 例题与练习 例题1:节点的度 例题2:判断连通性 练习题…

计算机视觉中的3D变换:让虚拟与现实无缝对接

嘿,小伙伴们!今天咱们聊聊计算机视觉中的3D变换,这是连接虚拟世界与现实世界的桥梁!无论你是想为游戏开发增添真实感,还是希望在增强现实中实现精准定位,这篇教程都会让你受益匪浅。准备好了吗?…

python数据分析与可视化工具介绍-matplotlib库

众所周知,python的数据分析库主要是numpy,pandas,和matplotlib,而前面两个主要是数据处理工具库,最后一个才是真正的作图展示工具库。本节来学习一下matploatlib工具库的使用。 Matplotlib常用绘图函数 pyplot简介 m…

Kubernetes: kube-proxy 和 CNI 是如何协作的?

在 Kubernetes 中,kube-proxy 和 CNI 插件协同工作,确保集群内 Pod 之间的互联互通。 Kube-proxy & CNI 如上图所示,假设我们有一个类型为 ClusterIP 的 Service,它对应两个位于不同节点的 Pod。 当我们从 Pod A 对该 Servi…

C语言的柔性数组

目录 柔性数组1.柔性数组的特点:2.柔性数组的使用3.柔性数组的优势 柔性数组 也许你从来没有听说过柔性数组(flexible array)这个概念,但是它确实是存在的。 C99 中,结构体中的最后⼀个元素允许是未知⼤⼩的数组&…

MFC工控项目实例二十三模拟量输入设置界面

承接专栏《MFC工控项目实例二十二主界面计数背景颜色改变》 1、在SenSet.h文件中添加代码 #include "BtnST.h" #include "ShadeButtonST.h"/ // SenSet dialogclass SenSet : public CDialog { // Construction public:SenSet(CWnd* pParent NULL); //…

aws(学习笔记第三课) AWS CloudFormation

aws(学习笔记第三课) 使用AWS CloudFormation 学习内容: AWS CloudFormation的模板解析使用AWS CloudFormation启动ec2 server 1. AWS CloudFormation 的模版解析 CloudFormation模板结构 CloudFormation是AWS的配置管理工具,属于Infrastructure as Co…

黑马javaWeb笔记重点备份2:mybatis基础(注解方式)、数据库连接池概念、lombok使用

以下均来自:【黑马程序员JavaWeb开发教程,实现javaweb企业开发全流程(涵盖SpringMyBatisSpringMVCSpringBoot等)】 https://www.bilibili.com/video/BV1m84y1w7Tb/?p75&share_sourcecopy_web&vd_source9332b8fc5ea8d349a…

AI 激活新势能,中小企业全媒体营销绽放无限可能

什么是全媒体营销: 全媒体营销是一种利用多种媒介渠道进行品牌、产品或服务推广的营销策略。它结合了传统媒体(如电视、广播、报纸、杂志)和新媒体(如互联网、社交媒体、移动应用等)的优势,以实现信息的广…

vivado 使用 UltraFast 设计方法系统级设计流程图

下图展示了 Vivado Design Suite 中包含的各种设计步骤以及特性。您可以通过赛灵思 Documentation Navigator“Design Hub View” 访问该图的互动版,单击每个步骤将链接至相关资源。 理解 UltraFast 设计方法概念 在设计开始初期就采取正确方法非常重要&#xf…

数据结构与算法笔记:概念与leetcode练习题

1、数组Array 时间复杂度 数组访问:O(1) 数组搜索:O(N) 数组插入:O(N) 数组删除:O(N) 特点 适合读,不适合写 数组常用操作 # 1、创建数组 a [] # 2、尾部添加元素 a.append(1) a.append(2) a.append(3) # 3、…

《Linux从小白到高手》理论篇:Linux的系统环境管理

List item 值此国庆佳节,深宅家中,闲来无事,就多写几篇博文。本篇详细深入介绍Linux的系统环境管理。 环境变量 linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“command not found”的提示…

大语言模型(LLM)综述

大语言模型(LLM)综述 正如缩放定律(Scaling Laws )所预测的那样, LLM 的通用语言理解和生成能力是通过在大量文本数据上训练数十亿个模型参数获得的。基于 Transformer 的大型语言模型 (LLM) 的最新进展(在 Web 规模的…