diff --git a/.clang-format b/.clang-format
new file mode 100644
index 0000000000000000000000000000000000000000..9b3aa8b7213b2d3b534a08907a44773b4f9c1f1a
--- /dev/null
+++ b/.clang-format
@@ -0,0 +1 @@
+BasedOnStyle: LLVM
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3b2dbfcde05f8bc46f7f6e5e3f9e3fc33cc12fed..42542453a43c5c00c89521be9fffc6063e3e16fd 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -15,6 +15,7 @@
 
 stages:
     - images
+    - analyze
     - build
 
 .build-image: &build-image
@@ -50,6 +51,18 @@ build-image-docu:
         IMAGE_NAME: "docu"
     <<: *build-image
 
+check-code-format:
+    stage: analyze
+    image: $CI_REGISTRY_IMAGE/dev:$CI_COMMIT_REF_SLUG
+    script:
+        - >
+            find . \
+                -name "*.h" -print0 \
+                -o \
+                -name "*.cc" -print0 | \
+            xargs -0 -I {} -P $(nproc) \
+                bash -c 'diff <(cat {}) <(clang-format {})'
+
 build-library:
     stage: build
     image: $CI_REGISTRY_IMAGE/dev:$CI_COMMIT_REF_SLUG
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 02ac3bc40e7479101b401f299f1366809af75cc0..f37845ea3967a95749fd96b52a854e359e3c667d 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -18,6 +18,7 @@ ARG DEBIAN_FRONTEND=noninteractive
 
 FROM $BASE_IMAGE
 
+RUN apt-get update && apt-get install -y clang-format
 RUN apt-get update && apt-get install -y cmake
 RUN apt-get update && apt-get install -y g++
 RUN apt-get update && apt-get install -y googletest