From: Christian Weiske Date: Wed, 9 Dec 2015 15:12:33 +0000 (+0100) Subject: first version X-Git-Tag: v0.0.1~4 X-Git-Url: https://git.cweiske.de/php-sqllint.git/commitdiff_plain/0f7963bb111a1a08ca51531c9b28681b2c33f1e9 first version --- 0f7963bb111a1a08ca51531c9b28681b2c33f1e9 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ff72e2d --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/composer.lock +/vendor diff --git a/bin/php-sqllint b/bin/php-sqllint new file mode 100755 index 0000000..69372a0 --- /dev/null +++ b/bin/php-sqllint @@ -0,0 +1,68 @@ +#!/usr/bin/env php +errors) == 0) { + echo "No syntax errors detected\n"; + exit(0); +} + +$lines = array(1 => 0); +$pos = -1; +$line = 1; +while (false !== $pos = strpos($sql, "\n", ++$pos)) { + $lines[++$line] = $pos; +} + +echo "Syntax errors found\n"; +foreach ($parser->errors as $error) { + reset($lines); + $line = 1; + while (next($lines) && $error->token->position >= current($lines)) { + ++$line; + } + $col = $error->token->position - $lines[$line]; + + /** @var SqlParser\Exceptions\ParserException $error) */ + echo 'Line ' . $line + . ' col ' . $col + //FIXME: ->token or ->value? + . ' at "' . niceToken($error->token->token) . '":' + . ' ' . $error->getMessage() + . "\n"; + //var_dump($error->token); +} + +function niceToken($str) +{ + return str_replace( + ["\n", "\r", "\t"], + ['\n', '\r', '\t'], + $str + ); +} +?> \ No newline at end of file diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..750ddf1 --- /dev/null +++ b/composer.json @@ -0,0 +1,5 @@ +{ + "require": { + "udan11/sql-parser": "^3.0" + } +} diff --git a/tests/files/create-missingcomma.sql b/tests/files/create-missingcomma.sql new file mode 100644 index 0000000..0807c4b --- /dev/null +++ b/tests/files/create-missingcomma.sql @@ -0,0 +1,4 @@ +CREATE TABLE test ( + uid INT(11) DEFAULT 0 NOT NULL + pid INT(11) DEFAULT 0 NOT NULL +); diff --git a/tests/files/create-nocoldef.sql b/tests/files/create-nocoldef.sql new file mode 100644 index 0000000..9e98e62 --- /dev/null +++ b/tests/files/create-nocoldef.sql @@ -0,0 +1,2 @@ +CREATE TABLE foo ( +); diff --git a/tests/files/create-noname.sql b/tests/files/create-noname.sql new file mode 100644 index 0000000..a2e1c24 --- /dev/null +++ b/tests/files/create-noname.sql @@ -0,0 +1 @@ +CREATE TABLE(); diff --git a/tests/files/create-ok.sql b/tests/files/create-ok.sql new file mode 100644 index 0000000..f5ff243 --- /dev/null +++ b/tests/files/create-ok.sql @@ -0,0 +1,4 @@ +CREATE TABLE test ( + uid INT(11) DEFAULT 0 NOT NULL, + pid INT(11) DEFAULT 0 NOT NULL +); diff --git a/tests/files/create.sql b/tests/files/create.sql new file mode 100644 index 0000000..f5ff243 --- /dev/null +++ b/tests/files/create.sql @@ -0,0 +1,4 @@ +CREATE TABLE test ( + uid INT(11) DEFAULT 0 NOT NULL, + pid INT(11) DEFAULT 0 NOT NULL +); diff --git a/tests/files/multiple.sql b/tests/files/multiple.sql new file mode 100644 index 0000000..37c3a59 --- /dev/null +++ b/tests/files/multiple.sql @@ -0,0 +1,2 @@ +SELECT * FROM foo WHERE; +SELECT foo FROM bar baz bat;