diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4f7dac6a327ee188433624ae348a8691d0eb4bf9..c0c406ef354c0579fb1367b5c59d4d59270c4062 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -16,17 +16,30 @@ stages:
   - static-analysis
   - unit-tests
   - integration-tests
-linting:
+newline_at_eof:
+      stage: linting
+      before_script:
+        - pip3 install -r devices/test-requirements.txt
+      script:
+        - flake8 --filename *.sh,*.conf,*.md,*.yml --select=W292 --exclude .tox,.egg-info,docker
+python_linting:
   stage: linting
   script:
     - cd devices
     - tox -e pep8
-static-analysis:
+bandit:
   stage: static-analysis
-  allow_failure: true
   script:
     - cd devices
     - tox -e bandit
+shellcheck:
+  stage: static-analysis
+  allow_failure: true
+  before_script:
+    - sudo apt-get update
+    - sudo apt-get install -y shellcheck
+  script:
+    - shellheck **/*.sh
 unit_test:
   stage: unit-tests
   before_script:
diff --git a/README.md b/README.md
index b7b4398a9581bf0771fa2e8a669f1e53c92b75d2..192b3edb7713088120b672065296575c255adfa6 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,3 @@
 # Tango Station Control
 
-Station Control software related to Tango devices.
\ No newline at end of file
+Station Control software related to Tango devices.
diff --git a/devices/clients/README.md b/devices/clients/README.md
index 3613344461e8abb64e5a68a1d30c68b3927d22b4..083420b38dc611fd8096110ca42d46c375d3db60 100644
--- a/devices/clients/README.md
+++ b/devices/clients/README.md
@@ -1,4 +1,4 @@
 this folder contains all the comms_client implementations for organisation
 
 ### How to add a new client
-soon™
\ No newline at end of file
+soon™
diff --git a/devices/integration_test/README.md b/devices/integration_test/README.md
index 3292bfa0049b5c2312f8e0536e00cc581433ed61..d4f91ace15cca03e924b9139b25bdb5294944576 100644
--- a/devices/integration_test/README.md
+++ b/devices/integration_test/README.md
@@ -23,4 +23,4 @@ $LOFAR20_DIR/sbin/run_integration_test.sh
 ## Limitations
 
 Our makefile will always launch the new container upon creation, resulting in
-the integration tests actually being run twice.
\ No newline at end of file
+the integration tests actually being run twice.
diff --git a/devices/test-requirements.txt b/devices/test-requirements.txt
index c97375e938b0466da884581c339f2c5735472c62..af6d9e4218ad53b977b444f7db95ead52d649b21 100644
--- a/devices/test-requirements.txt
+++ b/devices/test-requirements.txt
@@ -4,6 +4,9 @@
 
 doc8>=0.8.0 # Apache-2.0
 flake8>=3.8.0 # MIT
+flake8-breakpoint>=1.1.0 # MIT
+flake8-debugger>=4.0.0 #MIT
+flake8-mock>=0.3 #GPL
 bandit>=1.6.0 # Apache-2.0
 hacking>=3.2.0,<3.3.0 # Apache-2.0
 coverage>=5.2.0 # Apache-2.0
diff --git a/devices/tox.ini b/devices/tox.ini
index 4869bad0462b461a28babab5ae50375b957b44fa..e9a1fb2c0efd3ddd382cc26df4a5a3c27e4871b8 100644
--- a/devices/tox.ini
+++ b/devices/tox.ini
@@ -42,5 +42,5 @@ commands =
 
 [flake8]
 filename = *.py,.stestr.conf,.txt
-select = W292
+select = W292,B601,B602,T100,M001
 exclude=.tox,.egg-info
diff --git a/docker-compose/tango-prometheus-exporter/get_metrics.sh b/docker-compose/tango-prometheus-exporter/get_metrics.sh
index b2801728979d1a7b788c44a13e882a4750a83c30..0401a2564fbaf5e71c4b8c8ff971ea2f08fe62d2 100755
--- a/docker-compose/tango-prometheus-exporter/get_metrics.sh
+++ b/docker-compose/tango-prometheus-exporter/get_metrics.sh
@@ -1 +1 @@
-curl $(kubectl get svc -n tango-grafana -o jsonpath='{.items[?(@.metadata.name=="tango-exporter-service-0")].spec.clusterIP}')/metrics
\ No newline at end of file
+curl $(kubectl get svc -n tango-grafana -o jsonpath='{.items[?(@.metadata.name=="tango-exporter-service-0")].spec.clusterIP}')/metrics
diff --git a/sbin/run_integration_test.sh b/sbin/run_integration_test.sh
index d54163625541c13816bf0309c09a2713ce35add9..cebbf1479fd1a349cd100fb53745eaacd59fa4a1 100755
--- a/sbin/run_integration_test.sh
+++ b/sbin/run_integration_test.sh
@@ -19,4 +19,4 @@ cd "$LOFAR20_DIR/docker-compose" || exit 1
 make start integration-test
 
 # Run the integration test with the output displayed on stdout
-docker start -a integration-test
\ No newline at end of file
+docker start -a integration-test