diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 9da6428114..486a229c26 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -55,9 +55,6 @@ variables:
V: "0"
CHECKOUT_REF_SCRIPT: "$CI_PROJECT_DIR/tools/ci/checkout_project_ref.py"
- CLANG_TIDY_RUNNER_PROJ: 2107 # idf/clang-tidy-runner
- IDF_BUILD_APPS_PROJ: 2818 # espressif/idf-build-apps
-
# Docker images
BOT_DOCKER_IMAGE_TAG: ":latest"
diff --git a/.gitlab/ci/static-code-analysis.yml b/.gitlab/ci/static-code-analysis.yml
index 55ee95cf3e..9d1ea90c80 100644
--- a/.gitlab/ci/static-code-analysis.yml
+++ b/.gitlab/ci/static-code-analysis.yml
@@ -6,20 +6,15 @@ clang_tidy_check:
image: ${CLANG_STATIC_ANALYSIS_IMAGE}
artifacts:
paths:
- - $OUTPUT_DIR
+ - clang_tidy_reports/
when: always
expire_in: 1 day
variables:
- CLANG_TIDY_DIRS_TXT: ${CI_PROJECT_DIR}/tools/ci/clang_tidy_dirs.txt
- RULES_FILE: ${CI_PROJECT_DIR}/tools/ci/static-analysis-rules.yml
- OUTPUT_DIR: ${CI_PROJECT_DIR}/clang_tidy_reports
+ IDF_TOOLCHAIN: clang
script:
- - internal_pip_install $CLANG_TIDY_RUNNER_PROJ pyclang
- - export PATH=$PATH:$(python -c "import sys; print(sys.executable.rsplit('/', 1)[0])")
- - dirs=$(cat ${CLANG_TIDY_DIRS_TXT} | while read line; do echo ${CI_PROJECT_DIR}/${line}; done | xargs)
- - run_cmd idf_clang ${dirs}
- --output-path ${OUTPUT_DIR}
- --limit-file ${RULES_FILE}
+ - run_cmd idf_clang_tidy $(cat tools/ci/clang_tidy_dirs.txt | xargs)
+ --output-path clang_tidy_reports
+ --limit-file tools/ci/static-analysis-rules.yml
--xtensa-include-dir
--run-clang-tidy-py ${RUN_CLANG_TIDY_PY}
diff --git a/docs/en/api-guides/tools/idf-clang-tidy.rst b/docs/en/api-guides/tools/idf-clang-tidy.rst
index 009e4769e1..c02f82a822 100644
--- a/docs/en/api-guides/tools/idf-clang-tidy.rst
+++ b/docs/en/api-guides/tools/idf-clang-tidy.rst
@@ -11,7 +11,7 @@ The IDF Clang Tidy is a tool that uses `clang-tidy `__ 对当前应用程序进行静态分析的工具。
+
+.. warning::
+
+ IDF clang-tidy 的功能及其依赖的工具链尚在开发中,最终版本发布前可能有重大变更。
+
+.. only:: CONFIG_IDF_TARGET_ARCH_RISCV
+
+ .. warning::
+
+ 当前工具尚不支持基于 RISC-V 的芯片。目前,乐鑫尚未针对 RISC-V 提供基于 clang 的工具链。
+
+准备工作
+=============
+
+初次运行此工具时,请按照以下步骤准备该工具:
+
+#. 运行 ``idf_tools.py install esp-clang`` 安装 clang-tidy 所需的二进制文件。
+
+ .. note::
+
+ 该工具链尚在开发中,最终版本发布后,将无需手动安装工具链。
+
+#. 再次运行导出脚本(如 ``export.sh``、``export.bat`` 等),刷新环境变量。
+
+其他命令
+==============
+
+``clang-check``
+---------------
+
+运行 ``idf.py clang-check`` 可以重新生成编译数据库,并在当前项目文件夹下运行 ``clang-tidy``,所得输出写入 ``/warnings.txt``。
+
+运行 ``idf.py clang-check --help`` 查看完整文档。
+
+``clang-html-report``
+---------------------
+
+#. 运行 ``pip install codereport`` 安装附加依赖关系。
+#. 运行 ``idf.py clang-html-report`` 会根据 ``warnings.txt`` 在 ``/html_report`` 文件夹内生成 HTML 报告。请在浏览器中打开 ``/html_report/index.html`` 查看报告。
+
+错误报告
+==========
+
+此工具托管在 `espressif/clang-tidy-runner `__。如遇到任何错误,或有任何功能请求,请通过 `Github issues `__ 提交报告。
diff --git a/tools/ci/utils.sh b/tools/ci/utils.sh
index 719d68adf9..f860fef110 100644
--- a/tools/ci/utils.sh
+++ b/tools/ci/utils.sh
@@ -117,16 +117,6 @@ function retry_failed() {
return $exitCode
}
-function internal_pip_install() {
- project=$1
- package=$2
- token_name=${3:-${BOT_TOKEN_NAME}}
- token=${4:-${BOT_TOKEN}}
- python=${5:-python}
-
- $python -m pip install --index-url https://${token_name}:${token}@${GITLAB_HTTPS_HOST}/api/v4/projects/${project}/packages/pypi/simple --force-reinstall --no-deps ${package}
-}
-
function join_by {
local d=${1-} f=${2-}
if shift 2; then
diff --git a/tools/requirements/requirements.core.txt b/tools/requirements/requirements.core.txt
index 7379dad191..5c338899fd 100644
--- a/tools/requirements/requirements.core.txt
+++ b/tools/requirements/requirements.core.txt
@@ -14,6 +14,7 @@ idf-component-manager
esp-coredump
esptool
construct
+pyclang
# kconfig and menuconfig dependencies
kconfiglib