本文へ移動
cccskills
無料GitHub で公開

cpp-style

C++ naming, formatting, static analysis, and RTTI rules for LuisaCompute.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md4.3 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Naming

  • Classes / structs / enums: CamelCase (MyClass, RenderPipeline)
  • Functions & public vars: snake_case (get_value, process_data)
  • Private/protected members & functions: _snake_case (_private_var, _internal_helper())
  • Constants: kCamelCase or UPPER_SNAKE_CASE for macros
  • Template params: CamelCase
  • Namespaces: luisa, luisa::compute, vstd, etc. Keep compact.

Syntax Check

Use the project C++ syntax checker:

python scripts/check_cpp_syntax.py <file>.cpp

It runs clangd with the project's compile_commands.json and .clang-tidy. Skip files not in compile_commands.json.

Formatting

Format with the project .clang-format (bundled in this skill; the project root copy is authoritative).

Base: LLVM style. Key overrides:

  • Indent: 4 spaces, no tabs. Continuation indent 4. Case labels indented. Preprocessor indent 2.
  • Braces: K&R (attach). No break before braces. Indent braces off.
  • Line width: unlimited (ColumnLimit: 0).
  • Pointers/refs: right-aligned (int *p, int &r).
  • Access modifiers: indent offset -4 (flush with class). Empty lines before/after left as-is.
  • Short constructs: allow single-line for short blocks, functions, ifs, loops, lambdas, enums, case labels.
  • Constructor init: not forced one-per-line; no break before comma.
  • Templates / concepts: break declarations only when multiline; indent requires clause.
  • Spaces: before =, ctor-initializer :, inheritance :, range-for :. No space after C-style casts, !, template keyword, before braced lists. No space in empty parens or before trailing comments.
  • Alignment: after open brackets & operands; don't align consecutive assignments.
  • Includes/using: never auto-sort.
  • Namespaces: compact single-line when short; no indentation inside (ShortNamespaceLines: 0).
  • Strings/comments: break string literals; don't reflow comments.
  • Macros: control-flow-like ($if, $elif, $else, $for, $while, $loop, $switch, $case, $default) get space before (. Function-like macros don't. Special lists:
    • ForEachMacros: LUISA_STRUCT, LUISA_BINDING_GROUP, LUISA_BINDING_GROUP_TEMPLATE
    • IfMacros: $if, $elif, $else, $for, $while, $loop, $switch, $case, $default
    • StatementMacros: LUISA_MAP

Static Analysis

Run .clang-tidy (bundled in this skill; the project root copy is authoritative).

All checks disabled (-*), then enabled by category:

  • bugprone-*
  • cert-*
  • cppcoreguidelines-*
  • google-* (default-arguments, explicit-constructor, runtime-operator)
  • hicpp-*
  • misc-*
  • modernize-*
  • mpi-, openmp-
  • performance-*
  • portability-*
  • readability-*

See the bundled .clang-tidy for the exact check list.

No RTTI

RTTI is disabled for project code. Do not use:

  • dynamic_cast — use static_cast when type is known
  • typeid
  • std::type_info

Prefer virtual dispatch or explicit type tags for type-safe downcasting. Third-party code under src/ext is exempt.

Integer Types

Prefer fixed-width integer types:

  • Use: int32_t, uint32_t, int64_t, uint64_t, int16_t, uint16_t, int8_t, uint8_t
  • size_t is acceptable for sizes/indices per STL convention.
  • Prefer std::byte for raw byte data.
  • Avoid unsigned int, long long, unsigned long, short, and char for arithmetic. Some platform/system headers may define aliases such as uint; avoid introducing new uses in project code.

Verification

After editing C++ files:

# Check syntax / tidy diagnostics
python scripts/check_cpp_syntax.py src/foo.cpp

# Check formatting (dry run; replace --dry-run with -i to apply)
clang-format --dry-run --Werror src/foo.cpp

# Run clang-tidy on a specific file
clang-tidy -p build src/foo.cpp

When changing build-affecting files, configure and build a relevant target:

xmake f -m debug -c
xmake build <target>

Resources

  • .clang-format — bundled copy of the project formatter config.
  • .clang-tidy — bundled copy of the project static-analysis config.
  • .clangd — project root configuration for clangd diagnostics (not bundled; see project root).

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

ast

無料

Manual AST construction with FunctionBuilder for kernels and callables without DSL sugar.

日本語の概要は準備中です。原文の説明を表示しています。

LuisaGroup/LuisaCompute1,0532026年10月10日 更新

Backend plugin architecture, DeviceInterface, dynamic loading, and command encoding.

日本語の概要は準備中です。原文の説明を表示しています。

LuisaGroup/LuisaCompute1,0532026年10月10日 更新

cmake

無料

CMake build options, custom functions, and backend patterns for LuisaCompute.

日本語の概要は準備中です。原文の説明を表示しています。

LuisaGroup/LuisaCompute1,0532026年10月10日 更新

debug

無料

Debug crashes and test failures via stack-traces, host/device logging, and DSL buffer inspection.

日本語の概要は準備中です。原文の説明を表示しています。

LuisaGroup/LuisaCompute1,0532026年10月10日 更新

git

無料

Show uncommitted changes and commit history via git. Use when: (1) inspecting what changed in a file before committing, (2) checking diff of tracked/new/deleted files, (3) reviewing a specific commit's changes, (4) listing files changed in a commit.

日本語の概要は準備中です。原文の説明を表示しています。

LuisaGroup/LuisaCompute1,0532026年10月10日 更新

glslang

無料

glslang SPIR-V Builder API for types, instructions, control flow, and decorations.

日本語の概要は準備中です。原文の説明を表示しています。

LuisaGroup/LuisaCompute1,0532026年10月10日 更新

LuisaGroup のスキルをすべて見る

このスキルの問題を報告する