aaron.ballman added inline comments.

================
Comment at: 
clang-tools-extra/clang-tidy/readability/ReadabilityTidyModule.cpp:136
+    CheckFactories.registerCheck<VariableLengthCheck>(
+        "readability-variable-length");
   }
----------------
0x8000-0000 wrote:
> aaron.ballman wrote:
> > Is there a reason this should be restricted to variables? For example, 
> > wouldn't the same functionality be useful for type names, or dare I say it, 
> > even macro names? I'm wondering if this should be 
> > `readability-identifier-length` to be more generic.
> I consider those to be in separate namespaces. I suppose we could have a 
> single checker with multiple rules, but on the other hand I don't want to 
> combine too many things into one, just because they share the "compare 
> length" dimension.
I see where you're coming from, but I come down on the other side. Running a 
check is expensive (especially on Windows where process creation can be really 
slow), so having multiple checks that traverse the AST gives worse performance 
than having a single check that only traverses the AST once. I'd rather see 
related functionality grouped together and use options to control behavior when 
it's a natural fit to do so.

I should note that I don't mean *you* have to implement this other 
functionality (as part of this patch or otherwise). Just that I think we should 
leave the check name ambiguous enough that we could grow it to do that work in 
the future.

WDYT?


================
Comment at: clang-tools-extra/clang-tidy/readability/VariableLengthCheck.cpp:20
+
+const unsigned DefaultMinimumVariableNameLength = 3;
+const unsigned DefaultMinimumLoopCounterNameLength = 2;
----------------
0x8000-0000 wrote:
> aaron.ballman wrote:
> > Should it be possible to enforce parameters differently than local 
> > variables? (It seems a bit odd that we'd allow you to specify exception 
> > variable length separate from loops but not function parameters separate 
> > from locals.)
> Exceptions and Loops historically are "throw-away" / "don't care" / "one-off" 
> variables. Parameter names are names, and they are the interface between the 
> outside of the routine and the processing inside; other than historical, I 
> don't see good arguments (sic) to allow single-letter parameter names.
> 
> Note that this check will be quite noisy on a legacy code base, and people 
> will find little reason to invest the work to remove the warnings. But if 
> somebody starts something new and want to enforce some quality attributes, it 
> is the right tool at the right time. There will be new projects starting in 
> 2021 and 2022 that could benefit from this, I hope.
> Exceptions and Loops historically are "throw-away" / "don't care" / "one-off" 
> variables. Parameter names are names, and they are the interface between the 
> outside of the routine and the processing inside; other than historical, I 
> don't see good arguments (sic) to allow single-letter parameter names.

I largely agree with you, but there are definitely cases where single-letter 
parameter names are extremely common. For example, coordinates are often `x`, 
`y`, and `z`, colors are often `r`, `g`, and `b` (among many others), and 
physics applications often do things like `f = m * a` with their variables. 
Also, there are cases where the parameter names are often not super meaningful, 
like with functions `min` and `max` so the parameter names may be quite short.


================
Comment at: clang-tools-extra/clang-tidy/readability/VariableLengthCheck.cpp:26
+
+const char ErrorMessage[] = "%select{|exception |loop }0 variable name %1 is "
+                            "too short, expected at least %2 characters";
----------------
0x8000-0000 wrote:
> aaron.ballman wrote:
> > It looks like there will be whitespace issues with this. If the variable is 
> > a loop or exception, it'll have an extra space (`loop  variable name`) and 
> > if it's not, it will start with a leading space (` variable name`).
> This was recommended by a previous reviewer. Any alternative suggestion here?
I *think* the diagnostic will work if you write it like this:
`"%select{variable |exception variable |loop variable |parameter }0name %1 is 
too short, expected at least %2 characters"`



================
Comment at: clang-tools-extra/clang-tidy/readability/VariableLengthCheck.cpp:98
+
+    const StringRef VarName = StandaloneVar->getName();
+
----------------



================
Comment at: clang-tools-extra/clang-tidy/readability/VariableLengthCheck.cpp:114
+
+    const StringRef VarName = ExceptionVarName->getName();
+    if ((VarName.size() >= MinimumExceptionNameLength) ||
----------------



================
Comment at: clang-tools-extra/clang-tidy/readability/VariableLengthCheck.cpp:128
+
+    const StringRef VarName = LoopVar->getName();
+
----------------



================
Comment at: clang-tools-extra/clang-tidy/readability/VariableLengthCheck.cpp:143
+
+    const StringRef VarName = ParamVar->getName();
+
----------------



================
Comment at: 
clang-tools-extra/test/clang-tidy/checkers/readability-variable-length.cpp:44
+
+void longEnoughVariableNames(int n) // argument 'n' ignored by configuration
+{
----------------
What in the configuration causes `n` to be ignored?


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

https://reviews.llvm.org/D97753

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

Reply via email to