CI/CD中集成Clang警告扫描,团队效率提升80%的秘密武器

Jenkinsfile流水线构建教程 本文介绍Jenkins2 Jenkinsfile构建流水线的方法. 阅读详情

第一章:CI/CD中集成Clang警告扫描的意义

在现代软件开发流程中,持续集成与持续交付(CI/CD)已成为保障代码质量与发布效率的核心实践。将静态分析工具如 Clang 集成到 CI/CD 流程中,能够有效识别潜在的代码缺陷、未定义行为和风格问题,尤其是在 C/C++ 项目中,Clang 提供了强大且精准的警告机制。

提升代码质量与安全性

Clang 能够在编译阶段捕获空指针解引用、内存泄漏、类型不匹配等常见错误。通过在 CI 流水线中自动执行 Clang 扫描,团队可以在代码合入前及时发现并修复问题,避免缺陷流入生产环境。

统一编码规范与团队协作

集成 Clang 还有助于强制执行统一的编码标准。例如,可通过配置编译选项启用特定警告组:
clang -Weverything -Werror -c example.c
// 启用所有警告并将警告视为错误,确保构建失败以引起重视
该命令在 CI 环境中运行时,任何触发警告的代码都将导致流水线中断,从而推动开发者修正代码。

CI 中的典型集成步骤

  • 在 CI 配置文件中添加构建步骤,使用 Clang 编译器替代默认编译器
  • 启用关键警告标志,如 -Wall、-Wextra、-Werror
  • 将扫描结果输出为日志或结构化报告,便于后续分析
警告类型潜在风险建议处理方式
unused-variable代码冗余,维护成本增加删除或重新设计逻辑
uninitialized运行时未定义行为显式初始化变量
graph LR A[提交代码] --> B{CI 触发} B --> C[Clang 编译扫描] C --> D{存在警告?} D -- 是 --> E[构建失败,通知开发者] D -- 否 --> F[继续部署流程]

第二章:Clang静态分析核心原理与警告机制

2.1 Clang静态分析架构解析

Clang静态分析器是LLVM项目中用于检测C、C++和Objective-C代码缺陷的重要工具,其核心基于源码的抽象语法树(AST)进行语义分析。
分析流程概览
静态分析从源代码解析开始,经预处理、AST构建,最终由分析引擎遍历语义结构。整个过程高度模块化,便于扩展自定义检查规则。
关键组件结构
  • Checker API:提供可插拔的缺陷检测模块接口
  • Path-Sensitive Analysis:路径敏感分析引擎,追踪变量状态变化
  • Constraint System:维护条件约束,判断分支可行性

void checkASTDecl(const FunctionDecl *FD, 
                  AnalysisManager& AM, 
                  BugReporter &BR) const {
  // 遍历函数声明,执行自定义逻辑
  for (const Stmt *S : FD->body()) {
    // 分析语句结构
  }
}
该代码片段展示了一个典型的AST遍历检查函数。参数FunctionDecl表示被分析的函数声明,AnalysisManager提供分析上下文,BugReporter用于报告发现的潜在缺陷。

2.2 常见编译警告与潜在缺陷对应关系

未使用变量警告
编译器常提示“variable declared but not used”,这可能意味着逻辑遗漏或调试残留。例如在 Go 中:

func calculateSum(a, b int) int {
    unused := 0
    return a + b
}
上述代码中 unused 变量从未被使用,可能导致维护者误解其意图。应删除无用变量,确保代码简洁性与可读性。
空指针解引用风险
C/C++ 中常见警告“dereferencing uninitialized pointer”往往预示运行时崩溃风险。可通过静态分析工具提前识别,并结合条件判断规避。
典型警告与缺陷映射表
编译警告潜在缺陷建议措施
‘return’ without a value函数返回路径不完整统一返回逻辑
Deprecated API usage兼容性问题升级至推荐接口

2.3 警告级别分类与敏感度配置

在监控系统中,合理划分警告级别有助于精准响应异常。通常将警告分为四个等级:
  • INFO:信息提示,无需干预
  • WARN:潜在风险,需关注趋势
  • ERROR:服务异常,需立即处理
  • FATAL:严重故障,可能影响核心功能
敏感度配置策略
可通过配置文件动态调整触发阈值。例如:
alert:
  level: WARN
  sensitivity: 
    low: 0.5   # 允许50%波动
    medium: 0.3
    high: 0.1  # 波动超10%即触发
上述配置中,sensitivity 控制检测灵敏度,数值越小越敏感。结合实际业务场景选择合适档位,避免误报或漏报。
多级告警联动机制
输入数据 → 阈值比对 → 判断级别 → 触发通知 → 记录日志

2.4 如何区分可修复警告与误报

在静态分析和安全扫描中,准确识别可修复警告与误报是提升代码质量的关键。许多工具会因上下文缺失而产生大量噪音,需结合技术手段与经验判断。
常见判断依据
  • 上下文相关性:检查变量是否真实可控,如用户输入未过滤
  • 执行路径可达性:确认漏洞点是否在实际调用链中
  • 数据流分析:追踪敏感数据是否流向危险函数
示例代码分析
if userInput != "" {
    query := "SELECT * FROM users WHERE id = " + userInput
    db.Exec(query) // 潜在SQL注入
}
该代码拼接SQL语句,userInput 来自外部输入且未参数化处理,构成**可修复警告**。应使用预编译语句修复。
误报典型场景
场景说明
常量赋值值为硬编码字符串,无外部输入风险
沙盒环境代码运行于隔离环境,无危害传播可能

2.5 在持续集成流程中嵌入分析节点的理论基础

在持续集成(CI)流程中嵌入静态代码分析节点,其理论基础源于软件质量前移(Shift Left)原则。该理念主张将缺陷检测与质量保障活动尽可能提前至开发早期阶段,从而降低修复成本、提升交付效率。
分析节点的典型插入位置
分析通常在代码提交触发构建后、单元测试执行前介入,确保问题代码不会进入后续流程。典型的 CI 流水线顺序如下:
  1. 代码拉取(Git Clone)
  2. 静态分析(Static Analysis)
  3. 编译构建(Build)
  4. 单元测试(Test)
代码示例:GitHub Actions 中的分析任务

- name: Run Code Analysis
  uses: reviewdog/action-eslint@v1
  with:
    reporter: github-pr-check
    level: error
上述配置在 CI 中集成 ESLint 分析,通过 reviewdog 将结果反馈至 Pull Request。参数 level: error 确保仅阻断严重问题,提升可维护性。
关键优势对比
阶段缺陷发现成本修复周期
CI 分析阶段低分钟级
生产环境极高天级

第三章:Clang工具链在CI/CD中的集成实践

3.1 搭建支持Clang扫描的构建环境

为了启用Clang静态分析工具对C/C++项目进行代码质量检测,首先需配置兼容的构建系统。推荐使用CMake配合`-DCMAKE_EXPORT_COMPILE_COMMANDS=ON`选项生成编译数据库(compile_commands.json),该文件是Clang-Tidy和scan-build等工具解析源码依赖的关键输入。
安装必要工具链
确保系统中已安装Clang及相关组件:
  • clang:核心编译器
  • clang-tidy:静态检查工具
  • clang-tools-extra:包含扩展分析模块
生成编译数据库
在项目根目录执行以下命令:
mkdir build && cd build
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..
该命令将生成compile_commands.json,记录每个源文件的完整编译参数,供后续扫描工具精确解析语法树。
图:构建流程中编译数据库的生成与使用路径

3.2 使用CMake与Clang结合生成编译数据库

在现代C/C++项目中,准确的编译信息对静态分析和IDE支持至关重要。通过CMake与Clang协同工作,可生成标准化的编译数据库(compile_commands.json),记录每个源文件的完整编译命令。
启用编译数据库生成
在配置CMake项目时,添加以下选项以生成编译数据库:
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -B build
该命令指示CMake在构建过程中自动生成 compile_commands.json 文件,并输出至构建目录。此文件包含源文件路径、包含目录、宏定义及编译器标志等关键信息。
与Clang工具链集成
生成的数据库可被Clang工具(如clang-tidy、clangd)直接读取,实现精准的代码补全与诊断。例如:
clang-tidy src/main.cpp --compile-commands-dir=build
此命令利用构建目录中的编译信息,确保分析环境与实际编译一致,提升检查准确性。

3.3 在Jenkins/GitLab CI中运行clang-tidy与clang-analyzer

集成静态分析工具到CI流水线
在Jenkins或GitLab CI中集成clang-tidy和clang-analyzer,可实现代码提交时自动执行静态检查,提升代码质量。通常通过脚本调用run-clang-tidy和scan-build工具。

#!/bin/bash
# 使用scan-build分析编译过程
scan-build --use-analyzer=/usr/bin/clang make -C build

# 执行clang-tidy对指定文件进行检查
run-clang-tidy -p build/ -checks='modernize-*,-modernize-concat-nested-namespaces' src/*.cpp
上述脚本中,-p build/指定编译数据库路径,-checks参数启用现代C++改进建议规则,同时排除命名空间合并建议。
配置GitLab CI示例
  • 使用before_script安装clang-tools包
  • 将分析步骤纳入test阶段
  • 输出结果重定向至报告文件,便于后续归档

第四章:提升团队效率的关键优化策略

4.1 警告结果可视化与报告生成

可视化引擎集成
现代监控系统依赖可视化工具将复杂警告数据转化为可读图表。Grafana 与 Prometheus 的结合成为行业标准,通过预设仪表盘实时展示警告趋势。
自动化报告生成流程
系统每日生成PDF格式的警告汇总报告,包含触发次数、级别分布与响应状态。使用如下模板配置:

type ReportConfig struct {
    OutputFormat string `json:"format"` // 支持 pdf, html
    IncludeGraph bool   `json:"include_graph"`
    TimeRange    string `json:"time_range"` // 如 "24h", "7d"
}
该结构体定义了报告输出的基本参数,IncludeGraph 控制是否嵌入趋势图,TimeRange 决定数据窗口。
警告分类统计表
警告类型数量最高级别
CPU过载12CRITICAL
磁盘空间8WARNING

4.2 按代码模块分配修复责任的协作模式

在大型软件项目中,按代码模块划分修复责任能显著提升协作效率。每个模块由特定团队或开发者负责,确保问题修复的专业性与响应速度。
责任归属清晰化
通过维护模块负责人映射表,明确各目录或服务的责任人:
模块路径负责人联系方式
/service/user张伟zhangwei@company.com
/service/order李娜lina@company.com
自动化分派机制
结合 CI/CD 流程,使用脚本自动识别变更模块并分配任务:
// 根据文件路径匹配负责人
func assignOwner(filePath string) string {
    if strings.Contains(filePath, "user") {
        return "zhangwei"
    } else if strings.Contains(filePath, "order") {
        return "lina"
    }
    return "default-team"
}
该函数在检测到代码变更时触发,解析修改的文件路径,自动指派对应负责人,减少人工干预,提高缺陷响应效率。

4.3 自动化抑制已知问题与防止新增技术债务

在持续交付流程中,自动化是控制技术债务的核心手段。通过识别重复出现的缺陷模式,可建立规则库自动拦截同类问题。
静态分析规则配置示例

rules:
  - id: avoid-hardcoded-urls
    message: "Hardcoded URL detected, use configuration instead"
    pattern: "https?://[a-zA-Z0-9.-]+"
    severity: error
    exclude_files:
      - "*.test.js"
该规则使用正则匹配硬编码URL,防止环境耦合。排除测试文件避免误报,提升规则实用性。
技术债务看板追踪机制
问题类型触发频率自动处理
空指针引用12次/周标记+告警
循环依赖5次/周阻断合并
结合CI流水线,高发问题可被自动分类并抑制,确保新代码不重蹈覆辙。

4.4 构建质量门禁实现“零新增警告”承诺

在持续交付流程中,代码质量门禁是保障技术债可控的核心防线。通过在CI/CD流水线中嵌入静态分析工具,可拦截带有潜在缺陷的代码合入,确保每次提交均满足“零新增警告”标准。
静态分析集成示例
以SonarQube为例,在Maven项目中引入插件配置:

<plugin>
  <groupId>org.sonarsource.scanner.maven</groupId>
  <artifactId>sonar-maven-plugin</artifactId>
  <version>3.9.1</version>
</plugin>
该配置启用SonarScanner,在构建时自动分析代码异味、重复率及单元测试覆盖率。关键参数sonar.qualitygate.wait=true确保构建会阻塞直至质量门禁通过。
门禁策略分级
  • 一级:编译错误与安全漏洞,禁止合入
  • 二级:代码异味与重复率超标,触发告警但可豁免
  • 三级:注释缺失与命名规范,仅记录不阻断
通过策略分级与自动化拦截,团队可在保障交付速度的同时,兑现“零新增警告”的工程承诺。

第五章:从工具集成到工程文化的演进

在现代软件交付体系中,CI/CD 工具链的整合只是起点。真正的挑战在于如何将这些技术实践沉淀为团队共识,最终形成可持续演进的工程文化。
自动化不是终点
许多团队在实现 Jenkins 或 GitHub Actions 自动化构建后便止步不前。然而,若缺乏代码审查规范、测试覆盖率要求和部署纪律,自动化反而会加速问题扩散。某金融科技团队曾因跳过集成测试阶段,导致自动化流水线频繁发布存在内存泄漏的服务实例。
建立质量门禁机制
通过在 CI 流程中嵌入质量检查点,可有效提升交付标准。以下是一个典型的 Go 项目流水线片段:

- name: Run Tests
  run: go test -v ./... -coverprofile=coverage.out

- name: Check Coverage
  run: |
    go tool cover -func=coverage.out | \
    awk 'NF {line=$NF} END {if(line < 80) exit 1}'
该脚本确保单元测试覆盖率不低于 80%,否则中断流程。
推动协作模式变革
成功的工程文化依赖透明与协作。某电商平台采用如下实践:
  • 每日早会同步 CI 失败任务负责人
  • 每月发布“稳定性排行榜”,表彰低故障率服务团队
  • 新成员必须通过内部 DevOps 认证方可合入主干
指标实施前实施一年后
平均恢复时间 (MTTR)47分钟8分钟
部署频率每周2次每日12次
流程图:需求提交 → 自动化测试 → 安全扫描 → 准生产验证 → 生产发布 → 监控反馈 → 团队复盘
精通Clang-Tidy:从配置到自定义检查规则的实战指南 本文详细介绍了如何从基础配置到自定义检查规则全面掌握Clang-Tidy工具。通过实战案例和优化技巧,帮助C++开发者高效使用Clang-Tidy进行静态代码分析,提升代码质量并减少评审工作量。内容涵盖安装配置、规则定制、CI集成及性能优化等核心知识点。 阅读详情

相关推荐

VScode在Ubuntu上开发C/C++必备插件清单:告别红色波浪线困扰

本文提供了一份详尽的VSCode插件清单与配置指南,旨在帮助Ubuntu开发者彻底解决C/C++开发中的红色波浪线困扰。文章从分析问题根源入手,深入讲解了编译工具链配置、核心插件生态、构建系统集成以及调试与效率工具,助你打造一个稳定、高效且智能的Linux开发环境。

weixin_28475533的博客 154

CICD中clang-tidy静态语义检查

要用clang-tidy首先要在电脑上安装clang-tools Linux Ubuntu系统 sudo apt install clang-tools 装好后就可以看到clang-tidy以及其它相关工具了。 在你需要检查的文件夹下建立文件.clang-tidy和.clang-format 在.clang-tidy中 { Checks: "-*,bugprone-*,cert-*,clang-analyzer-*,cppcoreguidelines-avoid-goto,cppcoreguide

weixin_43360707的博客 5003

Clang-tidy 插件开发

在目录下,执行所属类别 check名字,例如例如,我希望在​objc分类中添加一个能够检测所有超过二级的指针声明,名为custom-check,那么我就在此目录下执行 ./add_new_check.py objc custom-check,就可以看到在objc目录下,自动生成了CustomCheck.h/cpp两个文件并填充了check的默认模板,我们只需要修改这两个文件,然后重复上文所述的编译过程,就可以用到自己的check啦。

田一一 930

C内存安全不是选配!2026强制合规元年:3分钟生成符合MISRA C:2023+CERT C+ASLR+CFI四重校验的cmake配置模板

3分钟生成合规CMake模板,解决2026强制内存安全落地难题。面向嵌入式与系统级开发,集成MISRA C:2023、CERT C、ASLR与CFI四重校验机制,详解现代C语言内存安全编码规范2026配置步骤详解。自动化检测+编译时防护,显著降低UAF/溢出风险,值得收藏。

BreakVein的博客 415

clang-tidy 使用指南

clang-tidy 需要一个编译数据库来了解如何编译你的代码。编译数据库通常是一个名为 compile_commands.json 的文件。在这个示例中,clang-tidy 会对 test.cpp 文件进行分析,并报告任何潜在的问题。例如,它可能会警告 test 函数中的未使用变量 x。clang-tidy 是一个用于 C++ 代码的静态分析工具,可以帮助你发现代码中的潜在问题和改进点。这将在 build 目录中生成一个 compile_commands.json 文件。

weixin_42244181的博客 2362

clang-tidy-review:基于clang-tidy警告创建拉取请求评论

Clang-Tidy评论 根据clang-tidy的警告创建请求请求审核。 受clang-tidy-diff启发,Clang-Tidy Review仅对pull请求中的更改运行。 这使它变得既好又快速,并且对于尚不完全干净的项目很有用。 返回注释数,因此您可以决定警告是作为建议还是检查失败。 不会通过对同一行重复相同的警告来发送垃圾邮件。 可以使用compile_commands.json ,因此您可以选择如何按自己的compile_commands.json配置构建。 用法示例: name : clang-tidy-review # You can be more specific, but it currently only works on pull requests on : [pull_request] jobs : build : runs-on : ubuntu-latest steps : - uses : actions/checkout@v2 - uses : ZedThree/clang-tidy-review@v0

面向 C++ 的现代 CMake 教程(四)

你会在研究代码上花费的时间比在编写代码上多——因此,你应该优化阅读而不是编写。这句话在讨论整洁代码实践的书中被像咒语一样重复。难怪,因为这是非常正确的,很多软件开发者已经在实践中证明了这一点——以至于连像空格数、换行符以及#import声明的顺序这样的微小事情都有了规定。这并不是出于小气,而是为了节省时间。遵循本章概述的实践,我们无需担心手动格式化代码。它将自动在构建过程中作为副作用进行格式化——这是我们无论如何都必须执行的步骤,以检查代码是否正确运行。

龙哥盟 1188

vscode-clang-tidy

VSCode的Clang-Tidy 此扩展将集成到VS Code中。 特征 运行clang-tidy并在VS Code中显示其诊断信息。 注意:与在示例gif中相比,诊断花费的时间更长。 要求 必须安装Clang-Tidy。 默认情况下,扩展名将在PATH查找clang-tidy可执行文件。 Clang-Tidy是LLVM的一部分,可以在 或者,使用系统的程序包管理器。 扩展设置 此扩展程序提供以下设置: clang-tidy.executable :clang-tidy可执行文件的路径 clang-tidy.checks :要启用或禁用的检查列表 clang-tidy.compilerArgs :要附加到编译器命令行的参数列表 clang-tidy.compilerArgsBefore :要clang-tidy.compilerArgsBefore到编译器命令行的参数列表 cla

Clang 编译器前端(一)

低级虚拟机LLVM)是一组模块化和可重用的编译器和工具链技术,用于开发编译器和编译工具,如代码检查器和重构工具。LLVM 用 C++ 编写,可以被认为是使用有趣技术使其可重用和高效的优秀项目示例。该项目也可以被认为是编译器架构的优秀示例;深入了解它将让你了解编译器是如何组织和工作的。这应该有助于理解使用模式并相应地应用它们。LLVM 的一个关键组件是名为 Clang 的 C/C++ 编译器。这个编译器在各种公司中被广泛使用,并被指定为某些开发环境的默认编译器,特别是在 macOS 开发中。

龙哥盟 1232

FPGA赋能:从加权灰度均值到快速收敛的自动曝光实战

本文深入探讨了FPGA在工业视觉自动曝光算法中的应用,重点介绍了加权灰度均值法的优化实现与快速收敛策略。通过硬件友好的算法改造和流水线架构设计,FPGA方案能在1帧内完成曝光调整,显著提升处理速度和能效比,适用于复杂光照条件下的工业检测场景。

weixin_29306317的博客 82

[pytorch] MedicalNet 3D Resnet预训练模型迁移学习实战:从分割到分类的代码改造

本文详细介绍了如何利用PyTorch对MedicalNet 3D ResNet预训练模型进行迁移学习,从分割任务改造为分类任务。通过解析模型结构、调整分类头、加载预训练权重及优化训练策略,帮助开发者在医疗影像领域快速实现高效模型部署。文章还涵盖了数据预处理、增强技巧及模型轻量化等实用内容。

kmeans3miner的博客 246

clang-tidy 使用

1. 安装clang-tidy和clang编译工具 sudo apt install clang-tidy clang(ubuntu 16.04默认安装的是3.8版本) sudo apt install clang-tidy-6.0 clang-6.0(ubuntu 16.04 apt最高可安装6.0版本) 多版本可使用update-alternatives来管理 2. 简单使用 查看所有可...

xiaoou的博客 1万+

Zynq裸机调试RTL8211FS网卡踩坑记:从ping不通到完美兼容的完整代码修改

本文详细记录了在Zynq平台上使用Xilinx SDK(XSDK)调试RTL8211FS网卡的完整过程,从最初的ping不通问题到最终实现完美兼容的解决方案。通过分析PHY芯片的寄存器配置差异,提供了关键代码修改和调试技巧,帮助开发者快速解决类似问题。

weixin_42550597的博客 421

【Clang 17与C++26深度调试指南】:掌握未来C++开发的10大关键特性

掌握Clang 17 C++26特性调试技巧,高效构建现代C++应用。本文深入解析模块化、协程、模式匹配等10大新特性在Clang 17中的实现与调试方法,覆盖编译优化、错误定位与跨平台适配场景,提升开发效率与代码稳定性,值得收藏。

LearnFlow的博客 437

开源人形机器人硬件生态:关键技术、产业链与低成本突破 | OpenLoong 社区线下分享会

本文将深入探讨人形机器人硬件平台的关键技术、产业链与核心部件以及降低成本的策略。从硬件平台的核心技术,到机器人核心零部件的详细介绍,再到产业链各环节的协同发展以及实现低成本化的创新思路,将一同剖析人形机器人迈向广泛应用所面临的挑战与机遇,展望其未来的发展趋势,为开发者和相关从业者提供一些参考与启示。

OpenLoong_的博客 2420

14.建立时间、保持时间以及vivado时序report的参考使用

在设计数字系统时,需要仔细考虑电路元件的选择和布局以及时序设计来满足建立时间和保持时间的要求。建立时间,又称为建立时间窗口或建立期,是指数字信号在触发器的时钟信号前沿到来之前,必须已经稳定存在的时间。在本章节将结婚扫建立时间和保持时间的基本原理,以及如何通过vivado处理建立时间和保持时间。通过使用同步电路,可以更好地控制数据传输的时序并满足建立时间和保持时间的要求。例如,在D触发器中,选择具有适当充电和放电特性的D端口元件可以确保在时钟信号前沿到达前数据已经稳定存在,并在时钟信号前沿到达后保持稳定。

FPGA/MATLAB学习教程/源码/项目合作开发 2986

终极指南:DeepEP静态分析与Clang-Tidy实战优化

在高性能计算(High-Performance Computing, HPC)领域,DeepEP作为专家并行通信库,其代码质量直接影响分布式系统的稳定性与效率。随着GPU架构(如NVIDIA Hopper)和异构计算的发展,传统的动态测试已难以覆盖所有边缘场景。Clang-Tidy(Clang静态分析工具)通过编译期检查,能够在代码运行前发现潜在风险,尤其适合DeepEP中复杂的CUDA核函数与多...

gitblog_01108的博客 1022

手把手教你学PCIE-- 热插拔电路设计与实现方案

PCIe热插拔(Hot-Plug)技术允许用户在系统运行时安全地插入或移除设备,而无需重启系统。本文将深入讲解热插拔电路的设计要点、关键器件选型及信号协议规范,涵盖机械结构、电气保护和电源管理三大核心模块。​。

MHD0815的博客 440

【C语言内存泄漏检测终极指南】:Clang静态分析工具实战全解析

掌握C语言内存泄漏的Clang静态检测方法,快速定位并修复内存问题。适用于嵌入式开发、系统编程等场景,基于Clang Static Analyzer实现精准分析,无需运行程序即可发现潜在泄漏点。支持自动化集成,提升代码质量,值得收藏。

QuickTrans的博客 1132

玩转Docker小游戏项目系列: Docker部署红心纸牌网页小游戏

玩转Docker小游戏项目系列: Docker部署红心纸牌网页小游戏

jks212454的博客 420

8.5华为OD机试真题 新系统 - 最长不连续子串 (Java/Py/C/C++/Js/Go)

8.5华为OD机试真题 新系统 - 最长不连续子串 (Java/Py/C/C++/Js/Go)

算法大师! 627

ubuntu14.04下源码编译cmake-3.9.2(分色排版)

ubuntu14.04下源码编译cmake-3.9.2 2017/9/14 17:25 版本:V1.0     步骤: rootroot@rootroot-E400:~$ cd wyb/ rootroot@rootroot-E400:~/wyb$ rootroot@rootroot-E400:~/wyb$ tar zxvf cmake-3.9.2.tar.gz  rootroot

南岭笑笑生之家 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【资深架构师亲授】:Cppcheck 2.14与Clang-Tidy选型避坑指南,错过等于降效30%

掌握C++静态分析工具选型关键,提升代码质量与开发效率。本文深入对比Cppcheck 2.14与Clang-Tidy的适用场景、检测能力与集成方案,解析各自在项目规模、编译依赖和规则灵活性上的优势差异,助力团队精准决策。值得收藏

CompiTide的博客 888

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Aarch64(arm64)下编译QT5.15.5(xcb、webengine)+QTCreator4.13.3

由于项目需要,在需要 鲲鹏处理器+银河麒麟v10服务器系统 下编译Qt,现记录以下编译流程。 qt依赖环境配置 X11、xcb环境配置 qt5.15.5编译 qtcreator4.13.3编译

u013047941的博客 1万+

ubuntu vscode 使用clang-format and editor 插件序列化代码

在使用vscode时, 可以加入插件,在写代码的时候自动格式化代码,对编码风格做一个自动化的处理,这样会使同一个部门使用同一种规格编码,在review代码时会很轻松。 这里使用一键化的shell脚本, 注意:以下三个文件需要在同一个目录下执行, 实际行为就是把.clang-format 和.editorconfig两个配置脚本放置到“~/”下。 code_format_vscode.sh : ...

人面不知何处去 2797

cmake学习总结

文章目录一、cmake相关概念cmake的出现背景---独立于特定平台编译工具需求,KDE4项目的推动cmake的定义---一个开源 跨平台 的 软件编译构建 工具二、cmake的安装使用三、cmake编译规则介绍基本编译流程---编译/安装/清理基本语法规则静态库与动态库构建【语法】变量的定义与引用【语法】常用编译指令:基本指令,查找指令,安装指令,控制指令【语法】主要编译选项开关四、cmake编译实战举例---helloword用例参考 一、cmake相关概念 cmake的出现背景—独立于特定平台编译工

runafterhit的博客 679
上一篇: 揭秘RISC-V自定义指令设计:如何用C语言实现AI推理性能翻倍
下一篇: 为什么你的C程序在RISC-V上跑不起来?深入解析工具链配置失败根源
varchat
博客等级 码龄11年 159粉丝 1993原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值