Bladeren bron

Compiled from old sourceforge issues.

Andrey Konstantinov 5 jaren geleden
bovenliggende
commit
78886b9112
1 gewijzigde bestanden met toevoegingen van 64 en 0 verwijderingen
  1. 64 0
      IDEAS.md

+ 64 - 0
IDEAS.md

@@ -0,0 +1,64 @@
+# Ideas
+
+https://github.com/metrixplusplus/metrixplusplus/blob/master/IDEAS.md
+This file captures all the ideas sparked in the past in relation to this project.
+
+## New metrics
+- Number of casts to void
+- Count good stuff: const, pure, rodata, static
+- Numver of dead symbols, files, functions, directories
+- Detect and count source code within comments and #if 0
+- Number of lines suppresed from static analysis, compiler warnings (useful when analysis is separated from new/modified code and untouched code)
+- check presense of doxygen comments before a region
+- Number of warnings by unused code detector
+- number of breaks per case statement (motivation is to enforce break per case)
+- Number of dead http links in strings and comments
+- count not empty (pattern based) comments (to evaluate quality of comments to some extent.?)
+- analysis of names, fucntions include english verbs, object under operation, etc., compliancy with naming conventions
+- number of throwing exceptions or consider how it is linked with multiple returns and cyclomatic complexity
+- number of violations to coding style (source from external tool?)
+- Number of violations to coding standards (against external tool?)
+- count declaration without initialisation
+- count default:s per switches (to enforce default case)
+- inheritance deepness, number of children, number of parent
+- number of using 'using namespace' statements
+- volume of changes in commit
+- size of corresponding *.o file
+- number of global variables (or extern symbols from binaries?)
+- number of valgrind warnings
+- count noname structs, namespaces, enums, classes
+- Number of components per whole scanned system, size of a component
+- number of logging statements
+- number of asserts metric
+- number of returns or span time between returns, code indent level in case of mutiple returns
+- fan-in/fan-out (input/output asignments and flows) metric
+- Number of basic blocks metric
+- number of variable-members in public headers
+- number of warnings by static analysis tool
+- number of warnings by compiler
+- Max line length metric
+- radio of length of name of identifier to span time (more spanning variables should be named longer)
+- Number of changes metric (frequently changing places may require attention to revision approaches)
+- Number of magic strings metric
+- Span time, life time metrics
+- Number of delete, new (malloc/free) operators metric (to enforce none and use smart pointers)
+- Arguments per function metric
+- Preprocessor statements metric (differentiate conditional and non-conditional)
+- Number of statements metric
+- Simple Coupling metric (number of external identifiers used, number of times used by others)
+- Code duplication metric (develop own code duplication detector?)
+- Code coverage metric (integrate with other tools?)
+- Add a way to collect usage data (Need some sort of feedback on usage trends. Datafile properties would be enough to feedback.)
+- Exclude header files guards from std.code.lines:preprocessor metric. (To minimise number of false-positives for the metric.)
+- Maximum number of pointer dereferencing per statement (Ref: Limit the use of pointers. Use no more than two levels of dereferencing per expression. http://spinroot.com/p10/rule9.html)
+- Average number of assertions per function length (Ref: Use minimally two assertions per function on average. http://spinroot.com/p10/rule5.html)
+- Metric for gotos, setjmp, longjmp (Inspired by: http://spinroot.com/p10/rule1.html)
+
+## Other
+- Add default useful views inside the db file. It turned out people browse DB file directly and want to have useful views available when DB file is opened.
+- Web dashboard to browse trends.
+- Support for other languages (Python, Matlabm Lua, sh, Ruby, etc..)
+- Performance profile the tool (Need a way to enable cProfile module via configuration. Plus, need a measurement of time spent per plugin.)
+- Handle kill signal and kill child process and release database file
+
+