/blog/images/avatar.webp

Hello World

MISRA C 2023 规范

MISRA C 2023 规范

https://ww2.mathworks.cn/help/bugfinder/misra-c-2023-reference.html?lang=en


English Version

Directives

Implementation

[Dir 1.1] Any implementation-defined behavior on which the output of the program depends shall be documented and understood.


Compilation and build

[Dir 2.1] All source files shall compile without any compilation errors.


Code design

[Dir 4.1] Run-time failures shall be minimized.

[Dir 4.3] Assembly language shall be encapsulated and isolated.

[Dir 4.4] Sections of code should not be “commented out”.

CERT C 规范

CERT C 规范

https://ww2.mathworks.cn/help/bugfinder/cert-c-rules-and-recommendations.html?lang=en


English Version

Rules

Preprocessor

[Rule PRE30-C] Do not create a universal character name through concatenation.

[Rule PRE31-C] Avoid side effects in arguments to unsafe macros.

[Rule PRE32-C] Do not use preprocessor directives in invocations of function-like macros.


Declarations and initialization

[Rule DCL30-C] Declare objects with appropriate storage durations.

[Rule DCL31-C] Declare identifiers before using them.

[Rule DCL36-C] Do not declare an identifier with conflicting linkage classifications.

AUTOSAR C++ 2014 规范

AUTOSAR Cpp 2014 规范

https://ww2.mathworks.cn/help/bugfinder/autosar-c-14.html?lang=en


中文版本

语言无关问题

[Rule A0-1-1] 项目中不得包含被赋予值但后续未使用的非易失性变量实例。

[Rule A0-1-2] 具有非 void 返回类型(非重载运算符)的函数返回值必须被使用。

[Rule A0-1-3] 在匿名命名空间中定义的函数、具有内部链接的静态函数或私有成员函数必须被使用。

CERT C++ 规范

CERT Cpp 规范

https://ww2.mathworks.cn/help/bugfinder/cert-c-rules.html?lang=en


English Version

Declare and Initialization

[DCL30-C] Declare objects with appropriate storage durations.

[DCL39-C] Avoid information leakage in structure padding.

[DCL40-C] Do not create incompatible declarations of the same function or object.

[DCL50-CPP] Do not define a C-style variadic function.

[DCL51-CPP] Do not declare or define a reserved identifier.

[DCL52-CPP] Never qualify a reference type with const or volatile.

[DCL53-CPP] Do not write syntactically ambiguous declarations.

Misra C++ 2008 规范

Misra Cpp 2008

中文版本

语言无关问题

不必要的构造

规则 0-1-1 (必需)项目不应包含无法访问的代码。

规则 0-1-2 (必需)项目不应包含不可行的路径。

规则 0-1-3 (必需)项目不应包含未使用的变量。

规则 0-1-4 (必需)项目不应包含只有一种用途的非易失性 POD 变量。

Misra C++ 2008 详细总结

MISRA C++:2008 详细总结

MISRA C++:2008 全称《Guidelines for the use of the C++ language in critical systems》,是由英国汽车工业软件可靠性协会(MISRA)于2008年发布的C++安全编码行业标准,专为高安全、高可靠性要求的嵌入式与关键系统设计,是全球汽车电子、航空航天、医疗设备、轨道交通、工业控制等领域公认的C++编码事实规范,也是ISO 26262、IEC 61508、DO-178C等国际功能安全标准在C++语言层面的核心落地支撑。

C++ 编码规范

C++ 编码规范

本文基于Google官方最新C++ Style Guide(2025版,目标C++20标准)编写,完整覆盖规范的核心设计哲学、强制规则与工程最佳实践,是工业界最具影响力的C++工程化编码标准。

colcon 使用详细总结

colcon 使用详细总结

colcon 是 ROS 2 默认的元构建工具,是 catkin_make、catkin_tools、ament_tools 的迭代升级版本,用于ROS 2工作空间的包构建、测试、打包与环境管理,支持ament_cmake、ament_python、纯CMake、Python setuptools等多种构建类型,采用拓扑序并行构建,原生支持工作空间叠加(overlay/underlay)机制,是ROS 2开发的核心工具。

ROS2 源码详细分析

ROS2 源码详细分析(基于Humble LTS 稳定版)

本文基于ROS2 Humble LTS官方源码,从分层架构、核心模块源码实现、全链路通信流程三个维度,对ROS2核心源码进行深度拆解,同时补充关键设计思想与源码阅读路径。

ROS2 使用详细总结

ROS2 使用详细总结

本文基于ROS2最新LTS版本(Humble Hawksbill / Jazzy Jalisco)编写,覆盖从环境搭建、核心概念、开发流程、进阶特性到生态应用、避坑指南的全链路内容,兼顾入门与实战,是一份可直接落地的ROS2全栈使用手册。

DDS 协议详细总结

DDS协议 全面详细总结

DDS(Data Distribution Service,数据分发服务)是由OMG(对象管理组织) 标准化的、以数据为中心的发布-订阅(DCPS) 分布式实时通信中间件协议,专为高可靠、低延迟、高可用的分布式硬实时系统设计,是自动驾驶、工业4.0、航空航天、机器人等领域的核心通信标准。

SOME/IP 协议详细总结

SOME/IP协议 全面详细总结

SOME/IP 全称 Scalable service-Oriented MiddlewarE over IP(基于IP的可扩展面向服务中间件),是专为汽车电子电气(EE)架构设计的车载以太网核心通信协议,也是AUTOSAR架构中实现车载SOA(面向服务架构)的基石,解决了传统CAN/CAN FD总线带宽不足、扩展性差、无法支撑软件定义汽车动态功能部署的核心痛点。

AUTOSAR ara::com 接口使用详细总结

AUTOSAR ara::com 接口使用详细总结

ara::com 是 AUTOSAR Adaptive Platform(AP)自适应平台中通信管理(Communication Management, CM) 功能集群的标准化C++接口,是AP实现面向服务通信(Service-Oriented Communication, SOC) 的核心中枢,完全区别于Classic Platform(CP)基于信号的通信范式,为车载分布式自适应应用提供了跨进程、跨ECU的标准化、类型安全、可扩展的通信能力。

adb 命令使用详细总结

ADB 命令使用详细总结

ADB(Android Debug Bridge,安卓调试桥)是 Android SDK 提供的客户端-服务端架构调试工具,可实现 PC 与 Android 设备/模拟器的全场景通信,是开发、测试、玩机的核心工具。其架构分为三部分:

tmux 命令使用详细总结

tmux 使用完全总结

tmux 是一款经典的终端复用器(Terminal Multiplexer),核心能力是在单个终端窗口中创建、管理多个独立的终端会话,同时实现会话后台保活、窗口分屏、多任务并行处理,是远程SSH运维、服务器开发、多任务命令行操作的必备工具。

Repo 命令使用详细总结

Repo 命令使用详细总结

Repo 是 Google 基于 Python 开发的多 Git 仓库批量管理工具,并非 Git 的替代品,而是对 Git 命令的上层封装,专为 AOSP(Android 开源项目)这类包含数百个独立 Git 仓库的超大型项目设计,核心通过 manifest.xml 清单文件统一管理所有子仓库的地址、分支、路径等配置,实现一键式批量同步、分支操作、代码提交流程。

gdb 使用详细总结

GDB 使用详细总结

GDB(GNU Project Debugger)是GNU开源组织发布的跨平台程序调试器,是Linux/Unix环境下C/C++、Go、Rust等编译型语言的核心调试工具,核心能力包括控制程序执行流程、查看/修改运行时数据、定位崩溃与逻辑bug、事后分析core dump文件,是后端开发、底层开发的必备技能。

MCP 协议详细总结

MCP(Model Context Protocol)协议实现详细总结

一、MCP核心定义与定位

1. 基础定义

MCP(Model Context Protocol,模型上下文协议)是由Anthropic牵头、多家AI厂商联合推出的开源标准化通信协议,基于JSON-RPC 2.0构建,为大语言模型(LLM)应用与外部工具、数据源、系统服务之间提供统一、安全、可互操作的通信标准,彻底解决了传统Function Calling碎片化开发、多平台适配成本高、安全边界模糊、能力复用性差的行业痛点,实现了“一次开发,全生态兼容”的能力复用。

XCP 协议详细总结

XCP协议详细总结

XCP(Universal Measurement and Calibration Protocol,通用测量与标定协议)是由ASAM(自动化与测量系统标准化协会) 制定的国际标准(ASAM MCD-1 XCP),2003年正式发布,是CCP(CAN标定协议)的跨总线升级版本。它是汽车电子领域ECU(电子控制单元)开发、标定、测试环节的核心通信协议,核心价值是在标定工具与ECU之间建立标准化、高实时性、跨传输介质的通信通道,实现ECU运行时的变量实时采集、参数在线标定、程序刷写与调试等核心功能。