lowerCamelCase check local variables (#2579)

* lowerCamelCase check local variables

* +foreach + catch clauses
diff --git a/lib/src/rules/non_constant_identifier_names.dart b/lib/src/rules/non_constant_identifier_names.dart
index 5198d86..4316b46 100644
--- a/lib/src/rules/non_constant_identifier_names.dart
+++ b/lib/src/rules/non_constant_identifier_names.dart
@@ -43,11 +43,14 @@
   void registerNodeProcessors(
       NodeLintRegistry registry, LinterContext context) {
     var visitor = _Visitor(this);
+    registry.addCatchClause(this, visitor);
     registry.addConstructorDeclaration(this, visitor);
+    registry.addForEachPartsWithDeclaration(this, visitor);
     registry.addFormalParameterList(this, visitor);
     registry.addFunctionDeclaration(this, visitor);
     registry.addMethodDeclaration(this, visitor);
     registry.addVariableDeclaration(this, visitor);
+    registry.addVariableDeclarationStatement(this, visitor);
   }
 }
 
@@ -70,6 +73,11 @@
   }
 
   @override
+  void visitCatchClause(CatchClause node) {
+    checkIdentifier(node.exceptionParameter, underscoresOk: true);
+  }
+
+  @override
   void visitConstructorDeclaration(ConstructorDeclaration node) {
     // For rationale on accepting underscores, see:
     // https://github.com/dart-lang/linter/issues/1854
@@ -77,6 +85,11 @@
   }
 
   @override
+  void visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) {
+    checkIdentifier(node.loopVariable.identifier);
+  }
+
+  @override
   void visitFormalParameterList(FormalParameterList node) {
     node.parameters.forEach((FormalParameter p) {
       if (p is! FieldFormalParameter) {
@@ -103,4 +116,13 @@
       checkIdentifier(node.name);
     }
   }
+
+  @override
+  void visitVariableDeclarationStatement(VariableDeclarationStatement node) {
+    for (var variable in node.variables.variables) {
+      if (!variable.isConst) {
+        checkIdentifier(variable.name);
+      }
+    }
+  }
 }
diff --git a/test/rules/non_constant_identifier_names.dart b/test/rules/non_constant_identifier_names.dart
index 6f70a59..69983c2 100644
--- a/test/rules/non_constant_identifier_names.dart
+++ b/test/rules/non_constant_identifier_names.dart
@@ -4,6 +4,29 @@
 
 // test w/ `dart test -N non_constant_identifier_names`
 
+void main() {
+  var XYZ = 1; // LINT
+  var ABC = 1, // LINT
+      def = 1;
+
+  const ZZZ = 3; //  OK
+
+  try {
+    for (var XYZ in []) // LINT
+    {
+      print(XYZ);
+    }
+    for (var II = 0; II < [].length; ++II) // LINT
+    {
+      print(II);
+    }
+  } on Exception catch (EE) //LINT
+  {
+    print(EE);
+  } on Object catch (_) //OK
+  {}
+}
+
 String YO = ''; //LINT
 const Z = 4; //OK
 
@@ -26,9 +49,9 @@
 void _fun_bar() {} //LINT
 
 abstract class A {
-  int _x; //OK
-  int __x; //OK
-  int X; //OK
+  int? _x; //OK
+  int? __x; //OK
+  int? X; //OK
   static const Y = 3; // OK
 
   final String bar_bar; //LINT