|
|
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:
|
|
|
|
|
|
```
|
|
|
analyzation:
|
|
|
stage: analyze
|
|
|
script:
|
|
|
- ./analyze.sh
|
|
|
except:
|
|
|
- triggers
|
|
|
```
|
|
|
|