diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml
index 9dfb07d3c7c..0e348c8f1eb 100644
--- a/.azure-pipelines.yml
+++ b/.azure-pipelines.yml
@@ -67,16 +67,6 @@ stages:
                   :^doc/ :^arch/arm/dts/ :^scripts/kconfig/lkc.h
                   :^include/linux/kconfig.h :^tools/ && exit 1 || exit 0
 
-  - job: cppcheck
-    displayName: 'Static code analysis with cppcheck'
-    pool:
-      vmImage: $(ubuntu_vm)
-    container:
-      image: $(ci_runner_image)
-      options: $(container_option)
-    steps:
-      - script: cppcheck -j$(nproc) --force --quiet --inline-suppr .
-
   - job: docs
     displayName: 'Build documentation'
     pool:
@@ -92,28 +82,6 @@ stages:
           make htmldocs KDOC_WERROR=1
           make infodocs
 
-  - job: todo
-    displayName: 'Search for TODO within source tree'
-    pool:
-      vmImage: $(ubuntu_vm)
-    container:
-      image: $(ci_runner_image)
-      options: $(container_option)
-    steps:
-      - script: grep -r TODO .
-      - script: grep -r FIXME .
-      - script: grep -r HACK . | grep -v HACKKIT
-
-  - job: sloccount
-    displayName: 'Some statistics about the code base'
-    pool:
-      vmImage: $(ubuntu_vm)
-    container:
-      image: $(ci_runner_image)
-      options: $(container_option)
-    steps:
-      - script: sloccount .
-
   - job: maintainers
     displayName: 'Ensure all configs have MAINTAINERS entries'
     pool:
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 51553a1660e..8171c1d619b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -151,22 +151,6 @@ check for new CONFIG symbols outside Kconfig:
         :^doc/ :^arch/arm/dts/ :^scripts/kconfig/lkc.h
         :^include/linux/kconfig.h :^tools/ && exit 1 || exit 0
 
-# QA jobs for code analytics
-# static code analysis with cppcheck (we can add --enable=all later)
-cppcheck:
-  stage: testsuites
-  script:
-    - cppcheck -j$(nproc) --force --quiet --inline-suppr .
-
-# search for TODO within source tree
-grep TODO/FIXME/HACK:
-  stage: testsuites
-  script:
-    - grep -r TODO .
-    - grep -r FIXME .
-    # search for HACK within source tree and ignore HACKKIT board
-    - grep -r HACK . | grep -v HACKKIT
-
 # build documentation
 docs:
   stage: testsuites
@@ -177,12 +161,6 @@ docs:
     - make htmldocs KDOC_WERROR=1
     - make infodocs
 
-# some statistics about the code base
-sloccount:
-  stage: testsuites
-  script:
-    - sloccount .
-
 # ensure all configs have MAINTAINERS entries
 Check for configs without MAINTAINERS entry:
   stage: testsuites
diff --git a/tools/docker/Dockerfile b/tools/docker/Dockerfile
index 279b3a3504c..1acb5413c7e 100644
--- a/tools/docker/Dockerfile
+++ b/tools/docker/Dockerfile
@@ -43,7 +43,6 @@ RUN apt-get update && apt-get install -y \
 	clang-16 \
 	coreutils \
 	cpio \
-	cppcheck \
 	curl \
 	device-tree-compiler \
 	dosfstools \
@@ -105,7 +104,6 @@ RUN apt-get update && apt-get install -y \
 	python3-virtualenv \
 	rpm2cpio \
 	sbsigntool \
-	sloccount \
 	socat \
 	softhsm2 \
 	sparse \