[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