Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(324)

Side by Side Diff: tools/coverity/coverity.py

Issue 2829003: Support OS X in coverity.py. Avoid echoing coverity password to console. (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: Created 10 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 # Copyright (c) 2010 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2010 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """ 6 """
7 Runs Coverity Prevent on a build of Chromium. 7 Runs Coverity Prevent on a build of Chromium.
8 8
9 This script should be run in a Visual Studio Command Prompt, so that the 9 This script should be run in a Visual Studio Command Prompt, so that the
10 INCLUDE, LIB, and PATH environment variables are set properly for Visual 10 INCLUDE, LIB, and PATH environment variables are set properly for Visual
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 # Relative to CHROMIUM_SOURCE_DIR. Contains the pid of this script. 77 # Relative to CHROMIUM_SOURCE_DIR. Contains the pid of this script.
78 LOCK_FILE = 'coverity.lock' 78 LOCK_FILE = 'coverity.lock'
79 79
80 def _ReadPassword(pwfilename): 80 def _ReadPassword(pwfilename):
81 """Reads the coverity password in from a file where it was stashed""" 81 """Reads the coverity password in from a file where it was stashed"""
82 pwfile = open(pwfilename, 'r') 82 pwfile = open(pwfilename, 'r')
83 password = pwfile.readline() 83 password = pwfile.readline()
84 pwfile.close() 84 pwfile.close()
85 return password.rstrip() 85 return password.rstrip()
86 86
87 def _RunCommand(cmd, dry_run, shell=False): 87 def _RunCommand(cmd, dry_run, shell=False, echo_cmd=True):
88 """Runs the command if dry_run is false, otherwise just prints the command.""" 88 """Runs the command if dry_run is false, otherwise just prints the command."""
89 print cmd 89 if echo_cmd:
90 print cmd
90 # TODO(wtc): Check the return value of subprocess.call, which is the return 91 # TODO(wtc): Check the return value of subprocess.call, which is the return
91 # value of the command. 92 # value of the command.
92 if not dry_run: 93 if not dry_run:
93 subprocess.call(cmd, shell=shell) 94 subprocess.call(cmd, shell=shell)
94 95
95 def _ReleaseLock(lock_file, lock_filename): 96 def _ReleaseLock(lock_file, lock_filename):
96 """Removes the lockfile. Function-ized so we can bail from anywhere""" 97 """Removes the lockfile. Function-ized so we can bail from anywhere"""
97 os.close(lock_file) 98 os.close(lock_file)
98 os.remove(lock_filename) 99 os.remove(lock_filename)
99 100
(...skipping 27 matching lines...) Expand all
127 cmd = 'gclient sync' 128 cmd = 'gclient sync'
128 _RunCommand(cmd, options.dry_run, shell=True) 129 _RunCommand(cmd, options.dry_run, shell=True)
129 print 'Elapsed time: %ds' % (time.time() - start_time) 130 print 'Elapsed time: %ds' % (time.time() - start_time)
130 131
131 # Do a clean build. Remove the build output directory first. 132 # Do a clean build. Remove the build output directory first.
132 if sys.platform == 'linux2': 133 if sys.platform == 'linux2':
133 rm_path = os.path.join(options.source_dir,'src','out',options.target) 134 rm_path = os.path.join(options.source_dir,'src','out',options.target)
134 elif sys.platform == 'win32': 135 elif sys.platform == 'win32':
135 rm_path = os.path.join(options.source_dir,options.solution_dir, 136 rm_path = os.path.join(options.source_dir,options.solution_dir,
136 options.target) 137 options.target)
138 elif sys.platform == 'darwin':
139 rm_path = os.path.join(options.source_dir,'src','xcodebuild')
137 else: 140 else:
138 print 'Platform "%s" unrecognized, don\'t know how to proceed' 141 print 'Platform "%s" unrecognized, don\'t know how to proceed'
139 _ReleaseLock(lock_file, lock_filename) 142 _ReleaseLock(lock_file, lock_filename)
140 sys.exit(1) 143 sys.exit(1)
141 144
142 if options.dry_run: 145 if options.dry_run:
143 print 'shutil.rmtree(%s)' % repr(rm_path) 146 print 'shutil.rmtree(%s)' % repr(rm_path)
144 else: 147 else:
145 shutil.rmtree(rm_path,True) 148 shutil.rmtree(rm_path,True)
146 149
147 print 'Elapsed time: %ds' % (time.time() - start_time) 150 print 'Elapsed time: %ds' % (time.time() - start_time)
148 151
149 use_shell_during_make = False 152 use_shell_during_make = False
150 if sys.platform == 'linux2': 153 if sys.platform == 'linux2':
151 use_shell_during_make = True 154 use_shell_during_make = True
152 os.chdir('src') 155 os.chdir('src')
153 _RunCommand('pwd', options.dry_run, shell=True) 156 _RunCommand('pwd', options.dry_run, shell=True)
154 cmd = '%s/cov-build --dir %s make BUILDTYPE=%s' % ( 157 cmd = '%s/cov-build --dir %s make BUILDTYPE=%s' % (
155 options.coverity_bin_dir, options.coverity_intermediate_dir, 158 options.coverity_bin_dir, options.coverity_intermediate_dir,
156 options.target) 159 options.target)
157 elif sys.platform == 'win32': 160 elif sys.platform == 'win32':
158 cmd = '%s\\cov-build.exe --dir %s devenv.com %s\\%s /build %s' % ( 161 cmd = '%s\\cov-build.exe --dir %s devenv.com %s\\%s /build %s' % (
159 options.coverity_bin_dir, options.coverity_intermediate_dir, 162 options.coverity_bin_dir, options.coverity_intermediate_dir,
160 options.source_dir, options.solution_file, options.target) 163 options.source_dir, options.solution_file, options.target)
164 elif sys.platform == 'darwin':
165 use_shell_during_make = True
166 os.chdir('src/build')
167 _RunCommand('pwd', options.dry_run, shell=True)
168 cmd = ('%s/cov-build --dir %s xcodebuild -project all.xcodeproj '
169 '-configuration %s -target All') % (
170 options.coverity_bin_dir, options.coverity_intermediate_dir,
171 options.target)
172
161 173
162 _RunCommand(cmd, options.dry_run, shell=use_shell_during_make) 174 _RunCommand(cmd, options.dry_run, shell=use_shell_during_make)
163 print 'Elapsed time: %ds' % (time.time() - start_time) 175 print 'Elapsed time: %ds' % (time.time() - start_time)
164 176
165 cov_analyze_exe = os.path.join(options.coverity_bin_dir,'cov-analyze') 177 cov_analyze_exe = os.path.join(options.coverity_bin_dir,'cov-analyze')
166 cmd = '%s --dir %s %s' % (cov_analyze_exe, 178 cmd = '%s --dir %s %s' % (cov_analyze_exe,
167 options.coverity_intermediate_dir, 179 options.coverity_intermediate_dir,
168 options.coverity_analyze_options) 180 options.coverity_analyze_options)
169 _RunCommand(cmd, options.dry_run, shell=use_shell_during_make) 181 _RunCommand(cmd, options.dry_run, shell=use_shell_during_make)
170 print 'Elapsed time: %ds' % (time.time() - start_time) 182 print 'Elapsed time: %ds' % (time.time() - start_time)
(...skipping 14 matching lines...) Expand all
185 '--target %s ' 197 '--target %s '
186 '--user %s ' 198 '--user %s '
187 '--password %s') % (cov_commit_exe, 199 '--password %s') % (cov_commit_exe,
188 options.coverity_intermediate_dir, 200 options.coverity_intermediate_dir,
189 options.coverity_dbhost, 201 options.coverity_dbhost,
190 options.coverity_port, 202 options.coverity_port,
191 options.coverity_product, 203 options.coverity_product,
192 coverity_target, 204 coverity_target,
193 options.coverity_user, 205 options.coverity_user,
194 coverity_password) 206 coverity_password)
195 _RunCommand(cmd, options.dry_run, shell=use_shell_during_make) 207 # Avoid echoing the Commit command because it has a password in it
wtc 2010/06/15 22:04:07 Can we tell cov-commit-defects to read the passwor
208 _RunCommand(cmd, options.dry_run, shell=use_shell_during_make, echo_cmd=False)
196 209
197 print 'Total time: %ds' % (time.time() - start_time) 210 print 'Total time: %ds' % (time.time() - start_time)
198 211
199 _ReleaseLock(lock_file, lock_filename) 212 _ReleaseLock(lock_file, lock_filename)
200 213
201 return 0 214 return 0
202 215
203 if '__main__' == __name__: 216 if '__main__' == __name__:
204 option_parser = optparse.OptionParser() 217 option_parser = optparse.OptionParser()
205 option_parser.add_option('', '--dry-run', action='store_true', default=False, 218 option_parser.add_option('', '--dry-run', action='store_true', default=False,
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 270
258 option_parser.add_option('', '--coverity-password-file', 271 option_parser.add_option('', '--coverity-password-file',
259 dest='coverity_password_file', 272 dest='coverity_password_file',
260 help='file containing the coverity password', 273 help='file containing the coverity password',
261 default='coverity-password') 274 default='coverity-password')
262 275
263 options, args = option_parser.parse_args() 276 options, args = option_parser.parse_args()
264 277
265 result = main(options, args) 278 result = main(options, args)
266 sys.exit(result) 279 sys.exit(result)
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698