|
From: <caw...@us...> - 2007-08-10 15:27:10
|
Revision: 2960
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2960&view=rev
Author: cawilliams
Date: 2007-08-10 08:27:04 -0700 (Fri, 10 Aug 2007)
Log Message:
-----------
Fix #5518 - Add warning check for local and method naming convention
Modified Paths:
--------------
trunk/com.aptana.rdt/plugin.xml
trunk/com.aptana.rdt/src/com/aptana/rdt/AptanaRDTPlugin.java
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LintOptions.java
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/RubyRedLint.java
Added Paths:
-----------
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LocalAndMethodNamingConvention.java
Modified: trunk/com.aptana.rdt/plugin.xml
===================================================================
--- trunk/com.aptana.rdt/plugin.xml 2007-08-10 15:16:49 UTC (rev 2959)
+++ trunk/com.aptana.rdt/plugin.xml 2007-08-10 15:27:04 UTC (rev 2960)
@@ -94,7 +94,11 @@
<error
categoryId="org.rubypeople.rdt.errors.potentialProblems"
label="Local Variable assignment possibly intended to access attribute"
- prefKey="com.aptana.rdt.compiler.problem.localVariablePossibleAttributeAccess"/>
+ prefKey="com.aptana.rdt.compiler.problem.localVariablePossibleAttributeAccess"/>
+ <error
+ categoryId="org.rubypeople.rdt.errors.codeConvention"
+ label="Method or local variables doesn't match convention (under_scores vs camelCase)"
+ prefKey="com.aptana.rdt.compiler.problem.methodOrLocalNamingConvention"/>
</extension>
<!-- =================================================================================== -->
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/AptanaRDTPlugin.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/AptanaRDTPlugin.java 2007-08-10 15:16:49 UTC (rev 2959)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/AptanaRDTPlugin.java 2007-08-10 15:27:04 UTC (rev 2960)
@@ -224,6 +224,14 @@
*/
public static final String COMPILER_PB_LOCAL_VARIABLE_POSSIBLE_ATTRIBUTE_ACCESS = PLUGIN_ID + ".compiler.problem.localVariablePossibleAttributeAccess"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions()
+ * @since 1.0.0
+ */
+ public static final String COMPILER_PB_LOCAL_METHOD_NAMING_CONVENTION = PLUGIN_ID + ".compiler.problem.methodOrLocalNamingConvention"; //$NON-NLS-1$
+
+
// The shared instance
private static AptanaRDTPlugin plugin;
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LintOptions.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LintOptions.java 2007-08-10 15:16:49 UTC (rev 2959)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LintOptions.java 2007-08-10 15:27:04 UTC (rev 2960)
@@ -30,6 +30,7 @@
public static final long ConstantNamingConvention = 0x800000;
public static final long DynamicVariableAliasesLocal = 0x1000000;
public static final long LocalVariablePossibleAttributeAccess = 0x2000000;
+ public static final long LocalMethodNamingConvention = 0x4000000;
public static final String ERROR = RubyCore.ERROR;
public static final String WARNING = RubyCore.WARNING;
@@ -52,6 +53,7 @@
| ConstantNamingConvention
| DynamicVariableAliasesLocal
| LocalVariablePossibleAttributeAccess
+ | LocalMethodNamingConvention
/*| NullReference -- keep RubyCore#getDefaultOptions comment in sync */;
public int maxLocals = 5;
@@ -83,6 +85,7 @@
optionsMap.put(AptanaRDTPlugin.COMPILER_PB_METHOD_MISSING_NO_RESPOND_TO, getSeverityString(MethodMissingWithoutRespondTo));
optionsMap.put(AptanaRDTPlugin.COMPILER_PB_DYNAMIC_VARIABLE_ALIASES_LOCAL, getSeverityString(DynamicVariableAliasesLocal));
optionsMap.put(AptanaRDTPlugin.COMPILER_PB_LOCAL_VARIABLE_POSSIBLE_ATTRIBUTE_ACCESS, getSeverityString(LocalVariablePossibleAttributeAccess));
+ optionsMap.put(AptanaRDTPlugin.COMPILER_PB_LOCAL_METHOD_NAMING_CONVENTION, getSeverityString(LocalMethodNamingConvention));
optionsMap.put(AptanaRDTPlugin.COMPILER_PB_MAX_ARGUMENTS, String.valueOf(maxArguments));
optionsMap.put(AptanaRDTPlugin.COMPILER_PB_MAX_LINES, String.valueOf(maxLines));
optionsMap.put(AptanaRDTPlugin.COMPILER_PB_MAX_LOCALS, String.valueOf(maxLocals));
@@ -122,6 +125,7 @@
if ((optionValue = optionsMap.get(AptanaRDTPlugin.COMPILER_PB_METHOD_MISSING_NO_RESPOND_TO)) != null) updateSeverity(MethodMissingWithoutRespondTo, optionValue);
if ((optionValue = optionsMap.get(AptanaRDTPlugin.COMPILER_PB_DYNAMIC_VARIABLE_ALIASES_LOCAL)) != null) updateSeverity(DynamicVariableAliasesLocal, optionValue);
if ((optionValue = optionsMap.get(AptanaRDTPlugin.COMPILER_PB_LOCAL_VARIABLE_POSSIBLE_ATTRIBUTE_ACCESS)) != null) updateSeverity(LocalVariablePossibleAttributeAccess, optionValue);
+ if ((optionValue = optionsMap.get(AptanaRDTPlugin.COMPILER_PB_LOCAL_METHOD_NAMING_CONVENTION)) != null) updateSeverity(LocalMethodNamingConvention, optionValue);
if ((optionValue = optionsMap.get(AptanaRDTPlugin.COMPILER_PB_MAX_LOCALS)) != null) {
if (optionValue instanceof String) {
String stringValue = (String) optionValue;
Added: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LocalAndMethodNamingConvention.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LocalAndMethodNamingConvention.java (rev 0)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LocalAndMethodNamingConvention.java 2007-08-10 15:27:04 UTC (rev 2960)
@@ -0,0 +1,49 @@
+package com.aptana.rdt.internal.parser.warnings;
+
+import org.jruby.ast.DefnNode;
+import org.jruby.ast.DefsNode;
+import org.jruby.ast.LocalAsgnNode;
+import org.jruby.evaluator.Instruction;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
+
+import com.aptana.rdt.AptanaRDTPlugin;
+
+public class LocalAndMethodNamingConvention extends RubyLintVisitor {
+
+ public LocalAndMethodNamingConvention(String contents) {
+ super(AptanaRDTPlugin.getDefault().getOptions(), contents);
+ }
+
+ @Override
+ protected String getOptionKey() {
+ return AptanaRDTPlugin.COMPILER_PB_LOCAL_METHOD_NAMING_CONVENTION;
+ }
+
+ @Override
+ public Instruction visitDefnNode(DefnNode iVisited) {
+ String name = iVisited.getName();
+ if (!name.toLowerCase().equals(name)) {
+ createProblem(iVisited.getPosition(), "Method name doesn't match the under_scores_all_lower convention: " + name);
+ }
+ return super.visitDefnNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitLocalAsgnNode(LocalAsgnNode iVisited) {
+ String name = iVisited.getName();
+ if (!name.toLowerCase().equals(name)) {
+ createProblem(iVisited.getPosition(), "Method name doesn't match the under_scores_all_lower convention: " + name);
+ }
+ return super.visitLocalAsgnNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitDefsNode(DefsNode iVisited) {
+ String name = iVisited.getName();
+ if (!name.toLowerCase().equals(name)) {
+ createProblem(iVisited.getPosition(), "Local variable name doesn't match the under_scores_all_lower convention: " + name);
+ }
+ return super.visitDefsNode(iVisited);
+ }
+
+}
Property changes on: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LocalAndMethodNamingConvention.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/RubyRedLint.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/RubyRedLint.java 2007-08-10 15:16:49 UTC (rev 2959)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/RubyRedLint.java 2007-08-10 15:27:04 UTC (rev 2960)
@@ -86,6 +86,7 @@
visitors.add(new MethodMissingWithoutRespondTo(contents));
visitors.add(new DynamicVariableAliasesLocal(contents));
visitors.add(new LocalVariablePossibleAttributeAccess(contents));
+ visitors.add(new LocalAndMethodNamingConvention(contents));
List<RubyLintVisitor> filtered = new ArrayList<RubyLintVisitor>();
for (RubyLintVisitor visitor : visitors) {
if (visitor.isIgnored()) continue;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|