1#!/bin/bash 2 3# Copyright (c) 2011 The Chromium Authors. All rights reserved. 4# Use of this source code is governed by a BSD-style license that can be 5# found in the LICENSE file. 6 7# This script checks the touch_ntp code for common errors and style 8# problems using the closure compiler (jscompiler) and closure linter 9# (gjslint) - both of which must be on the path. 10# See http://code.google.com/closure/compiler/ and 11# http://code.google.com/closure/utilities/ for details on these tools. 12 13SOURCES="event_tracker.js touch_handler.js card_slider.js new_tab.js grabber.js apps_page.js recently_closed.js" 14 15# First run the closure compiler looking for syntactic issues. 16# Note that we throw away the output from jscompiler since it's use 17# is not yet common in Chromium and for now we want it to be an optional 18# tool for helping to find bugs, not something that actually changes 19# the embedded JavaScript (making it harder to debug, for example). 20 21# I used to run with '--warning_level VERBOSE' to get full type checking 22# but there are enough limitations in the language and compiler that 23# it doesn't seem worth the benefit (spent more time trying to apease 24# the compiler and reviewers of my code than the compiler saved me). 25 26# Enable support for property get/set syntax as added in ecmascript5. 27# Note that this requires a build of JSCompiler that is newer than 28# Feb 2011. 29CARGS="--language_in=ECMASCRIPT5_STRICT" 30 31CARGS+=" --js_output_file /dev/null" 32for S in $SOURCES tools/externs.js; do 33 CARGS+=" --js $S" 34done 35 36cd `dirname $0`/.. 37 38echo jscompiler $CARGS 39jscompiler $CARGS || exit 1 40 41# Now run the closure linter looking for style issues. 42 43# GJSLint can't follow the more concice syntax for prototype members and 44# complains about missing @this annotations (filed as bug 4073735). To 45# cope for now I just just off all missing-JSDoc warnings. 46LARGS="--nojsdoc" 47 48# Verify extra rules like spacing and indentation 49LARGS+=" --strict" 50 51# Might as well check the bit of JS we have embedded in HTML too 52LARGS+=" --check_html new_tab.html" 53 54LARGS+=" $SOURCES" 55 56echo gjslint $LARGS 57gjslint $LARGS || exit 1 58