Comments (3)
AFAIK, this is not possible since it is near impossible to differentiate between function call, variable and class/struct names in following syntax:
x = alpha(3.5);
Isalpha
a variable, function or class?
It might be possible to create a specific lexer path for identifying variable declarations, but that would imply lots of code changes and implementation of backtracking: not a simple undertaking
from nsiqcppstyle.
If you can check the variable naming convention in the case of variable declaration, it will also help developers write code. So can we consider adding this rule in the future?
from nsiqcppstyle.
This is one of the cases where an AST ("Abstract Syntax Tree") linter like Clang-Tidy is superior to a heuristic linter like NsiqCppStyle. Don't get me wrong: NsiqCppStyle is simpler to program for in, say, 80% of the cases.
Having said that, my first thought was what @kunaltyagi wrote: writing a rule to "attack" the variable at its definition/declaration point, checking its naming conformity, and outputting a warning message if it does not. This is much simpler than the well-nigh impossible task of NsiqCppStyle's identifying a variable within complex code. Correcting the variable at the definition/declaration point will produce compilation errors when rebuilt ("'camelBackVariable is undefined").
@kunaltyagi intimated that making this change in the engine is doable but will take time. The poster can, of course, write his own rule that is capable of identifying a variable definition/declaration, but then others cannot benefit from this generic and valuable rule code.
I'd like to suggest a medium-range enhancement to NsiqCppStyle: the ability for users to share NsiqCppStyle code:
- Share full-fledged NsiqCppStyle rules like the one just mentioned.
- Enable a private user-written rule to import valuable shared Python code snippets and functions (e.g., identifying camelCase, PascalCase, snake_case)
The snippets are not part of the NsiqCppStyle engine; rather, it is shared code uploaded by NsiqCppStyle rule writers who believe they have generic code of interest to other rule writers. The snippet should conform to repo coding standards (e.g., it should have built-in unit test cases, it should include internal documentation describing how to use it). It is entirely up to a rule writer whether he wishes to import the snippet into his own rule.
The power of this scheme is the ability to provide a stop-gap measure to improve the NsiqCppStyle engine without tinkering with its internals. As time progresses, especially valuable snippets can be implemented within the NsiqCppStyle engine.
So, to @Eureca2017, you might want to write your own rule code to identify variable definitions/declarations, checking naming conformity at that point, and even sharing it here. If the coding snippet library idea is implemented, that code will be a prime candidate for inclusion.
from nsiqcppstyle.
Related Issues (20)
- Line continuations on nsiqcppstyle_exe.py HOT 1
- what is the best way to prepare a source code distribution? HOT 1
- Update README.md: Remove or update project site information. HOT 1
- Doxygen "Qt style" /*! is considered as a violation HOT 1
- Files with UPPERCASE extensions are not processed HOT 3
- Add new rule callback functions when COMMENT or CPPCOMMENT token type encountered HOT 1
- Add callback functions to mark the start and end of an NsiqCppStyle session HOT 1
- Provide a tool to show which callback functions are invoked for given source code HOT 2
- Overloaded operator function name should be returned as one FUNCTION token, not two tokens FUNCTION + <operator> HOT 2
- Try reduce the duplication in rule callbacks HOT 1
- Use `Path` instead of `str` and validate user provided paths
- Support running user rule files located outside of the NsiqCppStyle package HOT 1
- Remove all code related to updating NsiqCppStyle from a remote repository HOT 3
- There is no way to specify a file name pattern as an INCLUDE/EXCLUDE filter HOT 1
- Provide regression tests (in nsiqunittest/nsiqcppstyle_unittest.py) for NsiqCppStyle engine internals HOT 1
- Create top-notch GitHub wiki documentation HOT 1
- Write XML Uses Binary instead of String HOT 2
- Need to support GCC function attribute specifier when specifier follows function name
- Incorrect starting/ending tokens for FUNCTION_BLOCK context when initialization list has LBRACE/RBRACE HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nsiqcppstyle.