Commit graph

81 commits

Author SHA1 Message Date
w0rp
7d4ce4e6aa
Close #3325 - Apply new formatting where possible 2020-08-28 19:50:36 +01:00
w0rp
2b785688ea
#3299 Merge gcc and clang into a cc linter
Users can easily be confused when they set some options for a C or C++
compiler, and another compiler is run with different options, which
still reports errors. To remedy this, the existing `gcc` and `clang`
linters have been replaced with a `cc` linter that will run either
compiler.

This is a breaking change for ALE v3.0.0.
2020-08-20 01:49:14 +01:00
w0rp
92cada9913
Merge pull request #3056 from ts826848/remove-ale-std-if-already-in-GetCFlags
[WIP] Avoid overriding parsed C/C++ -std=* flag
2020-08-19 00:21:22 +01:00
w0rp
d3f410b6f7
Fix #1608 - Treat .h as C++ files for C++ clang-tidy 2020-08-10 02:33:50 +01:00
tsjordan-eng
f17b74679f
fix cppcheck for 1.89+, and add column support (#3030)
* fix cppcheck for 1.89+, and add column support

In cppcheck 1.89 the output changed to be more like GCC. This commit
forces any version of cppcheck to output in that same format. This also
allows for ALE to pick up the linter's column information

* Add parameters to tests. Vader passes.

* Fix c cppcheck for v1.89
2020-08-06 20:50:44 +01:00
Tomas Janousek
4fbfcc9dec ccls: Detect build dir and set compilationDatabaseDirectory
Fixes #2621
2020-04-18 13:57:57 +02:00
Alex Wang
fc6677d405 Avoid overriding parsed C/C++ -std=* flag
ALE appends flags from {c,cpp}_{clang,gcc}_options after those found by
parsing compile_commands.json or Makefile output. If -std=* flags are
present in both the ALE flags and parsed flags, the last one present
(i.e., ALE's -std=* flag) will determine the mode the compiler works in.
This can result in errors showing up in vim but not in the actual build
or vice-versa.

For example, say you have foo.cpp:

    #include <type_traits>
    int main() {
        return std::is_same_v<float, int>;
    }

If cpp_clang_options contains -std=c++17 and -std=c++14 is parsed from
compile_commands.json, then ALE would end up running something like:

    clang++ -S -x c++ -fsyntax-only -std=c++14 -std=c++17 - < foo.cpp

This would result in no errors showing up in Vim, but the actual build
would fail with:

    <stdin>:3:14: error: no template named 'is_same_v' in namespace 'std'; did you mean 'is_same'?
            return std::is_same_v<float, int>;
                   ~~~~~^~~~~~~~~
                        is_same
    /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/type_traits:872:61: note: 'is_same' declared here
    template <class _Tp, class _Up> struct _LIBCPP_TEMPLATE_VIS is_same           : public false_type {};
                                                                ^
    <stdin>:3:35: error: expected '(' for function-style cast or type construction
            return std::is_same_v<float, int>;
                   ~~~~~~~~~~~~~~~~~~~~~~~~~~^
    2 errors generated.

as the actual build would not have the -std=c++17 flag added by ALE.

If cpp_clang_options contains -std=c++14 and -std=c++17 is parsed from
compile_commands.json, then the opposite problem would occur. ALE would
end up running something like:

    clang++ -S -x c++ -fsyntax-only -std=c++17 -std=c++14 - < foo.cpp

and would show an error on line 3 of foo.cpp:

    [clang] No template named 'is_same_v' in namespace 'std'; did you mean 'is_same'? (fix available)

The actual build, on the other hand, would succeed without any
complaints.

Removing -std=* from ALE's flags if it is already present in the parsed
flags ensures that the wrong -std=* flag is not used.

An alternative would have been to switch the order in which parsed flags
and ALE flags were concatenated when producing the command to execute,
but that could prevent a user from intentionally using ALE's flags to
override some other flags, e.g.  -W* flags to enable/disable warnings in
a project whose flags are not under the developer's control.

-std=* flags are also present in cuda/nvcc.vim, objc/clang.vim,
objcpp/clang.vim, and vhdl/ghdl.vim, but none of those linters appear to
parse compile_commands.json or `make` output.
2020-03-17 22:51:54 -04:00
w0rp
0d4dfb61dc
Merge pull request #2700 from elebow/clangcheck-no-color-diagnostics
clangcheck: Add -fno-color-diagnostics (closes #2188)
2019-10-28 13:14:14 +00:00
w0rp
dfe9b7cc26
Merge remote-tracking branch 'murfalo/clangd-compile-commands' 2019-10-17 17:54:02 +01:00
Murfalo
a62f26434a Added tests for clangd compile commands dectection 2019-10-09 13:40:04 -04:00
Greg Anders
7795898841 Add tests for clangtidy with Makefile 2019-10-06 10:29:23 -06:00
Greg Anders
06a97a8541 Use Makefile output with clang-tidy when useful
In the case where neither a build directory nor a compile_commands.json
file is found, use the output of `make -n` to provide options to
clang-tidy.
2019-10-06 10:29:17 -06:00
Murfalo
618f2d71fc Added automatic compile-commands-dir arg to ale_cpp_clangd linter 2019-10-03 13:22:13 -04:00
Eddie Lebow
62602569b3
clangcheck: Add -fno-color-diagnostics
Also change to the modern --extra-arg syntax.
2019-09-26 20:28:33 -04:00
Jonathan Vander Mey
3c799abb44 Add additional option setting for clangtidy linter
The existing option setting handles setting additional compile flags to
pass to clang-tidy. The new option setting added here allows setting
additional clang-tidy specific flags to be passed as well.
Fixes #2324
2019-06-08 15:35:08 -04:00
Christoph Koehler
4129c356e8
Fix #1279 - Run cppcheck differently when modified
cppcheck is now run without the --project option and from the buffer's
directory instead when the buffer has been modified. Saving the buffer
will get results by linting the project instead.
2019-06-03 21:54:23 +01:00
w0rp
28819eedd3
Close #2359 - Find compile_commands.json in build dirs for cppcheck 2019-05-20 22:08:03 +01:00
w0rp
143af2b9fd
Fix #2421 - Use compile_commands.json in build dirs to find roots 2019-05-20 19:57:08 +01:00
w0rp
5e64acc6ab
Fix #2512 - Use -o /dev/null for gcc linting 2019-05-20 13:00:32 +01:00
w0rp
3bebcb5d48
#2132 - Replace command_chain and chain_with with ale#command#Run 2019-04-07 14:58:06 +01:00
w0rp
883978ece9
#2132 - Replace all uses of foo_callback with foo 2019-02-22 18:05:04 +00:00
w0rp
3e11cbd18d
Update syntax checking
* Line continuation characters should be on the same lines.
* .vim file line indentation should be a multiple of 4.
2019-02-06 18:05:13 +00:00
Andreas Hollmann
ef7b4af917 Do not enable all clang-tidy checks by default 2018-10-30 11:46:53 +01:00
Ye Jingchen
8891b7c349 Move ccls functions to autoload/ale/handler
Tests are kept as-is.
2018-09-28 03:26:57 +08:00
Ye Jingchen
626e47f5c9 Add ccls tests 2018-09-26 22:50:43 +08:00
Ye Jingchen
56658fd3ad Add ccls support for C/C++/ObjC 2018-09-26 20:09:37 +08:00
w0rp
d476578a40
Improve ALE project style checking
* The project style linter now runs while you type.
* Now the scripts for checking the project require blank lines.
* Many style issues have been found and fixed.
2018-09-04 16:51:18 +01:00
fenuks
9d7c48038c
Add clazy as cpp linter 2018-08-24 10:52:33 +01:00
Bruno R. Barreyra
795122a042 Enabling clangd for cpp, objc and objcpp 2018-08-23 05:58:06 +02:00
kodemeister
0702e4699e Add blank lines to conform the coding standards 2018-08-09 09:06:30 +06:00
kodemeister
212e3b0b2f Use .cquery file to detect the project root 2018-08-07 01:39:04 +06:00
w0rp
217284360d
Simplify the code for most linters and tests with closures 2018-08-02 23:44:12 +01:00
w0rp
16d0c52d24
Indicate that a C compiler failed due to problems in a header file 2018-07-30 20:09:43 +01:00
w0rp
ac4bac8ea4
Add support for parsing compile_commands.json files for C compilers 2018-07-29 19:24:27 +01:00
w0rp
9ddf1b6a05
Make the language option for LSP linters optional 2018-07-04 13:12:58 +01:00
Ben Falconer
d1be72f438 #1635 - Use the project base rather than its parent for cquery 2018-06-07 00:12:38 +01:00
Ben Falconer
20db9ab719 Add the cquery LSP #1475 #1594 2018-06-06 17:58:47 +01:00
w0rp
da9a005c60 Fix #1490 - Rename the g++ linter to gcc, and add an alias for the old name 2018-04-10 09:31:22 +01:00
christian-gibbons
f1d56a343e Flawfinder for C++:
Fix missing variable causing flawfinder to fail for c++
2018-03-28 14:09:03 +00:00
w0rp
95ec9bb780
#1167 Use the make -n parsing for C++ compilers, and document the new option 2018-03-27 19:24:22 +01:00
Christian-Gibbons
b586eba4a4 Handle flawfinder severity level (#1400)
* Handle flawfinder severity level
* Reverted code allowing Flawfinder to piggyback off of gcc's format handler
* Gave Flawfinder its own format handler and made requested changes.
2018-03-10 10:44:55 +00:00
Christian-Gibbons
82f8a04e18 New linter: Flawfinder (#1361)
* Flawfinder support added for C and C++

A minor modification to gcc handler was made to support flawfinder's
single-line output format that does not have a space following the
colon denoting the warning level.  gcc handler still passes its
Vader tests after this modification.

* Documentation fixes

* Revert documentation regression

* Added Flawfinder to table of contents

* Removed trailing whitespace

* Follow ALE conventions better

Added additional documentation and Vader tests
2018-02-25 14:11:04 +00:00
Jonatan Olofsson
ff8d4c5286 Fix #1255: Move extra clang-check args to before user options 2018-01-02 16:09:38 +01:00
w0rp
87616c5e91 #782 - Do not set the build directory for clang-tidy for header files, which does not work 2017-07-20 14:52:24 +01:00
w0rp
eab77b7072 #703 Add arguments to avoid generating plist files if no build directory is detected for clang-check 2017-07-17 10:19:08 +01:00
w0rp
3b1bc2bd13 Fix another executable callback typo 2017-07-17 00:19:33 +01:00
w0rp
23ea62d40a #711 - Make the cpplint executable configurable 2017-07-17 00:17:59 +01:00
w0rp
3352a6c9df #711 - Make the clangtidy executable configurable 2017-07-17 00:07:18 +01:00
w0rp
fe70742bb9 #711 - Make the clangcheck executable configurable 2017-07-16 23:35:10 +01:00
w0rp
9e83878900 #711 - Make the gcc executables configurable 2017-07-16 22:41:15 +01:00