Permalink
Browse files

Added check_cs script.

  • Loading branch information...
1 parent c4ada5a commit baea3ee457eed661d0a73016a9d64fb47676bc0e @xaav xaav committed Oct 1, 2011
Showing with 100 additions and 0 deletions.
  1. +99 −0 bin/check_cs
  2. +1 −0 web/.gitignore
View
@@ -0,0 +1,99 @@
+#!/usr/bin/env php
+<?php
+/*
+ * Coding Standards (a.k.a. CS)
+ *
+ * This script is designed to clean up the source files and thus follow coding
+ * conventions.
+ *
+ * @see http://symfony.com/doc/2.0/contributing/code/standards.html
+ *
+ */
+
+require_once __DIR__.'/../app/bootstrap.php.cache';
+
+use Symfony\Component\Finder\Finder;
+
+$fix = isset($argv[1]) && 'fix' == $argv[1];
+
+$finder = new Finder();
+$finder
+ ->files()
+ ->name('*.md')
+ ->name('*.php')
+ ->name('*.php.dist')
+ ->name('*.twig')
+ ->name('*.xml')
+ ->name('*.xml.dist')
+ ->name('*.yml')
+ ->in(array(__DIR__.'/../src', __DIR__.'/../app'))
+ ->exclude('cache')
+ ->exclude('logs')
+ ->exclude('.htaccess')
+ ->exclude('.git')
+;
+
+$count = 0;
+
+foreach ($finder as $file) {
+
+ /* @var $file Symfony\Component\Finder\SplFileInfo */
+
+ // These files are skipped because tests would break
+ foreach(array(
+ ) as $skippedFile) {
+
+ if ($skippedFile === substr($file->getRealPath(), strlen($skippedFile) * -1)) {
+ continue(2);
+ }
+ }
+
+ $old = file_get_contents($file->getRealpath());
+
+ $new = $old;
+
+ // [Structure] Never use short tags (<?)
+ $new = str_replace('<? ', '<?php ', $new);
+
+ // [Structure] Indentation is done by steps of four spaces (tabs are never allowed)
+ $new = preg_replace_callback('/^( *)(\t+)/m', function ($matches) use ($new) {
+ return $matches[1].str_repeat(' ', strlen($matches[2]));
+ }, $new);
+
+ // [Structure] Use the linefeed character (0x0A) to end lines
+ $new = str_replace("\r\n", "\n", $new);
+
+ // [Structure] Don't add trailing spaces at the end of lines
+ $new = preg_replace('/[ \t]*$/m', '', $new);
+
+ // [Structure] Add a blank line before return statements
+ $new = preg_replace_callback('/(^.*$)\n(^ +return)/m', function ($match) {
+ // don't add it if the previous line is ...
+ if (
+ preg_match('/\{$/m', $match[1]) || // ... ending with an opening brace
+ preg_match('/\:$/m', $match[1]) || // ... ending with a colon (e.g. a case statement)
+ preg_match('%^ *//%m', $match[1]) || // ... an inline comment
+ preg_match('/^$/m', $match[1]) // ... already blank
+ ) {
+ return $match[1]."\n".$match[2];
+ }
+
+ return $match[1]."\n\n".$match[2];
+ }, $new);
+
+ // [Structure] A file must always ends with a linefeed character
+ if (strlen($new) && "\n" != substr($new, -1)) {
+ $new .= "\n";
+ }
+
+ if ($new != $old) {
+ $count++;
+
+ if ($fix) {
+ file_put_contents($file->getRealpath(), $new);
+ }
+ printf('%4d) %s'.PHP_EOL, $count, $file->getRelativePathname());
+ }
+}
+
+exit($count ? 1 : 0);
View
@@ -0,0 +1 @@
+/bundles

0 comments on commit baea3ee

Please sign in to comment.