carlosgalvezp added inline comments.

================
Comment at: clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h:50
 struct ClangTidyStats {
-  ClangTidyStats()
-      : ErrorsDisplayed(0), ErrorsIgnoredCheckFilter(0), 
ErrorsIgnoredNOLINT(0),
-        ErrorsIgnoredNonUserCode(0), ErrorsIgnoredLineFilter(0) {}
+  int ErrorsDisplayed{0};
+  int ErrorsIgnoredCheckFilter{0};
----------------
aaron.ballman wrote:
> carlosgalvezp wrote:
> > aaron.ballman wrote:
> > > carlosgalvezp wrote:
> > > > whisperity wrote:
> > > > > carlosgalvezp wrote:
> > > > > > salman-javed-nz wrote:
> > > > > > > What's the prevalent style for class member initialization? `=` 
> > > > > > > or `{}`?
> > > > > > > cppcoreguidelines-prefer-member-initializer defaults to `{}` but 
> > > > > > > I have seen both types in the code.
> > > > > > I tried to find this info in the LLVM coding guidelines but didn't 
> > > > > > find anything, so I assume it's maybe up to developers' discretion.
> > > > > > 
> > > > > > I prefer using braced initialization, since it prevents implicit 
> > > > > > conversions:
> > > > > > https://godbolt.org/z/4sP4rGsrY
> > > > > > 
> > > > > > More strict guidelines like Autosar enforce this. Also 
> > > > > > CppCoreGuidelines prefer that style as you point out.
> > > > > I think this is such a new and within LLVM relatively unused feature 
> > > > > (remember we are still pegged to C++14...) that we do not have a 
> > > > > consensus on style, and perhaps warrants discussing it on the mailing 
> > > > > list.
> > > > Just to clarify - this is C++11/14 syntax, nothing really fancy. I'm 
> > > > happy to change to " = 0" if people want, I don't have a strong opinion 
> > > > here.
> > > I've seen both styles but I believe I've seen `=` used more often for 
> > > scalar initialization and `{}` used more often for ctor initialization. 
> > > e.g.,
> > > ```
> > > int a = 0; // More often
> > > int a{0}; // Less often
> > > 
> > > ClassFoo c = {1, 2, "three"}; // Less often
> > > ClassFoo c{1, 2, "three"}; // More often
> > > ```
> > Thanks for the info! IMO it's nice to have 1 way of initializing things 
> > consistently. Brace initialization is called "uniform initialization" for 
> > that reason - with the aim of uniforming the way of initializing data.
> > 
> > As said I have no strong opinion here, so I'll do what you guys tell me :) 
> I usually refer to it as "unicorn initialization" because there's not nearly 
> as uniform as people might expect. :-D I don't have strong preferences here 
> though.
:) 


================
Comment at: clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h:61-64
-  unsigned errorsIgnored() const {
+  int errorsIgnored() const {
     return ErrorsIgnoredNOLINT + ErrorsIgnoredCheckFilter +
            ErrorsIgnoredNonUserCode + ErrorsIgnoredLineFilter;
   }
----------------
aaron.ballman wrote:
> carlosgalvezp wrote:
> > aaron.ballman wrote:
> > > The type changes overflow here from well-defined behavior to undefined 
> > > behavior. I don't think that's a serious concern (we have error limits 
> > > already), but in general, I don't think we should be changing types like 
> > > this without stronger rationale. This particular bit feels like churn 
> > > without benefit -- what do we gain by introducing the possibility for UB 
> > > here? (I'm not strongly opposed, but I get worried when well-defined code 
> > > turns into potentially undefined code in the name of an NFC cleanup.)
> > Do we have coding guidelines for when to use signed vs unsigned? I have 
> > quite ugly past experiences using unsigned types for arithmetic and as 
> > "counters" so these kinds of things really catch my eye quickly. This goes 
> > in line with e.g. the [[ 
> > https://google.github.io/styleguide/cppguide.html#Integer_Types | Google 
> > style guide ]].
> > 
> > Yes, you are correct that signed int overflow is UB, but would that then be 
> > an argument for banning signed ints in the codebase at all? IMO what's more 
> > important is to know the domain in which this is being applied. Do we 
> > expect people to have more than 2^31 linter warnings? If we do, would 2^32 
> > really solve the problem, or just delay it? Maybe the proper solution is to 
> > go to 64-bit ints if that's an expected use case.
> > 
> > Anyway if this is a concern I'm happy to revert and take the discussion 
> > outside the patch. We used to be over-defensive in this topic as well (UB 
> > is not to be taken lightly) but realized that perhaps the problem lies 
> > somewhere else.
> > Do we have coding guidelines for when to use signed vs unsigned?
> 
> We don't, and I don't think we could even if we wanted to. There are times 
> when unsigned is correct and there are times when signed is correct, and no 
> blanket rule covers all the cases.
> 
> > Yes, you are correct that signed int overflow is UB, but would that then be 
> > an argument for banning signed ints in the codebase at all? 
> 
> No. My point about the change to UB wasn't "I think this is dangerous" -- as 
> I mentioned, we have limits on the number of errors that can be emitted, so I 
> don't believe we can hit the UB in practice. It's more that changing types is 
> rarely an NFC change without further validation and it wasn't clear if this 
> validation had happened. Changing types is a nontrivial (and rarely NFC) 
> change in C++.
> 
> > Anyway if this is a concern I'm happy to revert and take the discussion 
> > outside the patch. We used to be over-defensive in this topic as well (UB 
> > is not to be taken lightly) but realized that perhaps the problem lies 
> > somewhere else.
> 
> Personally, I'm not super motivated to see a change here, but I'm also not 
> opposed to it. It mostly just feels like churn. If we're solving a problem, 
> I'm happy to see the changes, but we should call out what problem we're 
> solving in the patch summary. But this seems more a style choice and I 
> certainly wouldn't want to see these changes used as a precedent to go switch 
> more unsigned ints to be signed ints in the name of style.
Thanks, I see how this change is not as NFC as I thought would be. Reverting!


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D113847/new/

https://reviews.llvm.org/D113847

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to