Static program analysis: Difference between revisions

Content deleted Content added
Leibniz (talk | contribs)
cleaned a bit, still a mess
Line 1:
'''Static code analysis''' is a set of methods for analysing [[software]] [[source code]] or [[object code]] in an effort to gain [[understanding]] of what the software does. Applicationsand includeestablish targetingcertain areas for [[review]] and/orcorrectness [[rewrite]]criteria.
 
Schematically, there exist several types of static analysis (which may be used in combination, even inside the same [[programming tool]]):
* tools such as ''[[lint programming tool|lint]]'' essentially look for constructs that "look dangerous" from an informal point of view;
* [[formal methodmethods]]s consider mathematical definition of the behaviors of programs, known as [[semantics]]:
 
==Formal methods==
'''Static analysis''' is a family of [[formal method]]s for automatically deriving information about the behavior of computer [[software]] (and also [[hardware]]). One possible application of static analysis is automated [[debugging]] aid, especially the finding of run-time errors -- roughly speaking, events causing program [[crash]]es.
 
Line 15 ⟶ 14:
 
Interest in the development of static analysis tools, especially for use on [[safety-critical computer system]]s, was renewed after the high profile disaster of [[Ariane 5 Flight 501]], when a space [[rocket]] exploded shortly after launch due to a [[computer bug]], surely one of the most expensive computer bugs in history.
 
Some [[software metric]]s can also be seen as a form of static analysis.
 
===See also===
 
* [[DAEDALUS]]
* [[Formal verification]]
*[[Software analysis]]
 
==*[[Software metrics==testing]]
*[[Source code scanner]]
This family of methods aims at identifying possible problems in software using some numerical measurements over the source code.
*[[Code beautifier]]
The number of [[metric]]s (''measures'') that can be applied are numerous. One of the crudest measurements, for example, is the size of code, usually expressed in kLOC's (1000 lines of code). Defining a consistent definition of a ''[[line of code]]'' has long been an item for debate.
*[[Crash-only software]]
 
*[[Graceful degradation]]
One common metric in static analysis is ''[[McCabes Cyclomatic Complexity Metric]]'' which measures the number of choices a function makes. Functions with a high number of conditional statements (if's, while etc.) will have a high [[complexity]]. Such functions therefore can be considered more likely to contain [[computer bug|bug]]s and be harder to maintain.
 
===Tools===
Line 58 ⟶ 60:
#[http://www.agitar.com/ Agitar Management Dashboard]
 
===See also===
*[[Software analysis]]
*[[Software testing]]
*[[Source code scanner]]
*[[Code beautifier]]
*[[Crash-only software]]
*[[Graceful degradation]]
 
==External links==
Line 72 ⟶ 67:
 
[[Category:Computer programming tools]]
 
{{stub}}