Project Icon

swift-code-metrics

Swift项目代码度量和架构分析工具

swift-code-metrics是一款专门针对Swift项目的代码度量分析工具,能够评估项目中的具体类和接口数量、框架的不稳定性和抽象度等重要指标。本工具还支持生成分析报告和依赖图,有助于更好地理解大型代码库的架构和健壮性。安装Python 3及相关依赖库后即可使用。

注意:翻译需要符合中文语序、流程、通顺

FOSSA 状态 许可协议 构建状态 代码覆盖率 Codacy 徽章 PyPI

swift-code-metrics

用于 Swift 项目代码度量的分析器。

示例代码分布 示例主序列偏差
示例内部分布

介绍

该软件的目标是提供有关用 Swift 编写并包含多个模块的软件的架构状态的洞察。受 Robert C. Martin 的《清洁架构》一书启发,该软件将扫描项目以识别不同组件,以评估软件行业中的一些常见代码度量标准:

  • 整体的具体类和接口总数
  • 框架的 不稳定性抽象性
  • 离主序列的距离
  • 代码行数 (LOC)
  • 注释数 (NOC)
  • 注释百分比 (POC)
  • 方法数量 (NOM)
  • 具体类数量 (包含类和结构体)
  • 测试数量 (NOT)
  • 引入数量 (NOI)
  • 框架依赖图(内部和外部依赖关系的数量)

要求

这是一个依赖于 Python 3 脚本,需要安装 matplotlibadjustTextpyfunctionalpygraphviz

最后一个包依赖于 Graphviz 二进制文件,必须先安装。如果你使用 Mac 环境,可以直接用 brew install graphviz 安装。

用法

该包可以通过 pip 获取,命令为 pip3 install swift-code-metrics

语法如下:

swift-code-metrics --source <path-to-swift-project> --artifacts <output-directory> --exclude <excluded-folders> --tests-paths <test-paths> --generate-graphs

  • --source 是包含主要 Xcode 项目或工作空间的文件夹路径
  • --artifacts 是将包含生成的 output.json 报告的文件夹路径
  • --exclude (可选) 是以空格分隔的路径子字符串列表,用于排除分析 (例如 Tests 将忽略所有包含 Tests 的文件/文件夹)
  • --tests-paths (默认: Test Tests) 是以空格分隔的匹配测试类路径的子字符串列表
  • --generate-graphs (可选) 如果传递这个选项,将生成与分析相关的图表并将它们保存到 artifacts 文件夹中

开发

请运行 ./install.sh./build_and_test.sh 安装依赖并运行测试。

该仓库预定义了用于 VS Code 的调试和运行测试的设置。

文档

请按照 指南 并通过一个实用的示例开始。

当前限制

  • 该工具针对由不同框架组成的中/大型代码库设计。 脚本将扫描目录,按“根”文件夹的名称识别框架, 因此这严格依赖于文件结构(除非指定了项目路径覆盖文件

  • 不支持使用 spm 构建的库。

  • 框架名称是根据目录结构推断的。如果文件在根目录中,将使用 default_framework_name。不会检查 xcodeproj。

  • 目前不支持方法列表中的计算变量

  • 目前不支持代码中的内联注释(例如 struct Data: {} //dummy data

  • 目前仅支持 XCTest 测试框架

待办事项

  • 代码改进
  • 其他(欢迎建议)

联系方式

Mattia Campolese

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号