[cfe-dev] Intercepting environment variables set by xcodebuild and passing them to static analyzer

Ted Kremenek kremenek at apple.com
Wed Nov 5 23:44:28 PST 2008


On Nov 5, 2008, at 10:22 PM, Nikita Zhuk <nikita at zhuk.fi> wrote:

>
> On 6.11.2008, at 3.04, Ted Kremenek wrote:
>
>> All environment variables that xcodebuild sets should be observable  
>> by the clang process.  Using getenv() within your analysis code  
>> should be a portable solution for accessing those values.  Does  
>> that not work?
>
> It doesn't seem to work, or I'm doing something wrong :). For  
> example, the following line, when inserted into static analyzer,  
> prints "TARGET_NAME env variable is set: 0":
> fprintf(stderr, "TARGET_NAME env variable is set: %d\n",  
> getenv("TARGET_NAME") != NULL);
>
> Although xcodebuild does set the TARGET_NAME when compiling (I dump  
> all env variables from xcodebuild with a Run Script Phase).

It's entirely possible that xcodebuild only sets these environment  
variables for child processes that execute during the Run Script  
Phase, and not when the compiler is invoked.  I honestly don't know.

> The only env variables related to compiling I see from the clang  
> process are CCC_ANALYZER_ANALYSIS, LDPLUSPLUS, CCC_ANALYZER_HTML,  
> CLANG and CC.

These environment variables are set by scan-build, which (when running  
the analyzer) is a parent process of xcodebuild.  This is what makes  
me suspect that xcodebuild isn't setting any special environment  
variables when invoking the compiler.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20081105/281ffc16/attachment.html>


More information about the cfe-dev mailing list