Faux Pas inspects your iOS or Mac app’s Xcode project and warns about possible bugs, as well as about maintainability and style issues.
What the Clang Static Analyzer is to your code, Faux Pas is to your whole Xcode project. Faux Pas doesn’t just look at your code – it inspects all the elements of your Xcode project together. This allows it to find completely new classes of potential issues.
- Tame latent bugs – Rules like these alert you to issues in your project that might manifest as bugs later down the line:
- Find resource file errors – Are you sure you didn’t make a typo in the filename argument to [UIImage imageNamed:]? Did you remember to update all relevant code when you renamed that file? Are you shipping any resource files that are probably unused? Faux Pas comes with 12 different rules that check for errors related to resource file usage.
- Find localization errors – Is NSLocalizedString() referring to a key that does not exist? That exists for one locale but not another? Do all of the format specifiers in all the different translations match? Faux Pas comes with 10 different rules that check for localization errors.
- Find version control errors – Is your project referencing a file that is outside the version control root? Or a file that is ignored by the VCS? Faux Pas comes with 4 different rules that check for version control errors.
- Learn and enforce best practices – Overriding +initializein a category? Specifying UIViewController NIB name outside of its implementation? Accessing the address book without specifying an NSContactsUsageDescription? Faux Pas is useful even for experienced iOS/Mac developers, but it’s especially great for newcomers to Apple’s platforms.
- Enforce code style – Do you want to enforce the usage of dot syntax whenever possible? Or just use it for properties declared with @property? What about NSNumber literals, boxed expressions, container literals, and object subscripting? Faux Pas comes with 12 different rules that help you enforce stylistic constraints.
- Get a checklist for code audits – Are you auditing or taking over an existing codebase? Faux Pas will give you a nice overview of potential issues you might want to pay attention to.
- Choose from 93 different rules – Faux Pas comes with 93 rules, categorized using tags like Resources, Style, or Config. You can choose which rules you want to apply, and configure them to match your preferences.
- Use GUI or CLI – Faux Pas has both a graphical user interface and a command-line interface.
- Run during Xcode builds – Invoke Faux Pas in a Run Script build phase in Xcode, and see the emitted diagnostics in Xcode’s Issue Navigator (as well as inline with the code, just like regular compiler errors).
- Connect to external tools – Faux Pas can output diagnostics in JSON or Property List formats. Process them in any way you want with custom scripts. You can also run Faux Pas on continuous integration servers.
- Configure – Select rules by tags, and exclude individual rules. Set general and rule-specific options. Save into JSON configuration files.
- Open links in your favorite editor Faux Pas can open files in several popular code editors, as well as API documentation in either Xcode or Dash.
- Improved: Preliminary compatibility with Xcode 9. (Utilizing the open source Swift 4 Clang, due to Apple not having yet released the sources for their "Xcode 9" version of Clang.)
- Fixed: Compilation errors for projects using C++ precompiled headers.
- Fixed: Erroneous warnings about unsupported Xcode project formats.
- Fixed: False positives for the "Assigning delegate property" rule in cases where a non-Objective-C-pointer property was named *Delegate. (Thanks to Stephen Ford Horne for reporting this.)
- Fixed: False positives for the "Dynamic library install name" rule.
- Fixed: False positives for the "Retain cycle in block API usage" rule in cases where typeof(self) is used. (issue #110)
- Fixed: False positives for the "XIB User-defined runtime attribute mismatch" rule in cases where the runtime attribute type is image. (issue #115)
OS X 10.9 or later, 64-bit processor