Faux Pas 1.7.1
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 +initialize in 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.
- Support for Xcode 8.1. (We now use a version of the Clang compiler that matches the one that ships with Xcode 8.1.)
- New rule: Spelling error.
- New rule: Source file header comment format.
- New rule: Erroneous view layout in XIB.
- New rule: Cyclomatic Complexity.
- The "Missing API usage description" rule now checks for many more relevant cases.
- Removed the possibility to open API documentation links in Xcode (Xcode has removed this capability from its AppleScript API since 8.0).
- The "add annotations header file to project" feature now requires you to manually add the header file to your Xcode project (Xcode has removed the capability to add source files to projects from its AppleScript API since 8.0).
- False positives for the "Constructor return type" rule in cases where nullability annotations were used with instancetype. (Thanks to Nikolas Mayr for reporting this.)
- Compilation errors for projects using C++14 features. (Thanks to Mark Hastings for reporting this.)
- Hangs in the GUI when switching between Faux Pas and other applications. (Thanks to Andrew Wooster for reporting this.)
- False negatives for the "Undetached delegate or data source" rule in cases where the delegate host reference is an instance variable declared in a class extension. (issue #100)
- False positives for the "Dynamic library install name" rule.
- Excessive memory usage in cases where checked source files contained very large numbers of diagnostic suppression macro expansions. (Thanks to Nikolas Mayr for reporting this.)
- False positives for the "Hardcoded self class reference" rule in cases where the reference is to a system framework class that is implemented as a class cluster (e.g. NSString). (Thanks to Nikolas Mayr for reporting this.)
- False positives for the "Assigning delegate property" rule in cases where the same header was used in both ARC compilation units and non-ARC compilation units. (issue #99)
- Hanging when opening projects when using Xcode 8.0-8.1. (issue #104)