diff --git a/utils/ccc-analyzer b/utils/ccc-analyzer
index 6530303..a1308da 100755
--- a/utils/ccc-analyzer
+++ b/utils/ccc-analyzer
@@ -50,7 +50,7 @@
           return path
       return path[:i]
 
-def analyze(clang, args,language,output,files,verbose,htmldir,file):
+def analyze(clang, args,language,output,files,verbose,htmldir,file,analysis_type):
     if language.find("c++") > 0:
       return
   
@@ -73,14 +73,12 @@
       command = 'cp'.split()
       args = command + files + target.split()      
     else:
-      command = clang.split() + '-checker-cfref'.split()
+      command = clang.split() + analysis_type.split()
       args = command + args;
       RunAnalyzer = 1
 
     if verbose == 2:
       print >> sys.stderr, '#SHELL (cd ' + os.getcwd() + ' && ' + ' '.join(command + print_args) + ')\n'
-      print >> sys.stderr, '#LINE (cd ' + os.getcwd() + ' && wc -l ' + file + ')\n'
-
 
     if RunAnalyzer and htmldir is not None:
       args.append('-o')
@@ -142,18 +140,29 @@
     
     # Forward to GCC.
     compile(args)    
-        
+    
+    # Set the analyzer flag.
+    analysis_type = os.environ.get('CCC_ANALYZER_ANALYSIS')
+    
+    if analysis_type is not None:
+      analysis_type = "-" + analysis_type
+    else:
+      analysis_type = "-checker-cfref"
+
+    # Determine the level of verbosity.
     if os.environ.get('CCC_ANALYZER_VERBOSE') is not None:
       verbose = 1
       
     if os.environ.get('CCC_ANALYZER_LOG') is not None:
       verbose = 2
       
+    # Determine what clang executable to use.
     clang_env = os.environ.get('CLANG') 
     
     if clang_env is not None:
       clang = clang_env
     
+    # Get the HTML output directory.
     htmldir = os.environ.get('CCC_ANALYZER_HTML')
       
     i = 0
@@ -268,7 +277,7 @@
             if language != 'unknown':
               analyze_args = [ '-x', language ] + analyze_args
             analyze_args = analyze_args + compile_opts
-            analyze(clang, analyze_args, language, output, files, verbose, htmldir, file)
+            analyze(clang, analyze_args, language, output, files, verbose, htmldir, file, analysis_type)
 #        compile(args)
 
 
diff --git a/utils/scan-build b/utils/scan-build
index 890f014..c6647cd 100755
--- a/utils/scan-build
+++ b/utils/scan-build
@@ -523,14 +523,17 @@
 
 OPTIONS:
 
+  -a            - The analysis to run.  The default is 'checker-cfref'.
+                  Valid options are: 'checker-cfref', 'fsyntax-only'
+
   -o            - Target directory for HTML report files.  Subdirectories
                   will be created as needed to represent separate "runs" of
                   the analyzer.  If this option is not specified, a directory
                   is created in /tmp to store the reports.
-                
+
   -h            - Display this message.
   --help
-  
+
   -k            - Add a "keep on going" option to the specified build command.
   --keep-going    This option currently supports make and xcodebuild.
                   This is a convenience option; one can specify this
@@ -565,6 +568,7 @@
 my $HtmlDir;           # Parent directory to store HTML files.
 my $IgnoreErrors = 0;  # Ignore build errors.
 my $ViewResults  = 0;  # View results when the build terminates.
+my $Analysis = "checker-cfref";
 
 if (!@ARGV) {
   DisplayHelp();
@@ -582,6 +586,22 @@
     exit 0;
   }
   
+  if ($arg eq "-a") {
+    shift @ARGV;
+
+    if (!@ARGV) {
+      die "$Prog: '-a' option requires an analysis type.\n";
+    }
+    
+    $Analysis = shift @ARGV;
+    
+    if (!($Analysis eq "checker-cfref" or $Analysis eq "fsyntax-only")) {
+      die "$Prog: Invalid argument '$Analysis' to -a.\n";
+    }
+    
+    next;
+  }
+  
   if ($arg eq "-o") {
     shift @ARGV;
         
@@ -667,6 +687,8 @@
   $ENV{'CCC_ANALYZER_LOG'} = 1;
 }
 
+$ENV{'CCC_ANALYZER_ANALYSIS'} = $Analysis;
+
 # Run the build.
 
 RunBuildCommand(\@ARGV, $IgnoreErrors);
