Skip to content

feat: Sanitizer 构建模式、发射方位角模块与脚本执行器增强 - #105

Merged
space-axel merged 36 commits into
masterfrom
dev
Sep 23, 2026
Merged

space-axel merged 36 commits into
masterfrom
dev

Conversation

@space-axel

@space-axel space-axel commented Sep 22, 2026 •

Copy link
Copy Markdown
Contributor

概述

本 PR 汇总 dev 分支相对 master 的 33 个提交,主要围绕 Sanitizer 构建模式与 CI 测试矩阵、发射方位角计算模块、脚本执行器增强,以及构建系统与测试稳定性的多项修复。

Sanitizer 与内存问题修复

  • 新增 asan、msan、ubsan、valgrind 构建模式,并在 CI 测试矩阵中启用
  • 修复 ASan 发现的泄漏与所有权问题:Identifier 删除不匹配、测试对象所有权、库句柄泄漏
  • 在 ASan 构建下跳过 AGG 示例,并在 CI 构建期间关闭泄漏检查
  • 解决 STL 注解不匹配导致的链接失败

发射方位角

  • 新增 AstCore 发射弹道模块(Launch.hpp/Launch.cpp),提供发射方位角与目标轨道倾角的相互换算
  • 补充 testLaunchAzimuth 单元测试

脚本执行器

  • 增强 ActiveScript、VBScript、JScript 执行器,规范化 VARIANT_BOOL 处理
  • 改进 Python 动态库自动探测与版本日志,增强错误处理
  • 收紧脚本执行器重载与 ComScopedPtr 语义
  • 解析器在逻辑、位运算、等价关系等各级表达式解析中增加空指针防护
  • Shell COM 压缩/解压实现改为按优先级探测支持能力,禁用拷贝 UI 并延长等待超时

模块与文档

  • AstGUI 重命名为 AstUiCore
  • 新增跨平台 Thread 实现(src/AstUtil/Platform/Thread)
  • 重写 README 与 README_zh,补充模块划分与工程结构说明

构建与基础设施

  • build.yml 支持 arm64,并按 runner 缓存 xmake 构建
  • 新增 test.yml 测试工作流,增强覆盖率工作流
  • 新增 version-check.yml,校验 xmake.lua 与 xmake.sh 版本号一致
  • 修正 rpath 配置与构建策略,更新 cspice-linux、matplotplusplus 子模块

测试稳定性

  • 调整多项 EXPECT_NEAR 容差,提高跨平台一致性
  • 调整 MolniyaOrbitDesigner 中 brentq 求解下界,避免 NaN 结果
  • SolarSystem 测试改用 SharedPtr 堆分配,CRTToWide 测试改进 ANSI 代码页处理

变更文件

完整差异见 compare 视图

…ized support checks and improved error handling
@coderabbitai

coderabbitai Bot commented Sep 22, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 563 files, which is 413 over the limit of 150.

To get a review, reduce the PR to 150 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to Team to raise the limit.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Essentials

Run ID: f731aa51-fee3-4a35-8c0c-55a42b324f5b

📥 Commits

Reviewing files that changed from the base of the PR and between 87804f9 and f811ac4.

📒 Files selected for processing (563)
  • .claude/skills/ast/SKILL.md
  • .claude/skills/icon-design/SKILL.md
  • .codecov.yml
  • .githooks/pre-commit
  • .github/workflows/build.yml
  • .github/workflows/coverage.yml
  • .github/workflows/deploy-docs.yml
  • .github/workflows/tag-release.yml
  • .github/workflows/test.yml
  • .github/workflows/version-check.yml
  • .trae/rules/project_rules_all.md
  • .vscode/.gitignore
  • CLAUDE.md
  • README.md
  • README_zh.md
  • examples/core/axes/create_frozen_axes.cpp
  • examples/core/axes/frozen_axes.cpp
  • examples/sim/twobody_ephemeris.cpp
  • examples/thirdparty/agg/exampleAgg.cpp
  • examples/visualization/visualization_demo.cpp
  • include/AstCore/Launch.hpp
  • include/AstGUI/AstGUI.hpp
  • include/AstGUI/AstGUIAPI.hpp
  • include/AstGUI/AstGUIGlobal.hpp
  • include/AstGUI/GUIInterfaceImpl.hpp
  • include/AstGUI/MissionIcons.hpp
  • include/AstGUI/ObjectEditRegistry.hpp
  • include/AstGUI/ObjectIcons.hpp
  • include/AstGUI/UiAnalyzerMainWindow.hpp
  • include/AstGUI/UiAttrMotionProfile.hpp
  • include/AstGUI/UiAttrState.hpp
  • include/AstGUI/UiAttribute.hpp
  • include/AstGUI/UiAttributeTree.hpp
  • include/AstGUI/UiAttributeTreeItem.hpp
  • include/AstGUI/UiBodyEphemerisDE.hpp
  • include/AstGUI/UiBodyEphemerisSPK.hpp
  • include/AstGUI/UiBurnEditor.hpp
  • include/AstGUI/UiBurnImpulsive.hpp
  • include/AstGUI/UiCelestialBody.hpp
  • include/AstGUI/UiCentralBodies.hpp
  • include/AstGUI/UiCommandEditor.hpp
  • include/AstGUI/UiCommandSummary.hpp
  • include/AstGUI/UiCommandTree.hpp
  • include/AstGUI/UiCommandTreeItem.hpp
  • include/AstGUI/UiCommon.hpp
  • include/AstGUI/UiComponentTree.hpp
  • include/AstGUI/UiDouble.hpp
  • include/AstGUI/UiDragForce.hpp
  • include/AstGUI/UiEventDetector.hpp
  • include/AstGUI/UiEventDetectorEditor.hpp
  • include/AstGUI/UiEventDetectorList.hpp
  • include/AstGUI/UiEventInterval.hpp
  • include/AstGUI/UiEventTime.hpp
  • include/AstGUI/UiExpressionBrowser.hpp
  • include/AstGUI/UiFeasibleRegionStudy.hpp
  • include/AstGUI/UiFilePath.hpp
  • include/AstGUI/UiFuelTank.hpp
  • include/AstGUI/UiGravityForce.hpp
  • include/AstGUI/UiHPOPForceModel.hpp
  • include/AstGUI/UiInitialState.hpp
  • include/AstGUI/UiInsertObjectDialog.hpp
  • include/AstGUI/UiInteger.hpp
  • include/AstGUI/UiMainWindow.hpp
  • include/AstGUI/UiManeuver.hpp
  • include/AstGUI/UiMissionAnalysisWindow.hpp
  • include/AstGUI/UiModerator.hpp
  • include/AstGUI/UiMotionHPOP.hpp
  • include/AstGUI/UiMotionProfile.hpp
  • include/AstGUI/UiMotionSPICE.hpp
  • include/AstGUI/UiMotionTwoBody.hpp
  • include/AstGUI/UiNewObjectDialog.hpp
  • include/AstGUI/UiNewObjectQuickDialog.hpp
  • include/AstGUI/UiODEIntegrator.hpp
  • include/AstGUI/UiODEIntegratorEditor.hpp
  • include/AstGUI/UiODEVarStepIntegrator.hpp
  • include/AstGUI/UiObject.hpp
  • include/AstGUI/UiObjectTree.hpp
  • include/AstGUI/UiObjectTreeItem.hpp
  • include/AstGUI/UiOrbitWizard.hpp
  • include/AstGUI/UiPointMassForce.hpp
  • include/AstGUI/UiPropagate.hpp
  • include/AstGUI/UiQuantity.hpp
  • include/AstGUI/UiResultView.hpp
  • include/AstGUI/UiSTKEphemerisFileWriter.hpp
  • include/AstGUI/UiScenarioWizard.hpp
  • include/AstGUI/UiSelectFrame.hpp
  • include/AstGUI/UiSequence.hpp
  • include/AstGUI/UiSequenceWorkbench.hpp
  • include/AstGUI/UiSolarRadiationPressure.hpp
  • include/AstGUI/UiSolarSystem.hpp
  • include/AstGUI/UiSpacecraftParams.hpp
  • include/AstGUI/UiStartPage.hpp
  • include/AstGUI/UiState.hpp
  • include/AstGUI/UiStateCartesian.hpp
  • include/AstGUI/UiStateEditor.hpp
  • include/AstGUI/UiStateKeplerian.hpp
  • include/AstGUI/UiStudyWorkbench.hpp
  • include/AstGUI/UiSweepOutputList.hpp
  • include/AstGUI/UiSweepStudy.hpp
  • include/AstGUI/UiSweepVariableList.hpp
  • include/AstGUI/UiThirdBodyForce.hpp
  • include/AstGUI/UiThirdBodyForceList.hpp
  • include/AstGUI/UiTimeInterval.hpp
  • include/AstGUI/UiTimePoint.hpp
  • include/AstGUI/UiTimelineView.hpp
  • include/AstGUI/UiValueEdit.hpp
  • include/AstGUI/UiVariableList.hpp
  • include/AstGUI/UiWidget.hpp
  • include/AstGUI/UiWorkbenchExprPicker.hpp
  • include/AstGlobal.h
  • include/AstUiCore/AstGUIAPI.hpp
  • include/AstUiCore/AstUiCore.hpp
  • include/AstUiCore/AstUiCoreGlobal.h
  • include/AstUiCore/GUIInterfaceImpl.hpp
  • include/AstUiCore/MissionIcons.hpp
  • include/AstUiCore/ObjectEditRegistry.hpp
  • include/AstUiCore/ObjectIcons.hpp
  • include/AstUiCore/UiAnalyzerMainWindow.hpp
  • include/AstUiCore/UiAttrMotionProfile.hpp
  • include/AstUiCore/UiAttrState.hpp
  • include/AstUiCore/UiAttribute.hpp
  • include/AstUiCore/UiAttributeTree.hpp
  • include/AstUiCore/UiAttributeTreeItem.hpp
  • include/AstUiCore/UiBodyEphemerisDE.hpp
  • include/AstUiCore/UiBodyEphemerisSPK.hpp
  • include/AstUiCore/UiBurnEditor.hpp
  • include/AstUiCore/UiBurnImpulsive.hpp
  • include/AstUiCore/UiCelestialBody.hpp
  • include/AstUiCore/UiCentralBodies.hpp
  • include/AstUiCore/UiCommandEditor.hpp
  • include/AstUiCore/UiCommandSummary.hpp
  • include/AstUiCore/UiCommandTree.hpp
  • include/AstUiCore/UiCommandTreeItem.hpp
  • include/AstUiCore/UiCommon.hpp
  • include/AstUiCore/UiComponentTree.hpp
  • include/AstUiCore/UiDouble.hpp
  • include/AstUiCore/UiDragForce.hpp
  • include/AstUiCore/UiEventDetector.hpp
  • include/AstUiCore/UiEventDetectorEditor.hpp
  • include/AstUiCore/UiEventDetectorList.hpp
  • include/AstUiCore/UiEventInterval.hpp
  • include/AstUiCore/UiEventTime.hpp
  • include/AstUiCore/UiExpressionBrowser.hpp
  • include/AstUiCore/UiFeasibleRegionStudy.hpp
  • include/AstUiCore/UiFilePath.hpp
  • include/AstUiCore/UiFuelTank.hpp
  • include/AstUiCore/UiGravityForce.hpp
  • include/AstUiCore/UiHPOPForceModel.hpp
  • include/AstUiCore/UiInitialState.hpp
  • include/AstUiCore/UiInsertObjectDialog.hpp
  • include/AstUiCore/UiInteger.hpp
  • include/AstUiCore/UiManeuver.hpp
  • include/AstUiCore/UiMissionAnalysisWindow.hpp
  • include/AstUiCore/UiModerator.hpp
  • include/AstUiCore/UiMotionHPOP.hpp
  • include/AstUiCore/UiMotionProfile.hpp
  • include/AstUiCore/UiMotionSPICE.hpp
  • include/AstUiCore/UiMotionTwoBody.hpp
  • include/AstUiCore/UiNewObjectDialog.hpp
  • include/AstUiCore/UiNewObjectQuickDialog.hpp
  • include/AstUiCore/UiODEIntegrator.hpp
  • include/AstUiCore/UiODEIntegratorEditor.hpp
  • include/AstUiCore/UiODEVarStepIntegrator.hpp
  • include/AstUiCore/UiObject.hpp
  • include/AstUiCore/UiObjectTree.hpp
  • include/AstUiCore/UiObjectTreeItem.hpp
  • include/AstUiCore/UiOrbitWizard.hpp
  • include/AstUiCore/UiPointMassForce.hpp
  • include/AstUiCore/UiPropagate.hpp
  • include/AstUiCore/UiQuantity.hpp
  • include/AstUiCore/UiResultView.hpp
  • include/AstUiCore/UiSTKEphemerisFileWriter.hpp
  • include/AstUiCore/UiScenarioWizard.hpp
  • include/AstUiCore/UiSelectFrame.hpp
  • include/AstUiCore/UiSequence.hpp
  • include/AstUiCore/UiSequenceWorkbench.hpp
  • include/AstUiCore/UiSolarRadiationPressure.hpp
  • include/AstUiCore/UiSolarSystem.hpp
  • include/AstUiCore/UiSpacecraftParams.hpp
  • include/AstUiCore/UiStartPage.hpp
  • include/AstUiCore/UiState.hpp
  • include/AstUiCore/UiStateCartesian.hpp
  • include/AstUiCore/UiStateEditor.hpp
  • include/AstUiCore/UiStateKeplerian.hpp
  • include/AstUiCore/UiStudyWorkbench.hpp
  • include/AstUiCore/UiSweepOutputList.hpp
  • include/AstUiCore/UiSweepStudy.hpp
  • include/AstUiCore/UiSweepVariableList.hpp
  • include/AstUiCore/UiThirdBodyForce.hpp
  • include/AstUiCore/UiThirdBodyForceList.hpp
  • include/AstUiCore/UiTimeInterval.hpp
  • include/AstUiCore/UiTimePoint.hpp
  • include/AstUiCore/UiTimelineView.hpp
  • include/AstUiCore/UiValueEdit.hpp
  • include/AstUiCore/UiVariableList.hpp
  • include/AstUiCore/UiWidget.hpp
  • include/AstUiCore/UiWorkbenchExprPicker.hpp
  • include/AstUtil/COMUtil.hpp
  • include/AstUtil/ComInit.hpp
  • include/AstUtil/Thread.hpp
  • include/ast/AstGUI.hpp
  • include/ast/AstGUIAPI.hpp
  • include/ast/AstGUIGlobal.hpp
  • include/ast/AstUiCore.hpp
  • include/ast/AstUiCoreGlobal.h
  • include/ast/COMUtil.hpp
  • include/ast/ComInit.hpp
  • include/ast/GUIInterfaceImpl.hpp
  • include/ast/Launch.hpp
  • include/ast/MissionIcons.hpp
  • include/ast/ObjectEditRegistry.hpp
  • include/ast/ObjectIcons.hpp
  • include/ast/Thread.hpp
  • include/ast/UiAnalyzerMainWindow.hpp
  • include/ast/UiAttrMotionProfile.hpp
  • include/ast/UiAttrState.hpp
  • include/ast/UiAttribute.hpp
  • include/ast/UiAttributeTree.hpp
  • include/ast/UiAttributeTreeItem.hpp
  • include/ast/UiBodyEphemerisDE.hpp
  • include/ast/UiBodyEphemerisSPK.hpp
  • include/ast/UiBurnEditor.hpp
  • include/ast/UiBurnImpulsive.hpp
  • include/ast/UiCelestialBody.hpp
  • include/ast/UiCentralBodies.hpp
  • include/ast/UiCommandEditor.hpp
  • include/ast/UiCommandSummary.hpp
  • include/ast/UiCommandTree.hpp
  • include/ast/UiCommandTreeItem.hpp
  • include/ast/UiCommon.hpp
  • include/ast/UiComponentTree.hpp
  • include/ast/UiDouble.hpp
  • include/ast/UiDragForce.hpp
  • include/ast/UiEventDetector.hpp
  • include/ast/UiEventDetectorEditor.hpp
  • include/ast/UiEventDetectorList.hpp
  • include/ast/UiEventInterval.hpp
  • include/ast/UiEventTime.hpp
  • include/ast/UiExpressionBrowser.hpp
  • include/ast/UiFeasibleRegionStudy.hpp
  • include/ast/UiFilePath.hpp
  • include/ast/UiFuelTank.hpp
  • include/ast/UiGravityForce.hpp
  • include/ast/UiHPOPForceModel.hpp
  • include/ast/UiInitialState.hpp
  • include/ast/UiInsertObjectDialog.hpp
  • include/ast/UiInteger.hpp
  • include/ast/UiMainWindow.hpp
  • include/ast/UiManeuver.hpp
  • include/ast/UiMissionAnalysisWindow.hpp
  • include/ast/UiModerator.hpp
  • include/ast/UiMotionHPOP.hpp
  • include/ast/UiMotionProfile.hpp
  • include/ast/UiMotionSPICE.hpp
  • include/ast/UiMotionTwoBody.hpp
  • include/ast/UiNewObjectDialog.hpp
  • include/ast/UiNewObjectQuickDialog.hpp
  • include/ast/UiODEIntegrator.hpp
  • include/ast/UiODEIntegratorEditor.hpp
  • include/ast/UiODEVarStepIntegrator.hpp
  • include/ast/UiObject.hpp
  • include/ast/UiObjectTree.hpp
  • include/ast/UiObjectTreeItem.hpp
  • include/ast/UiOrbitWizard.hpp
  • include/ast/UiPointMassForce.hpp
  • include/ast/UiPropagate.hpp
  • include/ast/UiQuantity.hpp
  • include/ast/UiResultView.hpp
  • include/ast/UiSTKEphemerisFileWriter.hpp
  • include/ast/UiScenarioWizard.hpp
  • include/ast/UiSelectFrame.hpp
  • include/ast/UiSequence.hpp
  • include/ast/UiSequenceWorkbench.hpp
  • include/ast/UiSolarRadiationPressure.hpp
  • include/ast/UiSolarSystem.hpp
  • include/ast/UiSpacecraftParams.hpp
  • include/ast/UiStartPage.hpp
  • include/ast/UiState.hpp
  • include/ast/UiStateCartesian.hpp
  • include/ast/UiStateEditor.hpp
  • include/ast/UiStateKeplerian.hpp
  • include/ast/UiStudyWorkbench.hpp
  • include/ast/UiSweepOutputList.hpp
  • include/ast/UiSweepStudy.hpp
  • include/ast/UiSweepVariableList.hpp
  • include/ast/UiThirdBodyForce.hpp
  • include/ast/UiThirdBodyForceList.hpp
  • include/ast/UiTimeInterval.hpp
  • include/ast/UiTimePoint.hpp
  • include/ast/UiTimelineView.hpp
  • include/ast/UiValueEdit.hpp
  • include/ast/UiVariableList.hpp
  • include/ast/UiWidget.hpp
  • include/ast/UiWorkbenchExprPicker.hpp
  • projects/AppAnalyzer/AnalyzerMain.cpp
  • projects/AppAnalyzer/xmake.lua
  • projects/AppGUI/xmake.lua
  • projects/AppMissionAnalysis/MissionAnalysisMain.cpp
  • projects/AppMissionAnalysis/xmake.lua
  • projects/PilotLauncher/xmake.lua
  • rules.lua
  • scripts/ci/check-abi.sh
  • scripts/ci/check-version.sh
  • scripts/ci/install-hooks.sh
  • scripts/gen_swig_interface.py
  • src/AstCore/AstCore.hpp
  • src/AstCore/Orbit/Ephemeris/EphemerisBinary.cpp
  • src/AstCore/Orbit/Launch.cpp
  • src/AstCore/Orbit/Launch.hpp
  • src/AstCore/Orbit/OrbitDesign/MolniyaOrbitDesigner.cpp
  • src/AstCore/Propagator/SGP4/Vallado/SGP4.cpp
  • src/AstGUI/AstGUI.hpp
  • src/AstMath/ODE/StateObserver/ODEEventDetectorList.cpp
  • src/AstMath/ODE/StateObserver/ODEEventDetectorList.hpp
  • src/AstPy/AstAllHeaders.i
  • src/AstPy/xmake.lua
  • src/AstScript/Foreign/PythonAPI.cpp
  • src/AstScript/Foreign/PythonAPI.hpp
  • src/AstScript/Foreign/ScriptExecutor/ActiveScriptExecutor.cpp
  • src/AstScript/Foreign/ScriptExecutor/ActiveScriptExecutor.hpp
  • src/AstScript/Foreign/ScriptExecutor/JScriptExecutor.cpp
  • src/AstScript/Foreign/ScriptExecutor/JScriptExecutor.hpp
  • src/AstScript/Foreign/ScriptExecutor/PythonExecutor.cpp
  • src/AstScript/Foreign/ScriptExecutor/PythonExecutor.hpp
  • src/AstScript/Foreign/ScriptExecutor/ScriptExecutor.hpp
  • src/AstScript/Foreign/ScriptExecutor/VBScriptExecutor.cpp
  • src/AstScript/Foreign/ScriptExecutor/VBScriptExecutor.hpp
  • src/AstScript/Parser/Parser.cpp
  • src/AstTest/TestScript.cpp
  • src/AstUiCore/.gitkeep
  • src/AstUiCore/Analyzer/UiAnalyzerMainWindow.cpp
  • src/AstUiCore/Analyzer/UiAnalyzerMainWindow.hpp
  • src/AstUiCore/Analyzer/UiResultView.cpp
  • src/AstUiCore/Analyzer/UiResultView.hpp
  • src/AstUiCore/Analyzer/UiStudyWorkbench.cpp
  • src/AstUiCore/Analyzer/UiStudyWorkbench.hpp
  • src/AstUiCore/Analyzer/UiSweepOutputList.cpp
  • src/AstUiCore/Analyzer/UiSweepOutputList.hpp
  • src/AstUiCore/Analyzer/UiSweepStudy.cpp
  • src/AstUiCore/Analyzer/UiSweepStudy.hpp
  • src/AstUiCore/Analyzer/UiSweepVariableList.cpp
  • src/AstUiCore/Analyzer/UiSweepVariableList.hpp
  • src/AstUiCore/Analyzer/UiWorkbenchExprPicker.cpp
  • src/AstUiCore/Analyzer/UiWorkbenchExprPicker.hpp
  • src/AstUiCore/App/AstGUIAPI.cpp
  • src/AstUiCore/App/AstGUIAPI.hpp
  • src/AstUiCore/AstGUI_en.ts
  • src/AstUiCore/AstUiCore.hpp
  • src/AstUiCore/AstUiCoreGlobal.h
  • src/AstUiCore/Attribute/AttributeTree/UiAttributeTree.cpp
  • src/AstUiCore/Attribute/AttributeTree/UiAttributeTree.hpp
  • src/AstUiCore/Attribute/AttributeTree/UiAttributeTreeItem.cpp
  • src/AstUiCore/Attribute/AttributeTree/UiAttributeTreeItem.hpp
  • src/AstUiCore/Attribute/UiAttrMotionProfile.cpp
  • src/AstUiCore/Attribute/UiAttrMotionProfile.hpp
  • src/AstUiCore/Attribute/UiAttrState.cpp
  • src/AstUiCore/Attribute/UiAttrState.hpp
  • src/AstUiCore/Attribute/UiAttribute.cpp
  • src/AstUiCore/Attribute/UiAttribute.hpp
  • src/AstUiCore/Engine/UiModerator.cpp
  • src/AstUiCore/Engine/UiModerator.hpp
  • src/AstUiCore/ForceModel/UiDragForce.cpp
  • src/AstUiCore/ForceModel/UiDragForce.hpp
  • src/AstUiCore/ForceModel/UiGravityForce.cpp
  • src/AstUiCore/ForceModel/UiGravityForce.hpp
  • src/AstUiCore/ForceModel/UiHPOPForceModel.cpp
  • src/AstUiCore/ForceModel/UiHPOPForceModel.hpp
  • src/AstUiCore/ForceModel/UiPointMassForce.cpp
  • src/AstUiCore/ForceModel/UiPointMassForce.hpp
  • src/AstUiCore/ForceModel/UiSolarRadiationPressure.cpp
  • src/AstUiCore/ForceModel/UiSolarRadiationPressure.hpp
  • src/AstUiCore/ForceModel/UiThirdBodyForce.cpp
  • src/AstUiCore/ForceModel/UiThirdBodyForce.hpp
  • src/AstUiCore/ForceModel/UiThirdBodyForceList.cpp
  • src/AstUiCore/ForceModel/UiThirdBodyForceList.hpp
  • src/AstUiCore/Foundation/ComponentTree/UiComponentTree.cpp
  • src/AstUiCore/Foundation/ComponentTree/UiComponentTree.hpp
  • src/AstUiCore/Foundation/ObjectIcons.cpp
  • src/AstUiCore/Foundation/ObjectIcons.hpp
  • src/AstUiCore/Foundation/ObjectTree/UiCommandTree.cpp
  • src/AstUiCore/Foundation/ObjectTree/UiCommandTree.hpp
  • src/AstUiCore/Foundation/ObjectTree/UiCommandTreeItem.cpp
  • src/AstUiCore/Foundation/ObjectTree/UiCommandTreeItem.hpp
  • src/AstUiCore/Foundation/ObjectTree/UiObjectTree.cpp
  • src/AstUiCore/Foundation/ObjectTree/UiObjectTree.hpp
  • src/AstUiCore/Foundation/ObjectTree/UiObjectTreeItem.cpp
  • src/AstUiCore/Foundation/ObjectTree/UiObjectTreeItem.hpp
  • src/AstUiCore/Foundation/UiCommon.cpp
  • src/AstUiCore/Foundation/UiCommon.hpp
  • src/AstUiCore/Foundation/UiDouble.cpp
  • src/AstUiCore/Foundation/UiDouble.hpp
  • src/AstUiCore/Foundation/UiEventInterval.cpp
  • src/AstUiCore/Foundation/UiEventInterval.hpp
  • src/AstUiCore/Foundation/UiEventTime.cpp
  • src/AstUiCore/Foundation/UiEventTime.hpp
  • src/AstUiCore/Foundation/UiFilePath.cpp
  • src/AstUiCore/Foundation/UiFilePath.hpp
  • src/AstUiCore/Foundation/UiInteger.cpp
  • src/AstUiCore/Foundation/UiInteger.hpp
  • src/AstUiCore/Foundation/UiObject.cpp
  • src/AstUiCore/Foundation/UiObject.hpp
  • src/AstUiCore/Foundation/UiQuantity.cpp
  • src/AstUiCore/Foundation/UiQuantity.hpp
  • src/AstUiCore/Foundation/UiSelectFrame.cpp
  • src/AstUiCore/Foundation/UiSelectFrame.hpp
  • src/AstUiCore/Foundation/UiTimeInterval.cpp
  • src/AstUiCore/Foundation/UiTimeInterval.hpp
  • src/AstUiCore/Foundation/UiTimePoint.cpp
  • src/AstUiCore/Foundation/UiTimePoint.hpp
  • src/AstUiCore/Foundation/UiTimelineView.cpp
  • src/AstUiCore/Foundation/UiTimelineView.hpp
  • src/AstUiCore/Foundation/UiValueEdit.cpp
  • src/AstUiCore/Foundation/UiValueEdit.hpp
  • src/AstUiCore/Foundation/UiWidget.cpp
  • src/AstUiCore/Foundation/UiWidget.hpp
  • src/AstUiCore/Interface/GUIInterfaceImpl.cpp
  • src/AstUiCore/Interface/GUIInterfaceImpl.hpp
  • src/AstUiCore/Interface/ObjectEditRegistry.cpp
  • src/AstUiCore/Interface/ObjectEditRegistry.hpp
  • src/AstUiCore/Math/UiODEIntegrator.cpp
  • src/AstUiCore/Math/UiODEIntegrator.hpp
  • src/AstUiCore/Math/UiODEIntegratorEditor.cpp
  • src/AstUiCore/Math/UiODEIntegratorEditor.hpp
  • src/AstUiCore/Math/UiODEVarStepIntegrator.cpp
  • src/AstUiCore/Math/UiODEVarStepIntegrator.hpp
  • src/AstUiCore/Mission/MissionIcons.hpp
  • src/AstUiCore/Mission/UiCommandEditor.cpp
  • src/AstUiCore/Mission/UiCommandEditor.hpp
  • src/AstUiCore/Mission/UiCommandSummary.cpp
  • src/AstUiCore/Mission/UiCommandSummary.hpp
  • src/AstUiCore/Mission/UiExpressionBrowser.cpp
  • src/AstUiCore/Mission/UiExpressionBrowser.hpp
  • src/AstUiCore/Mission/UiFeasibleRegionStudy.cpp
  • src/AstUiCore/Mission/UiFeasibleRegionStudy.hpp
  • src/AstUiCore/Mission/UiInitialState.cpp
  • src/AstUiCore/Mission/UiInitialState.hpp
  • src/AstUiCore/Mission/UiManeuver.cpp
  • src/AstUiCore/Mission/UiManeuver.hpp
  • src/AstUiCore/Mission/UiPropagate.cpp
  • src/AstUiCore/Mission/UiPropagate.hpp
  • src/AstUiCore/Mission/UiSequence.cpp
  • src/AstUiCore/Mission/UiSequence.hpp
  • src/AstUiCore/Mission/UiSequenceWorkbench.cpp
  • src/AstUiCore/Mission/UiSequenceWorkbench.hpp
  • src/AstUiCore/Mission/UiVariableList.cpp
  • src/AstUiCore/Mission/UiVariableList.hpp
  • src/AstUiCore/Motion/UiMotionHPOP.cpp
  • src/AstUiCore/Motion/UiMotionHPOP.hpp
  • src/AstUiCore/Motion/UiMotionProfile.cpp
  • src/AstUiCore/Motion/UiMotionProfile.hpp
  • src/AstUiCore/Motion/UiMotionSPICE.cpp
  • src/AstUiCore/Motion/UiMotionSPICE.hpp
  • src/AstUiCore/Motion/UiMotionTwoBody.cpp
  • src/AstUiCore/Motion/UiMotionTwoBody.hpp
  • src/AstUiCore/Propagator/UiBurnEditor.cpp
  • src/AstUiCore/Propagator/UiBurnEditor.hpp
  • src/AstUiCore/Propagator/UiBurnImpulsive.cpp
  • src/AstUiCore/Propagator/UiBurnImpulsive.hpp
  • src/AstUiCore/Propagator/UiEventDetector.cpp
  • src/AstUiCore/Propagator/UiEventDetector.hpp
  • src/AstUiCore/Propagator/UiEventDetectorEditor.cpp
  • src/AstUiCore/Propagator/UiEventDetectorEditor.hpp
  • src/AstUiCore/README.md
  • src/AstUiCore/SolarSystem/Ephemeris/UiBodyEphemerisDE.cpp
  • src/AstUiCore/SolarSystem/Ephemeris/UiBodyEphemerisDE.hpp
  • src/AstUiCore/SolarSystem/Ephemeris/UiBodyEphemerisSPK.cpp
  • src/AstUiCore/SolarSystem/Ephemeris/UiBodyEphemerisSPK.hpp
  • src/AstUiCore/SolarSystem/Ephemeris/UiSTKEphemerisFileWriter.cpp
  • src/AstUiCore/SolarSystem/Ephemeris/UiSTKEphemerisFileWriter.hpp
  • src/AstUiCore/SolarSystem/UiCelestialBody.cpp
  • src/AstUiCore/SolarSystem/UiCelestialBody.hpp
  • src/AstUiCore/SolarSystem/UiSolarSystem.cpp
  • src/AstUiCore/SolarSystem/UiSolarSystem.hpp
  • src/AstUiCore/Spacecraft/UiEventDetectorList.cpp
  • src/AstUiCore/Spacecraft/UiEventDetectorList.hpp
  • src/AstUiCore/Spacecraft/UiFuelTank.cpp
  • src/AstUiCore/Spacecraft/UiFuelTank.hpp
  • src/AstUiCore/Spacecraft/UiSpacecraftParams.cpp
  • src/AstUiCore/Spacecraft/UiSpacecraftParams.hpp
  • src/AstUiCore/State/UiState.cpp
  • src/AstUiCore/State/UiState.hpp
  • src/AstUiCore/State/UiStateCartesian.cpp
  • src/AstUiCore/State/UiStateCartesian.hpp
  • src/AstUiCore/State/UiStateEditor.cpp
  • src/AstUiCore/State/UiStateEditor.hpp
  • src/AstUiCore/State/UiStateKeplerian.cpp
  • src/AstUiCore/State/UiStateKeplerian.hpp
  • src/AstUiCore/Window/UiCentralBodies.hpp
  • src/AstUiCore/Window/UiInsertObjectDialog.cpp
  • src/AstUiCore/Window/UiInsertObjectDialog.hpp
  • src/AstUiCore/Window/UiMissionAnalysisWindow.cpp
  • src/AstUiCore/Window/UiMissionAnalysisWindow.hpp
  • src/AstUiCore/Window/UiNewObjectDialog.cpp
  • src/AstUiCore/Window/UiNewObjectDialog.hpp
  • src/AstUiCore/Window/UiNewObjectQuickDialog.cpp
  • src/AstUiCore/Window/UiNewObjectQuickDialog.hpp
  • src/AstUiCore/Window/UiOrbitWizard.cpp
  • src/AstUiCore/Window/UiOrbitWizard.hpp
  • src/AstUiCore/Window/UiScenarioWizard.cpp
  • src/AstUiCore/Window/UiScenarioWizard.hpp
  • src/AstUiCore/Window/UiStartPage.cpp
  • src/AstUiCore/Window/UiStartPage.hpp
  • src/AstUiCore/xmake.lua
  • src/AstUiPilot/PilotCommander.cpp
  • src/AstUiPilot/PilotCommander.hpp
  • src/AstUiPilot/PilotPipeServer.cpp
  • src/AstUiPilot/PilotPipeServer.hpp
  • src/AstUiPilotBoot/PilotBoot.cpp
  • src/AstUtil/Archiver/Compress.cpp
  • src/AstUtil/Archiver/CompressorImpl/CompressorImplShellCOM.cpp
  • src/AstUtil/Archiver/Extract.cpp
  • src/AstUtil/Archiver/ExtractorImpl/ExtractorImplShellCOM.cpp
  • src/AstUtil/Archiver/ShellCOMUtils.hpp
  • src/AstUtil/AstUtil.hpp
  • src/AstUtil/Identitifer/Identifier.hpp
  • src/AstUtil/Identitifer/IdentifierTable.hpp
  • src/AstUtil/Platform/COMUtil.cpp
  • src/AstUtil/Platform/COMUtil.hpp
  • src/AstUtil/Platform/GUIInterface.cpp
  • src/AstUtil/Platform/LibraryLoader.cpp
  • src/AstUtil/Platform/Thread.cpp
  • src/AstUtil/Platform/Thread.hpp
  • src/AstUtil/Quantity/UnitManager.cpp
  • src/AstUtil/RTTI/Object.cpp
  • src/AstUtil/RTTI/ObjectManager.cpp
  • src/AstUtil/RTTI/ObjectNode.cpp
  • src/AstUtil/RTTI/ObjectNode.hpp
  • src/AstUtil/RTTI/Reflect/Class.hpp
  • src/AstUtil/Util/Constants.hpp
  • src/AstUtil/xmake.lua
  • src/xmake.lua
  • src/xmake.sh
  • test/Core/HPOP/testHPOPEarth_Drag.cpp
  • test/Core/HPOP/testHPOPEarth_Gravity.cpp
  • test/Core/HPOP/testHPOPEarth_Perturbation.cpp
  • test/Core/HPOP/testHPOPEarth_SRP.cpp
  • test/Core/HPOP/testHPOP_ThirdBodyGravity.cpp
  • test/Core/testAccessAnalysis.cpp
  • test/Core/testAxesFrozenNullReference.cpp
  • test/Core/testEclipseEventFinder.cpp
  • test/Core/testEphemerisVinti.cpp
  • test/Core/testLaunchAzimuth.cpp
  • test/Core/testRotationData.cpp
  • test/Core/testSolarSystem.cpp
  • test/Core/testVinti6.cpp
  • test/Math/testTransform.cpp
  • test/Script/testActiveScriptExecutor.cpp
  • test/Script/testPythonAPI.cpp
  • test/Script/testPythonExecutor.cpp
  • test/Script/testScriptAPI.cpp
  • test/Script/testScriptEval.cpp
  • test/Script/testScriptQuantity.cpp
  • test/Util/bmDynamicCast.cpp
  • test/Util/testEncode.cpp
  • test/Util/testReflect.cpp
  • test/Util/testSerializeCpp.cpp
  • test/Util/testSmartPointer.cpp
  • test/xmake.lua
  • thirdparty/cspice-linux
  • thirdparty/matplotplusplus
  • xmake.lua
  • xmake.sh
  • xpack.lua

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Comment @coderabbitai help to get the list of available commands.

@codacy-production

codacy-production Bot commented Sep 22, 2026 •

Copy link
Copy Markdown

Not up to standards ⛔

🔴 Issues 1 high

Alerts:
⚠ 1 issue (≤ 0 issues of at least minor severity)

Results:
1 new issue

Category Results
ErrorProne 1 high

View in Codacy

🟢 Metrics 1303 complexity · 0 duplication

Metric Results
Complexity 1303
Duplication 0

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@space-axel space-axel changed the title feat: 内存消毒器构建模式、发射方位角模块与脚本执行器增强 feat: Sanitizer 构建模式、发射方位角模块与脚本执行器增强 Sep 22, 2026
Comment on lines +12 to +92
runs-on: ${{ matrix.target.runner }}
strategy:
fail-fast: false
matrix:
mode: [release, debug, asan]
target:
- { runner: ubuntu-latest, arch: x86_64 }
- { runner: ubuntu-22.04-arm, arch: arm64 }
- { runner: windows-2022, arch: x64 }
- { runner: windows-2022, arch: x86 }
- { runner: windows-11-arm, arch: arm64 }
concurrency:
group: ${{ github.ref }}-${{ github.base_ref }}-${{ github.head_ref }}-${{ matrix.target.runner }}-${{ matrix.target.arch }}-${{ matrix.mode }}-test
cancel-in-progress: true
steps:
- uses: actions/checkout@v4
with:
submodules: true

- uses: xmake-io/github-action-setup-xmake@v1
with:
# this is not supported, use dev branch instead
# xmake-version: local#
xmake-version: branch@dev
actions-cache-folder: '.xmake-cache'
actions-cache-key: ${{ matrix.target.runner }}

- name: 配置依赖缓存
uses: actions/cache@v4
with:
# 包里有一些二进制工具,没必要每个 mode 都缓存一份,避免占用过多缓存额度
path: xmake-cache
key: test-${{ matrix.target.runner }}-${{ matrix.target.arch }}-xmake-cache-${{ hashFiles('repo/packages/**', 'thirdparty/**') }}-v1

- name: 配置编译缓存
if: github.ref != 'refs/heads/master'
uses: actions/cache@v4
with:
path: |
build
.xmake
key: test-${{ matrix.target.runner }}-${{ matrix.target.arch }}-${{ matrix.mode }}-build-v1-${{ hashFiles('repo/packages/**', 'thirdparty/**') }}-${{ github.sha }}
restore-keys: |
test-${{ matrix.target.runner }}-${{ matrix.target.arch }}-${{ matrix.mode }}-build-v1-${{ hashFiles('repo/packages/**', 'thirdparty/**') }}-

- name: 设置xmake相关目录
run: |
xmake g --pkg_cachedir=$(pwd)/xmake-cache/cache
xmake g --pkg_installdir=$(pwd)/xmake-cache/packages
xmake repo -u

- name: 配置项目
run: |
xmake f -cy --with_test=y --check_warnings=n -m ${{ matrix.mode }} -a ${{ matrix.target.arch }}
xmake show

- name: 准备 SWIG
if: runner.os == 'Linux'
run: |
SWIG_BIN="$(find "$PWD/xmake-cache/packages/s/swig" -type f -name swig 2>/dev/null | head -1)"
if [ -n "$SWIG_BIN" ]; then echo "$(dirname "$SWIG_BIN")" >> "$GITHUB_PATH"; fi
echo "swig: ${SWIG_BIN:-未找到}"

- name: 恢复归档测试用例
shell: bash
run: cp -r test/Archive/* test

- name: 编译
env:
# 编译期间跑的都是构建工具(swig / moc / 编译器),不是被测代码。
# 避免因为存在 ASan 版的工具,让 LeakSanitizer 的泄漏报告把它判成失败。
# 测试步骤不带这个变量,泄漏检测照常生效。
ASAN_OPTIONS: detect_leaks=0
run: |
xmake -ay

- name: 执行${{ matrix.mode }}测试
timeout-minutes: 90
run: |
xmake cpdata
xmake test --output-on-failure
@codecov

codecov Bot commented Sep 22, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@space-axel
space-axel merged commit 763744b into master Sep 23, 2026
45 of 48 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants