diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f4d5fb44ba448e79d489e891b871d78860ec6ec3..27e481199bdc6a2e755989bc612b9b6a203adc5a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -11,8 +11,9 @@ build_and_tests:stable:
   stage: build_and_tests
   tags:
     - redshift-rs-stable
-  script:
-    - cargo test --all-features
+  script: 
+    - cargo build --features strict
+    - cargo test --all
     
 build_and_tests:beta:
   stage: build_and_tests
@@ -20,7 +21,8 @@ build_and_tests:beta:
     - redshift-rs-beta
   script:
     - rustup update
-    - cargo test --all-features
+    - cargo build --features strict
+    - cargo test --all
   when: manual
   allow_failure: true
     
@@ -30,7 +32,8 @@ build_and_tests:nightly:
   tags:
     - redshift-rs-nightly
   script:
-    - cargo test --all-features
+    - cargo build --features strict
+    - cargo test --all
   when: manual
   allow_failure: true
   
diff --git a/Cargo.toml b/Cargo.toml
index dfae0a055c1d69c3f5c00e1a271c8c874490e58f..4f26b8dcec354f666bee4ad07f156ae913af3714 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -14,6 +14,10 @@ lazy_static = "1.0.0"
 serde_json = "1.0.9"
 websocket = "0.20.2"
 
+[features]
+# Treat warnings as a build error.
+strict = []
+
 [workspace]
 members = [
     "blockchain",
diff --git a/conf/Cargo.toml b/conf/Cargo.toml
index 681eccd40c2987be1246b3c99f09894116cd37c5..433ccf6dd0c3e14b17ba95a83574c6a45fb612de 100644
--- a/conf/Cargo.toml
+++ b/conf/Cargo.toml
@@ -14,4 +14,8 @@ serde = "1.0.24"
 serde_derive = "1.0.24"
 serde_json = "1.0.9"
 duniter-crypto = { path = "../crypto" }
-duniter-module = { path = "../module" }
\ No newline at end of file
+duniter-module = { path = "../module" }
+
+[features]
+# Treat warnings as a build error.
+strict = []
\ No newline at end of file
diff --git a/conf/lib.rs b/conf/lib.rs
index 482946a32899753e710460d055b7a676b09adf9a..bf9418935d82573c95b1e01eee48b32a81e5eece 100644
--- a/conf/lib.rs
+++ b/conf/lib.rs
@@ -354,7 +354,6 @@ pub fn get_wot_path(profile: String, currency: &Currency) -> PathBuf {
 #[cfg(test)]
 mod tests {
     use super::*;
-    use duniter_module::ModuleId;
 
     #[test]
     fn load_conf_file() {
diff --git a/core/Cargo.toml b/core/Cargo.toml
index c25218b553fd9301210afd1f1b7beef4ba7b201d..d2a02d380ed74b4606c89ade69283da5c741b9b4 100644
--- a/core/Cargo.toml
+++ b/core/Cargo.toml
@@ -25,4 +25,8 @@ serde_derive = "1.0.24"
 serde_json = "1.0.9"
 simplelog = "0.5.1"
 sqlite = "0.23.9"
-threadpool = "1.7.1"
\ No newline at end of file
+threadpool = "1.7.1"
+
+[features]
+# Treat warnings as a build error.
+strict = []
\ No newline at end of file
diff --git a/dal/Cargo.toml b/dal/Cargo.toml
index a3ecdaa1528d5fe2d814221abafe3abf69e91eb7..a7a36783342acec4de9056629244e6a5712599bb 100644
--- a/dal/Cargo.toml
+++ b/dal/Cargo.toml
@@ -26,4 +26,6 @@ serde_json = "1.0.9"
 websocket = "0.20.2"
 
 [features]
-exp = []
\ No newline at end of file
+exp = []
+# Treat warnings as a build error.
+strict = []
\ No newline at end of file
diff --git a/message/Cargo.toml b/message/Cargo.toml
index 651db081ffc014c98cf4872000c37506a5ab4dac..eb558403f94cc1389f09b552ba2ff9b04dfc36c8 100644
--- a/message/Cargo.toml
+++ b/message/Cargo.toml
@@ -16,4 +16,8 @@ duniter-module = { path = "../module" }
 duniter-network = { path = "../network" }
 serde = "1.0.24"
 serde_derive = "1.0.24"
-serde_json = "1.0.9"
\ No newline at end of file
+serde_json = "1.0.9"
+
+[features]
+# Treat warnings as a build error.
+strict = []
\ No newline at end of file
diff --git a/module/Cargo.toml b/module/Cargo.toml
index 8646dbde57c26ded3d9247e57e668536c9353ca5..bfc08e52a41fa92145972b86a5c87fddcc2a3151 100644
--- a/module/Cargo.toml
+++ b/module/Cargo.toml
@@ -13,4 +13,8 @@ duniter-crypto = { path = "../crypto" }
 duniter-documents = { path = "../documents" }
 serde = "1.0.24"
 serde_derive = "1.0.24"
-serde_json = "1.0.9"
\ No newline at end of file
+serde_json = "1.0.9"
+
+[features]
+# Treat warnings as a build error.
+strict = []
\ No newline at end of file
diff --git a/network/Cargo.toml b/network/Cargo.toml
index 15c8ac50e1bf844ad486dceb5bd93c463007c041..ab7bd3aca3cb068cc4c3c9de0682521334e86598 100644
--- a/network/Cargo.toml
+++ b/network/Cargo.toml
@@ -17,4 +17,8 @@ regex = "0.2.6"
 rust-crypto = "0.2.36"
 serde = "1.0.24"
 serde_derive = "1.0.24"
-serde_json = "1.0.9"
\ No newline at end of file
+serde_json = "1.0.9"
+
+[features]
+# Treat warnings as a build error.
+strict = []
\ No newline at end of file
diff --git a/tui/Cargo.toml b/tui/Cargo.toml
index 28195a29c3ac1c54e714069b3115c123eb525704..d415aca56b67ea5b443aae5bb9bfd35e04210bd7 100644
--- a/tui/Cargo.toml
+++ b/tui/Cargo.toml
@@ -19,4 +19,8 @@ duniter-module = { path = "../module" }
 duniter-network = { path = "../network" }
 log = "0.4.1"
 serde_json = "1.0.9"
-termion = "1.5.1"
\ No newline at end of file
+termion = "1.5.1"
+
+[features]
+# Treat warnings as a build error.
+strict = []
\ No newline at end of file
diff --git a/ws2p/Cargo.toml b/ws2p/Cargo.toml
index e0fb2f4c39325f4972c1b1320b526624a94657f3..955f268c5a60cc526dfc1280b56fd190bb860d51 100644
--- a/ws2p/Cargo.toml
+++ b/ws2p/Cargo.toml
@@ -26,4 +26,8 @@ sqlite = "0.23.9"
 serde = "1.0.24"
 serde_derive = "1.0.24"
 serde_json = "1.0.9"
-websocket = "0.20.2"
\ No newline at end of file
+websocket = "0.20.2"
+
+[features]
+# Treat warnings as a build error.
+strict = []
\ No newline at end of file