#!/bin/bash # Copyright (c) 2011 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # This script checks the touch_ntp code for common errors and style # problems using the closure compiler (jscompiler) and closure linter # (gjslint) - both of which must be on the path. # See http://code.google.com/closure/compiler/ and # http://code.google.com/closure/utilities/ for details on these tools. SOURCES="touchhandler.js slider.js newtab.js grabber.js " SOURCES+="standalone/standalone_hack.js" # First run the closure compiler looking for syntactic issues. # Note that we throw away the output from jscompiler since it's use # is not yet common in Chromium and for now we want it to be an optional # tool for helping to find bugs, not something that actually changes # the embedded JavaScript (making it harder to debug, for example). # I used to run with '--warning_level VERBOSE' to get full type checking # but there are enough limitations in the language and compiler that # it doesn't seem worth the benefit (spent more time trying to apease # the compiler and reviewers of my code than the compiler saved me). # Enable support for property get/set syntax as added in ecmascript5. # Note that this requires a build of JSCompiler that is newer than # Feb 2011. CARGS="--language_in=ECMASCRIPT5_STRICT" CARGS+=" --js_output_file /dev/null" for S in $SOURCES tools/externs.js; do CARGS+=" --js $S" done cd `dirname $0`/.. echo jscompiler $CARGS jscompiler $CARGS || exit 1 # Now run the closure linter looking for style issues. # GJSLint can't follow the more concice syntax for prototype members and # complains about missing @this annotations (filed as bug 4073735). To # cope for now I just just off all missing-JSDoc warnings. LARGS="--nojsdoc" # Verify extra rules like spacing and indentation LARGS+=" --strict" # Might as well check the bit of JS we have embedded in HTML too LARGS+=" --check_html newtab.html" LARGS+=" $SOURCES" echo gjslint $LARGS gjslint $LARGS || exit 1