Code cleanup: Difference between revisions

Jump to navigation Jump to search
m
category cleanup
m (category cleanup)
Line 1: Line 1:
The purpose of this page is to provide a todo-list or check-list for anyone that wants to help clean up the Flightgear (FG) code. In addition to this list, you also want to try running FG in Valgrind, a very powerful memory debugger and profiler. http://freshmeat.net/projects/valgrind/  
The purpose of this page is to provide a todo-list or check-list for anyone that wants to help clean up the [[Flightgear]] code. In addition to this list, you also want to try running FlightGear in [http://freshmeat.net/projects/valgrind/ Valgrind], a very powerful memory debugger and profiler. 


'''Feel free to add additional items to this page'''  
'''Feel free to add additional items to this page'''  
Line 5: Line 5:
Thanks -- Cameron Moore
Thanks -- Cameron Moore


== Keyboard reorg ==
== Keyboard reorganisation ==
 
The input settings (especially the keyboard) need some TLC.  Here are the major tasks (we need to work on the first one first):
The input settings (especially the keyboard) need some TLC.  Here are the major tasks (we need to work on the first one first):


* [[Keyboard function priority list]] — come up with a priority list of functions that need global keyboard assignments for ''all'' aircraft, without worrying about the specific keys.
* [[Keyboard function priority list]] — come up with a priority list of functions that need global keyboard assignments for ''all'' aircraft, without worrying about the specific keys.
* Local key block — decide on a block of keys to set aside for per-aircraft assignment.
* Local key block — decide on a block of keys to set aside for per-aircraft assignment.
* Global key bindings — decide what keys to assign to the functions from the opening list (not using the local key block).
* Global key bindings — decide what keys to assign to the functions from the opening list (not using the local key block).
* Refactor models — refactor all of the aircraft models so that they assign keys only from the local, per-aircraft key block.
* Refactor models — refactor all of the aircraft models so that they assign keys only from the local, per-aircraft key block.
* Add a GUI — add a GUI allowing users to reassign keys while the sim is running and save their changes.
* Add a GUI — add a GUI allowing users to reassign keys while the sim is running and save their changes.


== Major Task List ==
== Major Task List ==
* Move code out of fgMainLoop() and into separate functions or source files.
* Move code out of fgMainLoop() and into separate functions or source files.
* Replace system() calls in simgear/io/sg_binobj.cxx to `mkdir`
* Replace system() calls in simgear/io/sg_binobj.cxx to `mkdir`
Line 32: Line 26:


== Persistent Checklist ==
== Persistent Checklist ==
=== Carelessness ===
=== Carelessness ===
* Properly allocate and deallocate memory using malloc/new/new[{][}] and free/delete/delete[{][}]. Valgrind is helpful when looking for these.
* Properly allocate and deallocate memory using malloc/new/new[{][}] and free/delete/delete[{][}]. Valgrind is helpful when looking for these.
* Close any open file streams when you're through with them. Take care to not write to or close streams that aren't open. Avoid this by initializing file pointers/handles with 0 before use and verify that it is not 0 before accessing/closing.
* Close any open file streams when you're through with them. Take care to not write to or close streams that aren't open. Avoid this by initializing file pointers/handles with 0 before use and verify that it is not 0 before accessing/closing.


=== Compatibility ===
=== Compatibility ===
* Use the SG_LOG() facilities instead of cout and printf().
* Use the SG_LOG() facilities instead of cout and printf().
* Use the SG_USING_STD() facilities instead of explicitly using std::function.
* Use the SG_USING_STD() facilities instead of explicitly using std::function.
* Use the STL_* variables defined in simgear/compiler.h when including STL headers.
* Use the STL_* variables defined in simgear/compiler.h when including STL headers.
* When including header files, only use double-quotes when the header is in the same directory.
* When including header files, only use double-quotes when the header is in the same directory.


=== Security ===
=== Security ===
* Use C-string functions with fixed write buffers whenever possible to avoid buffer overflows.
* Use C-string functions with fixed write buffers whenever possible to avoid buffer overflows.
* Perform range/bounds checks on all data received from remote that could cause problems, especially those that specify an amount of data to be handled.
* Perform range/bounds checks on all data received from remote that could cause problems, especially those that specify an amount of data to be handled.


Line 58: Line 45:


[[Category:Development]]
[[Category:Development]]
[[Category:TODO: Code Cleanup]]
[[Category:Conventions & Guidelines]]
[[Category:Coding: C++]]

Navigation menu