|
|
|
import os
|
|
|
|
|
|
|
|
analyzers = ['infer', 'eradicate']
|
|
|
|
|
|
|
|
original_java_library = java_library
|
|
|
|
def java_library(
|
|
|
|
name,
|
|
|
|
srcs=[],
|
|
|
|
**kwargs
|
|
|
|
):
|
|
|
|
|
|
|
|
original_java_library(
|
|
|
|
name=name,
|
|
|
|
srcs=srcs,
|
|
|
|
**kwargs
|
|
|
|
)
|
|
|
|
|
|
|
|
create_genrules(name, srcs)
|
|
|
|
|
|
|
|
original_android_library = android_library
|
|
|
|
def android_library(
|
|
|
|
name,
|
|
|
|
srcs=[],
|
|
|
|
**kwargs
|
|
|
|
):
|
|
|
|
|
|
|
|
original_android_library(
|
|
|
|
name=name,
|
|
|
|
srcs=srcs,
|
|
|
|
**kwargs
|
|
|
|
)
|
|
|
|
|
|
|
|
create_genrules(name, srcs)
|
|
|
|
|
|
|
|
def create_genrules(
|
|
|
|
name,
|
|
|
|
srcs
|
|
|
|
):
|
|
|
|
if 'GENERATE_INFER_GENRULES' in os.environ and srcs:
|
|
|
|
for analyzer in analyzers:
|
|
|
|
analyzer_name = name + '_{}'.format(analyzer)
|
|
|
|
genrule(
|
|
|
|
name = analyzer_name,
|
|
|
|
srcs=srcs,
|
|
|
|
cmd = ' '.join([
|
|
|
|
os.getenv('INFER_BIN', 'infer'),
|
|
|
|
'-a', analyzer,
|
|
|
|
'--results-dir', '$OUT',
|
|
|
|
'--classpath', '$(classpath :{})'.format(name),
|
|
|
|
'--sourcepath', '$SRCDIR',
|
|
|
|
'--generated-classes', '$(location :{})'.format(name),
|
|
|
|
]),
|
|
|
|
out = '{}_out'.format(analyzer),
|
|
|
|
)
|