Continuous integration is this guide is based on Gitlab CI. Each step of this setup, except of the first one, is optional - implement only what you need.
1.**Gitlab CI.**
**1. Gitlab CI.**
To setup Gitlab CI you need to add .gitlab-ci.yml file to the root of project's source. It should look like this:
```stages:
```
stages:
- analyze
- test
- crashlytics
...
...
@@ -28,52 +32,70 @@ crashlytics_build:
only:
- develop
except:
- triggers```
- triggers
```
Add only stages you need.
2. **Analyzation Stage**
**2. Analyzation Stage**
To setup analyzation you need to do the following:
* Properly configure the project for Release configuration, especially enable almost all warnings:
- Set `Treat Warnings as Errors` to Yes.
- Set `Documentation Comments` to Yes.
- Set `Empty Loop Bodies` to Yes.
- Set `Four Character Literals` to Yes.
- Set `Hidden Local Variables` to Yes.
- Set `Implicit Boolean Conversions` to Yes.
- Set `Implicit Constant Conversions` to Yes.
- Set `Implicit Conversion to 32 Bit type` to Yes.
- Set `Implicit Enum Conversions` to Yes.
- Set `Implicit Integer to Pointer Conversion` to Yes.
- Set `Implicit Signedness Conversions` to Yes.
- Set `Infinite Recursion` to Yes.
- Set `Initializer Not Fully Bracketed` to Yes.
- Set `Mismatched Return Type` to Yes (treat as error).
- Set `Missing Fields in Structure Initializers` to Yes.
- Set `Missing Function Prototypes` to Yes.
- Set `Missing Newline At End of File` to Yes.
- Set `Out-of-Range Enum Assignments` to Yes.
- Set `Sign Comparison` to Yes.
- Set `Suspicious Implicit Conversions` to Yes.
- Set `Uninitialized Variables` to Yes (Aggressive).
- Set `Unknown Pragma` to Yes.
- Set `Unreachable Code` to Yes.
- Set `Unused Functions` to Yes.
- Set `Unused Labels` to Yes.
- Set `Unused Parameters` to Yes.
- Set `Unused Variables` to Yes.
- Set `Suspicious Moves` to Yes.
- Set `Direct Usage of 'isa'` to Yes (treat as error).
- Set `Duplicate Method Definitions` to Yes.
- Set `Implicit Atomic Objective-C Properties` to Yes.
- Set `Overriding Deprecated Objective-C Methods` to Yes.
- Set `Strict Selector Matching` to Yes.
- Set `Undeclared Selector` to Yes.
- Set `Unintentional Root Class` to Yes (treat as error).
- Set `Implicit Ownership Types on our parameters` to Yes.
- Set `Implicit Retain of 'self' within blocks` to Yes.
- Set `Repeatedly using a __weak reference` to Yes.
- Set `Misuse of 'nonnull'` to Yes (Aggressive).
- Set `Missing Localizability` to Yes.
- Set `Floating Point Value used as Loop Counter` to Yes.
- Set `Use of 'rand' functions` to Yes.
- Set `Use of 'strcpy' and 'strcat'` to Yes.
\ No newline at end of file
- Set `Treat Warnings as Errors` to Yes.
- Set `Documentation Comments` to Yes.
- Set `Empty Loop Bodies` to Yes.
- Set `Four Character Literals` to Yes.
- Set `Hidden Local Variables` to Yes.
- Set `Implicit Boolean Conversions` to Yes.
- Set `Implicit Constant Conversions` to Yes.
- Set `Implicit Conversion to 32 Bit type` to Yes.
- Set `Implicit Enum Conversions` to Yes.
- Set `Implicit Integer to Pointer Conversion` to Yes.
- Set `Implicit Signedness Conversions` to Yes.
- Set `Infinite Recursion` to Yes.
- Set `Initializer Not Fully Bracketed` to Yes.
- Set `Mismatched Return Type` to Yes (treat as error).
- Set `Missing Fields in Structure Initializers` to Yes.
- Set `Missing Function Prototypes` to Yes.
- Set `Missing Newline At End of File` to Yes.
- Set `Out-of-Range Enum Assignments` to Yes.
- Set `Sign Comparison` to Yes.
- Set `Suspicious Implicit Conversions` to Yes.
- Set `Uninitialized Variables` to Yes (Aggressive).
- Set `Unknown Pragma` to Yes.
- Set `Unreachable Code` to Yes.
- Set `Unused Functions` to Yes.
- Set `Unused Labels` to Yes.
- Set `Unused Parameters` to Yes.
- Set `Unused Variables` to Yes.
- Set `Suspicious Moves` to Yes.
- Set `Direct Usage of 'isa'` to Yes (treat as error).
- Set `Duplicate Method Definitions` to Yes.
- Set `Implicit Atomic Objective-C Properties` to Yes.
- Set `Overriding Deprecated Objective-C Methods` to Yes.
- Set `Strict Selector Matching` to Yes.
- Set `Undeclared Selector` to Yes.
- Set `Unintentional Root Class` to Yes (treat as error).
- Set `Implicit Ownership Types on our parameters` to Yes.
- Set `Implicit Retain of 'self' within blocks` to Yes.
- Set `Repeatedly using a __weak reference` to Yes.
- Set `Misuse of 'nonnull'` to Yes (Aggressive).
- Set `Missing Localizability` to Yes.
- Set `Floating Point Value used as Loop Counter` to Yes.
- Set `Use of 'rand' functions` to Yes.
- Set `Use of 'strcpy' and 'strcat'` to Yes.
* Add analyze.sh script to the project's root folder:
Replace MyWorkspace, MyScheme and MyConfiguration with appropriate values.
* Add analyzation stage to .gitlab-ci.yml file, it should look like the following: