| #!/usr/bin/env python |
| # |
| # This script generates the Sonar project properties file from the Buck rules |
| # To run sonar, run 'sonar-scanner' from $ONOS_ROOT |
| # |
| |
| import os |
| from subprocess import call, check_call, check_output |
| |
| # SonarQube property file name and template |
| FILE_NAME = 'sonar-project.properties' |
| ROOT_TEMPLATE = '''# Auto-generated properties file |
| sonar.projectKey=%(key)s |
| sonar.projectName=%(name)s |
| sonar.projectVersion=%(version)s |
| |
| sonar.sources=src |
| sonar.sourceEncoding=UTF-8 |
| sonar.language=java |
| |
| sonar.modules=%(modules)s |
| |
| ''' |
| |
| # Change to $ONOS_ROOT |
| ONOS_ROOT = os.environ[ 'ONOS_ROOT' ] |
| if ONOS_ROOT: |
| os.chdir( ONOS_ROOT ) |
| |
| # Final all onos_jar rules |
| cmd = ['onos-buck', 'query', "kind('onos_jar', deps(//tools/package:onos-package))"] |
| output = check_output( cmd ) |
| |
| modules = {} |
| for line in output.rstrip().split('\n'): |
| # Parse rule into path and name |
| path, name = line.split(':', 2) |
| path = path.replace('//', '', 1) |
| if path not in modules: |
| modules[path] = name |
| else: |
| print "Skipping %s" % line |
| |
| # Write the sonar properties file |
| # FIXME pull the version from the Buck version file |
| with open(FILE_NAME, 'w') as f: |
| f.write(ROOT_TEMPLATE % { |
| 'name': 'onos', |
| 'key': 'org.onosproject:onos', |
| 'version': '1.8.0-SNAPSHOT', |
| 'modules': ','.join( modules.values() ) |
| }) |
| for path, name in modules.iteritems(): |
| f.write('%s.sonar.projectBaseDir=%s\n' % ( name, path )) |
| ''' Extra options |
| module2.sonar.projectBaseDir=Module 2 |
| module2.sonar.sources=sources |
| module2.sonar.projectName=Module #2 |
| ''' |