2017-06-15 2:43 GMT+07:00 David Blaikie <dblai...@gmail.com>: > > > On Wed, Jun 14, 2017, 8:17 AM Serge Pavlov <sepavl...@gmail.com> wrote: > >> 2017-06-14 4:24 GMT+07:00 David Blaikie <dblai...@gmail.com>: >> >>> Ah, I find that the test passes if I remove the compile_commands.json >>> file from my build directory (I have Ninja configured to generate a >>> compile_commands.json file). >>> >>> Looks like what happens is it finds the compilation database and fails >>> hard when the database doesn't contain a compile command for the file in >>> question. If the database is not found, it falls back to some basic command >>> behavior, perhaps? >>> >>> >> You are right, constructor of `CommonOptionsParser` calls >> `autoDetectFromSource` or `autoDetectFromDirectory` prior to final >> construction of `FixedCompilationDatabase. >> >> Is there some way this test could be fixed to cope with this, otherwise >>> it seems to get in the way of people actually using clang tools in their >>> LLVM/Clang build environment? >>> >>> >> IIUC, presence of stale compilation database file in test directory could >> break many tests. I don't understand why only diagnostic.cpp fails, >> probably there is something wrong with the clang-tidy application cleanup >> in this case? >> > > Except it's neither stale nor in the test directory. > > It's the up to date/useful/used compile_commands.json generated by ninja > in the root of the build tree. >
I miss something. If I could reproduce the problem, I would investigate it. > > >> >>> On Tue, Jun 13, 2017 at 7:41 AM Serge Pavlov <sepavl...@gmail.com> >>> wrote: >>> >>>> I cannot reproduce such fail, so I can only guess how changes made in >>>> https://reviews.llvm.org/rL303756 and https://reviews.llvm.org/rL303741 >>>> could cause such problem. Behavior of `Driver::BuildCompilation` is changed >>>> so that it returns null pointer if errors occur during driver argument >>>> parse. It is called in `CompilationDatabase.cpp` from >>>> `stripPositionalArgs`. The call stack at this point is: >>>> stripPositionalArgs >>>> clang::tooling::FixedCompilationDatabase::loadFromCommandLine >>>> clang::tooling::CommonOptionsParser::CommonOptionsParser >>>> clang::tidy::clangTidyMain >>>> main >>>> `FixedCompilationDatabase::loadFromCommandLine` returns null and >>>> CommonOptionsParser uses another method to create compilation database. The >>>> output "Compile command not found" means that no input file were found in >>>> `ClangTool::run`. Maybe some file names are nulls? >>>> >>>> >>>> Thanks, >>>> --Serge >>>> >>>> 2017-06-13 3:42 GMT+07:00 David Blaikie <dblai...@gmail.com>: >>>> >>>>> I've been seeing errors from this test recently: >>>>> >>>>> Command Output (stderr): >>>>> -- >>>>> 1 error generated. >>>>> Error while processing /usr/local/google/home/ >>>>> blaikie/dev/llvm/src/tools/clang/tools/extra/test/clang- >>>>> tidy/diagnostic.cpp.nonexistent.cpp. >>>>> /usr/local/google/home/blaikie/dev/llvm/src/tools/ >>>>> clang/tools/extra/test/clang-tidy/diagnostic.cpp:10:12: error: >>>>> expected string not found in input >>>>> // CHECK2: :[[@LINE+2]]:9: warning: implicit conversion from 'double' >>>>> to 'int' changes value from 1.5 to 1 [clang-diagnostic-literal- >>>>> conversion] >>>>> ^ >>>>> <stdin>:2:1: note: scanning from here >>>>> Skipping /usr/local/google/home/blaikie/dev/llvm/src/tools/ >>>>> clang/tools/extra/test/clang-tidy/diagnostic.cpp. Compile command not >>>>> found. >>>>> ^ >>>>> <stdin>:2:1: note: with expression "@LINE+2" equal to "12" >>>>> Skipping /usr/local/google/home/blaikie/dev/llvm/src/tools/ >>>>> clang/tools/extra/test/clang-tidy/diagnostic.cpp. Compile command not >>>>> found. >>>>> ^ >>>>> >>>>> >>>>> Specifically, the output is: >>>>> $ ./bin/clang-tidy >>>>> -checks='-*,clang-diagnostic-*,google-explicit-constructor' >>>>> /usr/local/google/home/blaikie/dev/llvm/src/tools/ >>>>> clang/tools/extra/test/clang-tidy/diagnostic.cpp -- >>>>> -fan-unknown-option 2>&1 error: unknown >>>>> argument: '-fan-unknown-option' >>>>> Skipping >>>>> /usr/local/google/home/blaikie/dev/llvm/src/tools/ >>>>> clang/tools/extra/test/clang-tidy/diagnostic.cpp. Compile command not >>>>> found. >>>>> >>>>> >>>>> Does this look like it might be related to any of your changes in this >>>>> area? Perhaps the error due to unknown argument is causing clang-tidy not >>>>> to continue on to run the check & report the warning? >>>>> >>>>> >>>>> On Wed, May 24, 2017 at 3:51 AM Serge Pavlov via cfe-commits < >>>>> cfe-commits@lists.llvm.org> wrote: >>>>> >>>>>> Author: sepavloff >>>>>> Date: Wed May 24 05:50:56 2017 >>>>>> New Revision: 303735 >>>>>> >>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=303735&view=rev >>>>>> Log: >>>>>> Modify test so that it looks for patterns in stderr as well >>>>>> >>>>>> With the change https://reviews.llvm.org/D33013 driver will not build >>>>>> compilation object if command line is invalid, in particular, if >>>>>> unrecognized option is provided. In such cases it will prints >>>>>> diagnostics >>>>>> on stderr. The test 'clang-tidy/diagnostic.cpp' checks reaction on >>>>>> unrecognized option and will fail when D33013 is applied because it >>>>>> checks >>>>>> only stdout for test patterns and expects the name of diagnostic >>>>>> category >>>>>> prepared by clang-tidy. With this change the test makes more general >>>>>> check >>>>>> and must work in either case. >>>>>> >>>>>> Differential Revision: https://reviews.llvm.org/D33173 >>>>>> >>>>>> Modified: >>>>>> clang-tools-extra/trunk/test/clang-tidy/diagnostic.cpp >>>>>> >>>>>> Modified: clang-tools-extra/trunk/test/clang-tidy/diagnostic.cpp >>>>>> URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/ >>>>>> trunk/test/clang-tidy/diagnostic.cpp?rev=303735&r1= >>>>>> 303734&r2=303735&view=diff >>>>>> ============================================================ >>>>>> ================== >>>>>> --- clang-tools-extra/trunk/test/clang-tidy/diagnostic.cpp (original) >>>>>> +++ clang-tools-extra/trunk/test/clang-tidy/diagnostic.cpp Wed May >>>>>> 24 05:50:56 2017 >>>>>> @@ -1,11 +1,11 @@ >>>>>> // RUN: clang-tidy -checks='-*,modernize-use-override' >>>>>> %s.nonexistent.cpp -- | FileCheck -check-prefix=CHECK1 >>>>>> -implicit-check-not='{{warning:|error:}}' %s >>>>>> -// RUN: clang-tidy >>>>>> -checks='-*,clang-diagnostic-*,google-explicit-constructor' >>>>>> %s -- -fan-unknown-option | FileCheck -check-prefix=CHECK2 >>>>>> -implicit-check-not='{{warning:|error:}}' %s >>>>>> -// RUN: clang-tidy -checks='-*,google-explicit- >>>>>> constructor,clang-diagnostic-literal-conversion' %s -- >>>>>> -fan-unknown-option | FileCheck -check-prefix=CHECK3 >>>>>> -implicit-check-not='{{warning:|error:}}' >>>>>> %s >>>>>> +// RUN: clang-tidy >>>>>> -checks='-*,clang-diagnostic-*,google-explicit-constructor' >>>>>> %s -- -fan-unknown-option 2>&1 | FileCheck -check-prefix=CHECK2 >>>>>> -implicit-check-not='{{warning:|error:}}' %s >>>>>> +// RUN: clang-tidy -checks='-*,google-explicit- >>>>>> constructor,clang-diagnostic-literal-conversion' %s -- >>>>>> -fan-unknown-option 2>&1 | FileCheck -check-prefix=CHECK3 >>>>>> -implicit-check-not='{{warning:|error:}}' %s >>>>>> // RUN: clang-tidy -checks='-*,modernize-use- >>>>>> override,clang-diagnostic-macro-redefined' %s -- >>>>>> -DMACRO_FROM_COMMAND_LINE | FileCheck -check-prefix=CHECK4 >>>>>> -implicit-check-not='{{warning:|error:}}' %s >>>>>> >>>>>> // CHECK1: error: error reading '{{.*}}.nonexistent.cpp' >>>>>> [clang-diagnostic-error] >>>>>> -// CHECK2: error: unknown argument: '-fan-unknown-option' >>>>>> [clang-diagnostic-error] >>>>>> -// CHECK3: error: unknown argument: '-fan-unknown-option' >>>>>> [clang-diagnostic-error] >>>>>> +// CHECK2: error: unknown argument: '-fan-unknown-option' >>>>>> +// CHECK3: error: unknown argument: '-fan-unknown-option' >>>>>> >>>>>> // CHECK2: :[[@LINE+2]]:9: warning: implicit conversion from >>>>>> 'double' to 'int' changes value from 1.5 to 1 [clang-diagnostic-literal- >>>>>> conversion] >>>>>> // CHECK3: :[[@LINE+1]]:9: warning: implicit conversion from >>>>>> 'double' to 'int' changes value >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> cfe-commits mailing list >>>>>> cfe-commits@lists.llvm.org >>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >>>>>> >>>>> >>>>
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits