Open ruedbi opened 3 years ago
Hi @ruedbi :
Glad to receive your reports. There are lots of information, something doesn't be checked, and an error(Q3). Seems something I forget to implement (struct, class, parameter, union). I will confirm it again with source code. Unimplemented functions I will create issues for them. About the error, I will try to duplicate later after those functions done.
Reply you later.
Hi @ruedbi:
Sorry, reply you late, a little busy recently.
1. About the 1st issue about constructor is not check.
Ctor is a function, but the name must be identical to class name. It will be confuse if value of General.Rules.ClassName
and General.Rules.FunctionName
are different in config file. So I skip checking the name of ctro and dtor.
2. "Parameters" are reported without configuration that could be set
YES. Now this tool checks parameter declare and variable declare with the same rule. I will make the General.Options.CheckParameter
work, making them can be checked separately.
3. Add any namespace around the code in e.g. 10.2.concepts.cpp and the errors will melt down to a few only I didn't get you, but I'm curious abt can it be compiled successfully after changing? If possible, can you show me your change?
4. I have some cases where cppnamelint stops after the first line of code. I cannot say when that happens, what the rule is? I got different result with you. Can you show me more details, sample code files will be better.
PS > type C:\petzone\cppnamelint\cppnamelint.git\source\test\sample\YouPlayGround.cpp
class BlaBla
{
int someVar;
};
PS > ./cppnamelint check C:\petzone\cppnamelint\cppnamelint.git\source\test\sample\YouPlayGround.cpp --config=C:\petzone\cppnamelint\cppnamelint.git\cppnamelint.toml
cppnamelint utility v0.3.4
---------------------------------------------------
File = YouPlayGround.cpp
Config = cppnamelint.toml
Checked = 1 [File:0 | Func: 0 | Param: 0 | Var: 1 | Enum: 0 | Struct: 0 | Union: 0 | Class: 1]
Error = 1 [File:0 | Func: 0 | Param: 0 | Var: 1 | Enum: 0 | Struct: 0 | Union: 0 | Class: 0]
------------------------------------------------------------
< 3, 1> Variable : someVar (int)
thanks for checking and sorry for the ugly formatting, I just don't get rid of that
ad 1): I understand that this means a change in cppnamelint (just to be sure)? Would be ok for me. ad 2) nice!
ad 3) I'm testing with 96c8b87 with unmodified settings file I'll attach the cpp-file with the namespace inserted, which gives me these results, one with namespace, one without: 10.2.concepts.zip
INFO : Log message will print to the file (y).
< 40, 12> Parameter : a (double)
< 40, 22> Parameter : b (double)
< 41, 5> Function : to_string
< 50, 5> Function : to_string
< 50, 22> Parameter : l (list
INFO : Log message will print to the file (y).
< 40, 12> Parameter : a (double)
< 40, 22> Parameter : b (double)
< 41, 5> Function : to_string
< 50, 5> Function : to_string
< 50, 22> Parameter : l (list
this is just a demo, it is not about wether the code can be compiled in the tutorial like that
ad 4): Unfortunately I cannot reproduce now either ... maybe the issue returns when (3) gets fixed, so I can work on my project code again
Hi @ruedbi
About the ad 3)
This tool is based on AST(LLVM's libtooling), so compile successfully is important.
not sure if I get you right I guess that by "compile successfully" you mean compile with clang via cppnamelint, right? Not the compile from the modern c++ (which I cannot do because of not allowed to install packages) if yes, it obviously does (checked with --verbose) if not, let me know thanks!
not sure if I get you right I guess that by "compile successfully" you mean compile with clang via cppnamelint, right? Not the compile from the modern c++ (which I cannot do because of not allowed to install packages) if yes, it obviously does (checked with --verbose) if not, let me know thanks!
According to the ad 3). The sample code in 10.2.concepts.zip
cannot be compiled with gcc too (https://godbolt.org/z/KP6Ezzco3). My meaning is to run this tool after projects were compiled successful, because it is an AST based utility.
got it 10.2 does not compile because of that new "concept" keyword (C++20), it is not related to the added "namespace" but sure that does not help here BTW: interesting tool (godbolt), thanks for the hint
I'll try again with my code and see what I'll find
I upgraded to 4883fa3
1) finding with --verbose: I cannot add include paths so that they appear in
2) Is it expected to check .h files explicitly, or should they only be checked implicitly when included from a .cpp file? I guess the latter one is true.
I tried another example that I appended. Both files in the root folder, they compile with gcc, cppnamelint with -include, default toml file: ./build/linux/output/cppnamelint check --config cppnamelint.toml -include . simple.cpp
cppnamelint utility v0.3.4
< 5, 5> Variable : a_Test (BlaBla)
a_Test is detected correctly, but BlaBla itself and some_Var are not detected so it looks like the header file is not really checked - is that correct? thanks!
Hi @dougpuob,
could you please give the simple.zip from above a try? BTW: I'm on 4883fa3 now, using Ubuntu 18.04.
It very much looks like the simple.h is not included when clang tries to build the simple.cpp. This could be a duplicate of your issue https://github.com/dougpuob/cppnamelint/issues/52 , not sure. When I inlude the declaration from the header file directly into the cpp file, I get one more finding (as expected):
INFO : Log message will print to the file (y).
< 6, 1> Variable : some_Var (int) < 11, 5> Variable : a_Test (BlaBla)
clang version 12.0.0 (https://github.com/llvm/llvm-project.git 4918a3d138b907a571f496661b5367e090e1e8bb) Target: x86_64-unknown-linux-gnu Thread model: posix InstalledDir: /home/ruedbi/projects/cppnamelint/build/linux/output Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/8 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.5.0 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8 Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8 Candidate multilib: .;@m64 Selected multilib: .;@m64 Found CUDA installation: /usr/local/cuda, version 10.0 clang Invocation: "/home/ruedbi/projects/cppnamelint/build/linux/output/clang-tool" "-cc1" "-triple" "x86_64-unknown-linux-gnu" "-fsyntax-only" "-disable-free" "-disable-llvm-verifier" "-discard-value-names" "-main-file-name" "simple.cpp" "-mrelocation-model" "static" "-mframe-pointer=all" "-fmath-errno" "-fno-rounding-math" "-mconstructor-aliases" "-munwind-tables" "-target-cpu" "x86-64" "-tune-cpu" "generic" "-fno-split-dwarf-inlining" "-debugger-tuning=gdb" "-v" "-resource-dir" "/home/ruedbi/projects/cppnamelint/build/linux/lib/clang/12.0.0" "-I" "/home/ruedbi/projects/cppnamelint/." "-internal-isystem" "/usr/lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8" "-internal-isystem" "/usr/lib/gcc/x86_64-linux-gnu/8/../../../../include/x86_64-linux-gnu/c++/8" "-internal-isystem" "/usr/lib/gcc/x86_64-linux-gnu/8/../../../../include/x86_64-linux-gnu/c++/8" "-internal-isystem" "/usr/lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/backward" "-internal-isystem" "/usr/local/include" "-internal-isystem" "/home/ruedbi/projects/cppnamelint/build/linux/lib/clang/12.0.0/include" "-internal-externc-isystem" "/usr/include/x86_64-linux-gnu" "-internal-externc-isystem" "/include" "-internal-externc-isystem" "/usr/include" "-fdeprecated-macro" "-fdebug-compilation-dir" "/home/ruedbi/projects/cppnamelint" "-ferror-limit" "19" "-fgnuc-version=4.2.1" "-fcxx-exceptions" "-fexceptions" "-fcolor-diagnostics" "-faddrsig" "-x" "c++" "/home/ruedbi/projects/cppnamelint/simple.cpp"
clang -cc1 version 12.0.0 based upon LLVM 12.0.0 default target x86_64-unknown-linux-gnu ignoring nonexistent directory "/home/ruedbi/projects/cppnamelint/build/linux/lib/clang/12.0.0/include" ignoring nonexistent directory "/include" ignoring duplicate directory "/usr/lib/gcc/x86_64-linux-gnu/8/../../../../include/x86_64-linux-gnu/c++/8"
< 5, 5> Variable : a_Test (BlaBla)
and the log is
[2021-07-30 15:30:14.121] [] [info] [2021-07-30 15:30:14.121] [] [info] [2021-07-30 15:30:14.121] [] [info] ======================================================================================================================================================= [2021-07-30 15:30:14.121] [] [info] 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 [2021-07-30 15:30:14.121] [] [info] 0123456789112345678921234567893123456789412345678951234567896123456789712345678981234567899123456789012345678911234567892123456789312345678941234567895 [2021-07-30 15:30:14.121] [] [info] ======================================================================================================================================================= [2021-07-30 15:30:14.121] [] [info] INFO : ContentStartsPosition = 55. [2021-07-30 15:30:14.121] [] [info] INFO : Log message will print to the file (y). [2021-07-30 15:30:14.121] [] [info] bCheckFileName = false [2021-07-30 15:30:14.121] [] [info] bCheckFunctionName = true [2021-07-30 15:30:14.121] [] [info] bCheckEnum = true [2021-07-30 15:30:14.121] [] [info] bCheckStruct = true [2021-07-30 15:30:14.121] [] [info] bCheckClass = true [2021-07-30 15:30:14.121] [] [info] bCheckVariableName = true [2021-07-30 15:30:14.121] [] [info] Source File = /home/ruedbi/projects/cppnamelint/simple.cpp [2021-07-30 15:30:14.121] [] [info] Config File = cppnamelint.toml [2021-07-30 15:30:14.121] [] [info] OutputJson = [2021-07-30 15:30:14.121] [] [info] -I %s [2021-07-30 15:30:14.121] [] [info] --language=c++ [2021-07-30 15:30:14.121] [] [info] Skipped, becuase config file is disable. (bCheckFileName) [2021-07-30 15:30:14.128] [] [info] [MyASTVisitor] (== [2021-07-30 15:30:14.128] [] [info] [MyASTVisitor] ==) [2021-07-30 15:30:14.128] [] [info] [VisitFunctionDecl] (== [2021-07-30 15:30:14.128] [] [info] [2021-07-30 15:30:14.128] [] [info] V==start line====================================================================V [2021-07-30 15:30:14.128] [] [info] ValueDecl.isWeak() = false [2021-07-30 15:30:14.128] [] [info] FunctionDecl.getNameInfo() = main [2021-07-30 15:30:14.128] [] [info] FunctionDecl.isDefined() = true [2021-07-30 15:30:14.128] [] [info] FunctionDecl.isThisDeclarationADefinition() = true [2021-07-30 15:30:14.128] [] [info] FunctionDecl.doesThisDeclarationHaveABody() = true [2021-07-30 15:30:14.128] [] [info] FunctionDecl.isVariadic() = false [2021-07-30 15:30:14.128] [] [info] FunctionDecl.isVirtualAsWritten() = false [2021-07-30 15:30:14.128] [] [info] FunctionDecl.isPure() = false [2021-07-30 15:30:14.128] [] [info] FunctionDecl.isDefaulted() = false [2021-07-30 15:30:14.128] [] [info] FunctionDecl.hasPrototype() = true [2021-07-30 15:30:14.128] [] [info] FunctionDecl.isMain() = true [2021-07-30 15:30:14.128] [] [info] FunctionDecl.isExternC() = false [2021-07-30 15:30:14.128] [] [info] FunctionDecl.isInExternCContext() = false [2021-07-30 15:30:14.128] [] [info] FunctionDecl.isInExternCXXContext() = false [2021-07-30 15:30:14.128] [] [info] FunctionDecl.isGlobal() = true [2021-07-30 15:30:14.128] [] [info] FunctionDecl.isInlined() = false [2021-07-30 15:30:14.128] [] [info] ---------------------------------------------------------------------------------- [2021-07-30 15:30:14.128] [] [info] NamedDecl.getNameAsString() = main [2021-07-30 15:30:14.128] [] [info] NamedDecl.getDeclName() = main [2021-07-30 15:30:14.128] [] [info] NamedDecl.getDeclKindName() = Function [2021-07-30 15:30:14.128] [] [info] NamedDecl.getQualifiedNameAsString() = main [2021-07-30 15:30:14.128] [] [info] NamedDecl.isCanonicalDecl() = true [2021-07-30 15:30:14.128] [] [info] NamedDecl.isCXXClassMember() = false [2021-07-30 15:30:14.128] [] [info] NamedDecl.isCXXInstanceMember() = false [2021-07-30 15:30:14.128] [] [info] NamedDecl.isDefinedOutsideFunctionOrMethod() = true [2021-07-30 15:30:14.128] [] [info] NamedDecl.isDeprecated() = false [2021-07-30 15:30:14.128] [] [info] NamedDecl.isExternallyDeclarable() = true [2021-07-30 15:30:14.128] [] [info] NamedDecl.isExternallyVisible() = true [2021-07-30 15:30:14.128] [] [info] NamedDecl.isFirstDecl() = true [2021-07-30 15:30:14.128] [] [info] NamedDecl.isFromASTFile() = false [2021-07-30 15:30:14.128] [] [info] NamedDecl.isFunctionOrFunctionTemplate() = true [2021-07-30 15:30:14.128] [] [info] NamedDecl.isImplicit() = false [2021-07-30 15:30:14.128] [] [info] NamedDecl.isInAnonymousNamespace() = false [2021-07-30 15:30:14.128] [] [info] NamedDecl.isInStdNamespace() = false [2021-07-30 15:30:14.128] [] [info] NamedDecl.isInvalidDecl() = false [2021-07-30 15:30:14.128] [] [info] NamedDecl.isLinkageValid() = true [2021-07-30 15:30:14.128] [] [info] NamedDecl.isLocalExternDecl() = false [2021-07-30 15:30:14.128] [] [info] NamedDecl.isModulePrivate() = false [2021-07-30 15:30:14.128] [] [info] NamedDecl.isOutOfLine() = false [2021-07-30 15:30:14.128] [] [info] NamedDecl.isParameterPack() = false [2021-07-30 15:30:14.128] [] [info] NamedDecl.isReferenced() = false [2021-07-30 15:30:14.128] [] [info] NamedDecl.isTemplated() = false [2021-07-30 15:30:14.128] [] [info] NamedDecl.isTemplateDecl() = false [2021-07-30 15:30:14.128] [] [info] NamedDecl.isTemplateParameter() = false [2021-07-30 15:30:14.128] [] [info] NamedDecl.isTemplateParameterPack() = false [2021-07-30 15:30:14.128] [] [info] NamedDecl.isThisDeclarationReferenced() = false [2021-07-30 15:30:14.128] [] [info] NamedDecl.isTopLevelDeclInObjCContainer() = false [2021-07-30 15:30:14.128] [] [info] NamedDecl.isUnavailable() = false [2021-07-30 15:30:14.128] [] [info] NamedDecl.isUsed() = false [2021-07-30 15:30:14.128] [] [info] NamedDecl.isWeakImported() = false [2021-07-30 15:30:14.128] [] [info] ^==end line=======================================================================^ [2021-07-30 15:30:14.128] [] [info] [VisitFunctionDecl] ==) [2021-07-30 15:30:14.128] [] [info] [VisitFunctionTypeLoc] (== [2021-07-30 15:30:14.128] [] [info] [VisitFunctionTypeLoc] ==) [2021-07-30 15:30:14.128] [] [info] [VisitVarDecl] (== [2021-07-30 15:30:14.128] [] [info] [2021-07-30 15:30:14.128] [] [info] V==start line====================================================================V [2021-07-30 15:30:14.128] [] [info] ValueDecl.isWeak() = false [2021-07-30 15:30:14.128] [] [info] VarDecl.isExternC() = false [2021-07-30 15:30:14.128] [] [info] VarDecl.isInExternCContext() = false [2021-07-30 15:30:14.128] [] [info] VarDecl.isInExternCXXContext() = false [2021-07-30 15:30:14.128] [] [info] VarDecl.isLocalVarDecl() = true [2021-07-30 15:30:14.128] [] [info] VarDecl.isLocalVarDeclOrParm() = true [2021-07-30 15:30:14.128] [] [info] VarDecl.isFunctionOrMethodVarDecl() = true [2021-07-30 15:30:14.128] [] [info] VarDecl.isStaticDataMember() = false [2021-07-30 15:30:14.128] [] [info] VarDecl.isFileVarDecl() = false [2021-07-30 15:30:14.128] [] [info] VarDecl.hasInit() = true [2021-07-30 15:30:14.128] [] [info] ---------------------------------------------------------------------------------- [2021-07-30 15:30:14.128] [] [info] NamedDecl.getNameAsString() = a_Test [2021-07-30 15:30:14.129] [] [info] NamedDecl.getDeclName() = a_Test [2021-07-30 15:30:14.129] [] [info] NamedDecl.getDeclKindName() = Var [2021-07-30 15:30:14.129] [] [info] NamedDecl.getQualifiedNameAsString() = a_Test [2021-07-30 15:30:14.129] [] [info] NamedDecl.isCanonicalDecl() = true [2021-07-30 15:30:14.129] [] [info] NamedDecl.isCXXClassMember() = false [2021-07-30 15:30:14.129] [] [info] NamedDecl.isCXXInstanceMember() = false [2021-07-30 15:30:14.129] [] [info] NamedDecl.isDefinedOutsideFunctionOrMethod() = false [2021-07-30 15:30:14.129] [] [info] NamedDecl.isDeprecated() = false [2021-07-30 15:30:14.129] [] [info] NamedDecl.isExternallyDeclarable() = false [2021-07-30 15:30:14.129] [] [info] NamedDecl.isExternallyVisible() = false [2021-07-30 15:30:14.129] [] [info] NamedDecl.isFirstDecl() = true [2021-07-30 15:30:14.129] [] [info] NamedDecl.isFromASTFile() = false [2021-07-30 15:30:14.129] [] [info] NamedDecl.isFunctionOrFunctionTemplate() = false [2021-07-30 15:30:14.129] [] [info] NamedDecl.isImplicit() = false [2021-07-30 15:30:14.129] [] [info] NamedDecl.isInAnonymousNamespace() = false [2021-07-30 15:30:14.129] [] [info] NamedDecl.isInStdNamespace() = false [2021-07-30 15:30:14.129] [] [info] NamedDecl.isInvalidDecl() = false [2021-07-30 15:30:14.129] [] [info] NamedDecl.isLinkageValid() = true [2021-07-30 15:30:14.129] [] [info] NamedDecl.isLocalExternDecl() = false [2021-07-30 15:30:14.129] [] [info] NamedDecl.isModulePrivate() = false [2021-07-30 15:30:14.129] [] [info] NamedDecl.isOutOfLine() = false [2021-07-30 15:30:14.129] [] [info] NamedDecl.isParameterPack() = false [2021-07-30 15:30:14.129] [] [info] NamedDecl.isReferenced() = true [2021-07-30 15:30:14.129] [] [info] NamedDecl.isTemplated() = false [2021-07-30 15:30:14.129] [] [info] NamedDecl.isTemplateDecl() = false [2021-07-30 15:30:14.129] [] [info] NamedDecl.isTemplateParameter() = false [2021-07-30 15:30:14.129] [] [info] NamedDecl.isTemplateParameterPack() = false [2021-07-30 15:30:14.129] [] [info] NamedDecl.isThisDeclarationReferenced() = true [2021-07-30 15:30:14.129] [] [info] NamedDecl.isTopLevelDeclInObjCContainer() = false [2021-07-30 15:30:14.129] [] [info] NamedDecl.isUnavailable() = false [2021-07-30 15:30:14.129] [] [info] NamedDecl.isUsed() = true [2021-07-30 15:30:14.129] [] [info] NamedDecl.isWeakImported() = false [2021-07-30 15:30:14.129] [] [info] ^==end line=======================================================================^ [2021-07-30 15:30:14.129] [] [info] [VisitVarDecl] ==) [2021-07-30 15:30:14.129] [] [info] [VisitTagTypeLoc] (== [2021-07-30 15:30:14.129] [] [info] [VisitTagTypeLoc] ==) [2021-07-30 15:30:14.129] [] [info] [VisitReturnStmt] (== [2021-07-30 15:30:14.129] [] [info] MyQualType.getAsString() = int [2021-07-30 15:30:14.129] [] [info] [VisitReturnStmt] ==) [2021-07-30 15:30:14.129] [] [info] Inc[ 1] = . [2021-07-30 15:30:14.129] [] [info] Checked = 2 [File:0 | Func: 1 | Param: 0 | Var: 1 | Enum: 0 | Struct: 0 | Union: 0 | Class: 0] [2021-07-30 15:30:14.129] [] [info] Error = 1 [File:0 | Func: 0 | Param: 0 | Var: 1 | Enum: 0 | Struct: 0 | Union: 0 | Class: 0] [2021-07-30 15:30:14.129] [] [info] ------------------------------------------------------------ [2021-07-30 15:30:14.129] [] [info] < 5, 5> Variable : a_Test (BlaBla) [2021-07-30 15:30:14.131] [] [info] Assert.nErrorOccurred = 0 [2021-07-30 15:30:14.131] [] [info] Assert.nInvalidDecl = 0 [2021-07-30 15:30:14.131] [] [info] Assert.nNumWarnings = 0 [2021-07-30 15:30:14.131] [] [info] Checked.nClass = 0 [2021-07-30 15:30:14.131] [] [info] Checked.nEnum = 0 [2021-07-30 15:30:14.131] [] [info] Checked.nFile = 0 [2021-07-30 15:30:14.131] [] [info] Checked.nFunction = 1 [2021-07-30 15:30:14.131] [] [info] Checked.nParameter = 0 [2021-07-30 15:30:14.131] [] [info] Checked.nStruct = 0 [2021-07-30 15:30:14.131] [] [info] Checked.nUnion = 0 [2021-07-30 15:30:14.131] [] [info] Checked.nVariable = 1 [2021-07-30 15:30:14.131] [] [info] Error.nClass = 0 [2021-07-30 15:30:14.131] [] [info] Error.nEnum = 0 [2021-07-30 15:30:14.131] [] [info] Error.nFile = 0 [2021-07-30 15:30:14.131] [] [info] Error.nFunction = 0 [2021-07-30 15:30:14.131] [] [info] Error.nParameter = 0 [2021-07-30 15:30:14.131] [] [info] Error.nStruct = 0 [2021-07-30 15:30:14.131] [] [info] Error.nUnion = 0 [2021-07-30 15:30:14.131] [] [info] Error.nVariable = 1 [2021-07-30 15:30:14.131] [] [info] Program is going to close. (iRet=1)
Thanks!
Hi @ruedbi Reply your questions.
finding with --verbose: Please reference to the block. (https://github.com/dougpuob/cppnamelint/blob/master/source/Common.cpp#L87)
Is it expected to check .h files explicitly, or should they only be checked implicitly when included from a .cpp file?
Please reference to block (https://github.com/dougpuob/cppnamelint/blob/master/source/Common.cpp#L110)
Use --language=c++
option.
a_Test is detected correctly, but BlaBla... This is an issue I tried to fix but I forget updating it the trunk on another PC. I will tag you if done later.
Sorry to reply you late, next time you can ping me directly. And if possible could you please file issues one by one making it clear. You did nice to this project and must hard to test and compare it with clang, thank you. Issues that you have ideas to fix or improve, PR is also welcome.
Another information about this project, I am still trying to migrate features to clang-tidy too, at that time this project will be archived.
based on 96c8b87
1) looks like that a constructor is not checked for the class name pattern, but the one of the function (here: lowerCamel), like so: File = 2.04.initializer.list.cpp Config = cppnamelint.toml Checked = 16 [File:0 | Func: 4 | Param: 4 | Var: 8 | Enum: 0 | Struct: 0 | Union: 0 | Class: 2] Error = 2 [File:0 | Func: 2 | Param: 0 | Var: 0 | Enum: 0 | Struct: 0 | Union: 0 | Class: 0]
< 18, 5> Function : Foo < 24, 5> Function : MagicFoo
The same applies to structs: File = 10.2.concepts.cpp Config = cppnamelint.toml Checked = 35 [File:0 | Func: 13 | Param: 7 | Var: 12 | Enum: 0 | Struct: 3 | Union: 0 | Class: 1] Error = 26 [File:0 | Func: 7 | Param: 7 | Var: 10 | Enum: 0 | Struct: 2 | Union: 0 | Class: 0]
< 30, 5> Function : Person
2) "Parameters" are reported without configuration that could be set, and disable reporting is also not possible (the TODO?)
3) Add any namespace around the code in e.g. 10.2.concepts.cpp and the errors will melt down to a few only:
File = 10.2.concepts.cpp Config = cppnamelint.toml Checked = 13 [File:0 | Func: 3 | Param: 3 | Var: 4 | Enum: 0 | Struct: 3 | Union: 0 | Class: 0] Error = 9 [File:0 | Func: 2 | Param: 3 | Var: 2 | Enum: 0 | Struct: 2 | Union: 0 | Class: 0]
< 40, 16> Parameter : a (double) < 40, 26> Parameter : b (double) < 41, 9> Function : to_string < 50, 9> Function : to_string < 50, 26> Parameter : l (list)
< 52, 13> Variable : s (string)
< 62, 5> Variable : to_string (string)
4) I have some cases where cppnamelint stops after the first line of code. I cannot say when that happens / what the rule is, baut at least "VariableName = 2" (or 3) seems to be required with UpperCamel classe name (other combinations not tested). I could create a simple class like class BlaBla { int someVar; }; then the class gets detected as a variable Checked = 1 [File:0 | Func: 0 | Param: 0 | Var: 1 | Enum: 0 | Struct: 0 | Union: 0 | Class: 0] Error = 1 [File:0 | Func: 0 | Param: 0 | Var: 1 | Enum: 0 | Struct: 0 | Union: 0 | Class: 0]
< 1, 1> Variable : BlaBla (class) the log then ends with [2021-04-20 12:49:39.948] [] [info] Program is going to close. (iRet=1) the real variable someVar does not even get checked
Can you reproduce that issue?
All for now, thanks a lot for your efforts!