Facebook has released as open source a code analyzer tool, typically called a linter, that can work with the latest version of the C++ language, C++11.
The internally developed debugger, called Flint, may be of interest to other programmers because many similar open-source lint tools haven’t been upgraded to work with C++11 yet, according to Facebook.
Noted C++ programmer Andrei Alexandrescu, now working at Facebook, built the tool for internal use.
A lint program typically scans software code to look for issues that a compiler does not catch, a process called static code analysis. Linters can be handy for enforcing organizational best practices in code development, or to look for code patterns that could cause security or performance issues.
Although there are a number of static analysis programs already available for C++, Facebook found them mostly unsuitable for its own needs. Many were too slow or weren’t updated to understand C++11, which Facebook is in the process of adopting. Flint reviews code and flags any potential issues in Facebook’s code review system, called Phabricator.
Flint can check for issues such as the use of outdated libraries, or keywords that have already been reserved for other uses within a system. It can catch subtle programming errors that a compiler would miss, such as an incorrectly formatted memory request. It can assure that headers are formatted correctly. It can also check for conflicting namespace directives.
Alexandrescu wrote Flint using a programming language similar to C++ he helped develop, called D. As a result, Flint compiles fives times as fast as an equivalent program in C++, and it runs anywhere from 5 percent to 25 percent faster as well.
Flint is one of a number of tools Facebook developed internally and later released as open source. Other recent releases include the Presto query engine and a PHP virtual machine called HipHop.