[PATCH][analyzer] Pass original command line arguments to compilers.

Anton Yartsev anton.yartsev at gmail.com
Fri Oct 31 02:26:50 PDT 2014


Great! Attached is an updated version.
> Hi Anton,
>
> Here are some suggestions.
>
> -All you need to be able to invoke scan-build from an arbitrary 
> location is to add the path to scan-build to your PATH environment 
> variable.
> +To invoke scan-build from an arbitrary location, add the path to 
> the folder containing scan-build.bat to your PATH environment variable.
>
> New section uses a lot of bold, which makes it stand out from the rest 
> of the page. How about something like this:
>
>   * If getting unexpected"fatal error: no input files"while building
>     with MSYSmake from the Windows cmd, try one of the these solutions:
>       o /Use MinGWmingw32-makeinstead of MSYSmake and exclude the path
>         to MSYS from PATH to preventmingw32-makefrom using MSYS utils.
>         /MSYS utils are dependent on the MSYS runtime and they are not
>         intended for being run from the Windows cmd. Specifically,
>         makefile commands with backslashed quotes may be heavily
>         corrupted when passed for execution.
>       o Runmake from the sh shell:
>
>
> /                     $scan-build [options] sh -c "make [options]”  // 
> Use the proper formatting for this. like other invocations of scan build./
>
>   * If getting "Error : *** target pattern contains no `%’” while
>     using GNU Make 3.81, try to use another version of make.
>
>
> Please, don’t use <tt> instead of italics for the error messages.
>
> I’ve left out some links and explanations of why the errors happen. I 
> think these are not essential to the user and we want to keep the 
> section brief since the page contains simple scan-build use instructions.
>
> Thanks!
> Anna.
>
> On Oct 30, 2014, at 11:03 AM, Anton Yartsev <anton.yartsev at gmail.com 
> <mailto:anton.yartsev at gmail.com>> wrote:
>>
>> Attached is an updated patch.
>>
>>> Anton,
>>>
>>> I think the bulleted list might benefit from restructuring a bit to 
>>> make it sound more like a recommendation on what needs to be done 
>>> under different circumstances.
>> Restructured the bulleted list, now it looks much more better.
>>
>>>
>>> My understanding is that the most reliable way is to use MinGW 
>>> instead of make. (This is addressed by the first bullet.)
>>>
>>> However, some projects might get away with using make. In that case, 
>>> the other recommendations (2d and 3d bullet) would apply.
>> There are two reliable ways - either use pure MinGW or run make from 
>> the sh shell. The 2d bullet is really a recipe for healing a problem 
>> from the 1st bullet, eliminated it.
>> Pleas look at the updated list.
>>
>> Thank you for looking at this!
>>>
>>> Is this correct?
>>>
>>> Thanks,
>>> Anna.
>>>
>>>> On Oct 20, 2014, at 1:49 PM, Anton Yartsev <anton.yartsev at gmail.com 
>>>> <mailto:anton.yartsev at gmail.com>> wrote:
>>>>
>>>> Updated the "For Windows Users" section with helpful hints, OK to 
>>>> commit?
>>>>
>>>>> Anton,
>>>>>
>>>>> Thanks for the investigation.
>>>>>
>>>>> Please, send the proposed wording as a patch. (Not sure if it 
>>>>> would be possible to describe the symptoms of the problem.)
>>>>>
>>>>> Anna.
>>>>>> On Oct 18, 2014, at 1:56 AM, Anton Yartsev 
>>>>>> <anton.yartsev at gmail.com <mailto:anton.yartsev at gmail.com>> wrote:
>>>>>>
>>>>>> As I was explained in the MSYS community the MSYS utils are 
>>>>>> dependent on the MSYS runtime and their usage from cmd.exe is 
>>>>>> unsupported. "You are welcome to try it, but if you observe odd 
>>>>>> behaviour, such as here, then you are out of luck".
>>>>>>
>>>>>> I performed several tests and found out that proper processing is 
>>>>>> performed with either running scan-build with MSYS make in the 
>>>>>> following way:
>>>>>> scan-build ... sh -c "make"
>>>>>> or with using mingw32-make and removal of MSYS from PATH 
>>>>>> (otherwise mingw32-make tries to use MSYS utils).
>>>>>>
>>>>>> from the MinGW FAQ:
>>>>>> "What's the difference between make and mingw32-make?
>>>>>> The "native" (i.e.: MSVCRT dependent) port of make is lacking in 
>>>>>> some functionality and has modified functionality due to the lack 
>>>>>> of POSIX on Win32. There also exists a version of make in the 
>>>>>> MSYS distribution that is dependent on the MSYS runtime. This 
>>>>>> port operates more as make was intended to operate and gives less 
>>>>>> headaches during execution. Based on this, the MinGW 
>>>>>> developers/maintainers/packagers decided it would be best to 
>>>>>> rename the native version so that both the "native" version and 
>>>>>> the MSYS version could be present at the same time without file 
>>>>>> name collision."
>>>>>>
>>>>>> Is it OK to add the recommendations to thescan-build: running the 
>>>>>> analyzer from the command line 
>>>>>> <http://clang-analyzer.llvm.org/scan-build.html#scanbuild_forwindowsusers>, 
>>>>>> "For Windows Users" section?
>>>>>>
>>>>>>> Sorry, that's not a solution.
>>>>>>>
>>>>>>>> The goal of the patch is to pass unmodified arguments to 
>>>>>>>> compilers as they were written in the makefile. Arguments taken 
>>>>>>>> from @ARGV may be modified by the system and Perl, at least 
>>>>>>>> quotes and backslash sequences are processed. Using this 
>>>>>>>> arguments may cause compiler errors. Sometimes system+Perl 
>>>>>>>> corrupt arguments completely, for example, using perl from MSYS 
>>>>>>>> 1.0 on Windows I got:
>>>>>>>> Line from makefile:
>>>>>>>> $(CXX) -DMACRO=\"string\" file.cpp "asd dff ghh" -o file.exe
>>>>>>>>
>>>>>>>> arguments red from @ARGV by c++-analyzer:
>>>>>>>> "-DMACRO=\string\" file.cpp -o file.exe"
>>>>>>>>
>>>>>>>> Please review!
>>>>>>>>
>>>>>>
>>>>>> -- 
>>>>>> Anton
>>>>>
>>>> -- 
>>>> Anton
>>>> <scan-build.html.patch>
>>>
>> -- 
>> Anton
>> <scan-build.htmlv_02.patch>
>


-- 
Anton

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20141031/c7a3fa86/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: scan-build.htmlv_03.patch
Type: text/x-diff
Size: 2190 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20141031/c7a3fa86/attachment.patch>


More information about the cfe-commits mailing list