diff --git a/src/DrupalCI/Job/CodeBase/JobCodeBase.php b/src/DrupalCI/Job/CodeBase/JobCodeBase.php
index 130ade8..ff57bb8 100644
--- a/src/DrupalCI/Job/CodeBase/JobCodeBase.php
+++ b/src/DrupalCI/Job/CodeBase/JobCodeBase.php
@@ -80,7 +80,7 @@ class JobCodebase {
   /**
    * A storage variable for any modified files
    */
-  protected $modified_files;
+  protected $modified_files = [];
   public function getModifiedFiles() {  return $this->modified_files;  }
   public function addModifiedFile($filename) {
     if (!is_array($this->modified_files)) { $this->modified_files = []; }
diff --git a/src/DrupalCI/Plugin/BuildSteps/setup/SyntaxCheck.php b/src/DrupalCI/Plugin/BuildSteps/setup/SyntaxCheck.php
new file mode 100644
index 0000000..1a7ed60
--- /dev/null
+++ b/src/DrupalCI/Plugin/BuildSteps/setup/SyntaxCheck.php
@@ -0,0 +1,45 @@
+<?php
+/**
+ * @file
+ * Contains \DrupalCI\Plugin\BuildSteps\setup\SyntaxCheck
+ *
+ * Processes "setup: syntaxcheck:" instructions from within a job definition.
+ */
+
+namespace DrupalCI\Plugin\BuildSteps\setup;
+
+use DrupalCI\Console\Output;
+use DrupalCI\Plugin\JobTypes\JobInterface;
+use DrupalCI\Plugin\BuildSteps\generic\ContainerCommand;
+
+/**
+ * @PluginID("syntaxcheck")
+ */
+class SyntaxCheck extends SetupBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function run(JobInterface $job, $data) {
+    if ($data != FALSE) {
+      Output::writeLn('<info>SyntaxCheck checking for php syntax errors.</info>');
+
+      $codebase = $job->getJobCodebase();
+      $modified_files = $codebase->getModifiedFiles();
+      if (empty($modified_files)) {
+        return;
+      }
+
+      $bash_array = "";
+      foreach ($modified_files as $file) {
+        $bash_array .= "$file ";
+      }
+
+      // TODO: Remove hardcoded /var/www/html.
+      // This should be come JobCodeBase->getLocalDir() or similar
+      $cmd = "cd /var/www/html && i=0; for file in $bash_array; do php -l \$file; ((i+=\$?)); done; return i;";
+      $command = new ContainerCommand();
+      $command->run($job, $cmd);
+    }
+  }
+}
diff --git a/src/DrupalCI/Plugin/JobTypes/simpletest/SimpletestJob.php b/src/DrupalCI/Plugin/JobTypes/simpletest/SimpletestJob.php
index dfb402e..9583cc0 100644
--- a/src/DrupalCI/Plugin/JobTypes/simpletest/SimpletestJob.php
+++ b/src/DrupalCI/Plugin/JobTypes/simpletest/SimpletestJob.php
@@ -47,6 +47,7 @@ class SimpletestJob extends JobBase {
     // 'DCI_XMLOutput' => '/var/www/html/results/xml',
     'DCI_PHPInterpreter' => '/opt/phpenv/shims/php',
     'DCI_RunOptions' => 'color;keep-results',
+    'DCI_SyntaxCheck' => TRUE,
   );
 
   /**
diff --git a/src/DrupalCI/Plugin/JobTypes/simpletest/drupalci.yml b/src/DrupalCI/Plugin/JobTypes/simpletest/drupalci.yml
index 8fb047e..ab7c3a9 100644
--- a/src/DrupalCI/Plugin/JobTypes/simpletest/drupalci.yml
+++ b/src/DrupalCI/Plugin/JobTypes/simpletest/drupalci.yml
@@ -25,6 +25,7 @@ setup:
     - chown -fR www-data:www-data /var/www/html/sites /var/www/html/results
     - chmod 0777 /var/www/html/artifacts
     - chmod 0777 /tmp
+  syntaxcheck: true
 # The 'install' key is currently required for the dbcreate plugin
 # TODO: make dbcreate consistent with other commands and place in pre-install
 install:
diff --git a/src/DrupalCI/Plugin/Preprocess/definition/SyntaxCheck.php b/src/DrupalCI/Plugin/Preprocess/definition/SyntaxCheck.php
new file mode 100644
index 0000000..c9e01df
--- /dev/null
+++ b/src/DrupalCI/Plugin/Preprocess/definition/SyntaxCheck.php
@@ -0,0 +1,30 @@
+<?php
+/**
+ * @file
+ * Contains \DrupalCI\Plugin\Preprocess\definition\SyntaxCheck
+ *
+ * PreProcesses DCI_SyntaxCheck variable.
+ */
+
+namespace DrupalCI\Plugin\Preprocess\definition;
+
+/**
+ * @PluginID("syntaxcheck")
+ */
+class SyntaxCheck {
+
+  /**
+   * {@inheritdoc}
+   *
+   * DCI_SyntaxCheck_Preprocessor
+   *
+   * If set, run php lint on committed code.
+   *
+   * Input format: (bool) $value = "true"
+   */
+  public function process(array &$definition, $value) {
+    // Make sure our syntax check runs last.
+    unset($definition['setup']['syntaxcheck']);
+    $definition['setup']['syntaxcheck'] = $value ? "TRUE" : "FALSE";
+  }
+}
