aaron.ballman added inline comments.

================
Comment at: 
clang-tools-extra/clang-tidy/bugprone/SignedCharMisuseCheck.cpp:97-98
+  diag(CastExpression->getBeginLoc(),
+       "singed char -> integer (%0) conversion; "
+       "consider to cast to unsigned char first.")
+      << *IntegerType;
----------------
ztamas wrote:
> aaron.ballman wrote:
> > How about: `'signed char' to %0 conversion; consider casting to 'unsigned 
> > char' first`?
> > 
> > Also, should we have a fix-it to automatically insert the cast to `unsigned 
> > char` in the proper location for the user?
> I don't think it's a good idea to add a cast automatically. I think this kind 
> of issue typically needs a human programmer to check what can be done in the 
> code.
> For example, when the program uses a char variable, but it is used as an int 
> intentionally (without adding an int alias). It's not a good practice of 
> course but it can happen. In this case, the best would be to use an int 
> variable instead. Adding a cast might break the code if it's called with 
> negative values.
> It also can happen that the code works with actual characters, but handles 
> the negative values on its own. In this case, it might be not enough to add 
> an unsigned char cast, but it might be needed to adjust the surrounding code 
> too.
> All in all, based on my experience with the findings in the LibreOffice code 
> base, I would not use an automatic correction here.
Okay, that makes sense, thank you!


================
Comment at: 
clang-tools-extra/docs/clang-tidy/checks/bugprone-signed-char-misuse.rst:25
+See also:
+`STR34-C. Cast characters to unsigned char before converting to larger integer 
sizes
+<https://wiki.sei.cmu.edu/confluence/display/c/STR34-C.+Cast+characters+to+unsigned+char+before+converting+to+larger+integer+sizes>`_
----------------
ztamas wrote:
> aaron.ballman wrote:
> > ztamas wrote:
> > > aaron.ballman wrote:
> > > > Should this check also be registered in the CERT module?
> > > This check does not cover the whole CERT description. I guess a cert 
> > > check should catch all bugous code related to the CERT issue, right?
> > So long as this covers a decent amount of the CERT rule, I think it is fine 
> > to document the areas where we don't quite match the CERT rule.
> My plan is to extend this check with other use cases in the next months. Can 
> we get back to this question after that? Now, It's hard to tell how well it 
> covers the CERT rule.
I checked and I think it covers the rule pretty closely. However, if you're 
already planning changes to cover new use cases, I'm fine waiting to add the 
alias.


================
Comment at: clang-tools-extra/docs/clang-tidy/checks/list.rst:73
    `bugprone-posix-return <bugprone-posix-return.html>`_, "Yes", ""
+   `bugprone-signed-char-misuse <bugprone-signed-char-misuse.html>`_, , 
"medium"
    `bugprone-sizeof-container <bugprone-sizeof-container.html>`_, , "high"
----------------
Just an FYI, but the severity columns were recently removed, so you'll probably 
have to rebase your patch.


================
Comment at: 
clang-tools-extra/test/clang-tidy/checkers/bugprone-signed-char-misuse-fsigned-char.cpp:6
+  int NCharacter = CCharacter;
+  // CHECK-MESSAGES: [[@LINE-1]]:20: warning: singed char -> integer ('int') 
conversion; consider to cast to unsigned char first. 
[bugprone-signed-char-misuse]
+
----------------
I think you need to update all the diagnostic text in the tests as the 
diagnostic has changed.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D71174



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

Reply via email to