• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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