Skip to content

Commit 8e5f71f

Browse files
committed
Update the README file
1 parent f7dfe18 commit 8e5f71f

File tree

1 file changed

+83
-30
lines changed

1 file changed

+83
-30
lines changed

README.md

Lines changed: 83 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,37 @@
11
## coreJSON Library
22

3-
This repository contains the coreJSON library, a parser that strictly enforces the ECMA-404 JSON standard and is suitable for low memory footprint embedded devices. The coreJSON library is distributed under the [MIT Open Source License](LICENSE).
4-
5-
This library has gone through code quality checks including verification that no function has a [GNU Complexity](https://www.gnu.org/software/complexity/manual/complexity.html) score over 8, and checks against deviations from mandatory rules in the [MISRA coding standard](https://www.misra.org.uk). Deviations from the MISRA C:2012 guidelines are documented under [MISRA Deviations](MISRA.md). This library has also undergone both static code analysis from [Coverity static analysis](https://scan.coverity.com/), and validation of memory safety through the [CBMC automated reasoning tool](https://www.cprover.org/cbmc/).
6-
7-
See memory requirements for this library [here](./docs/doxygen/include/size_table.md).
8-
9-
**coreJSON v3.2.0 [source code](https://github.com/FreeRTOS/coreJSON/tree/v3.2.0/source) is part of the [FreeRTOS 202210.00 LTS](https://github.com/FreeRTOS/FreeRTOS-LTS/tree/202210.00-LTS) release.**
10-
11-
**coreJSON v3.0.0 [source code](https://github.com/FreeRTOS/coreJSON/tree/v3.0.0/source) is part of the [FreeRTOS 202012.00 LTS](https://github.com/FreeRTOS/FreeRTOS-LTS/tree/202012.00-LTS) release.**
3+
**[API Documentation Pages for current and previous releases of this library can be found here](https://freertos.github.io/coreJSON/)**
4+
5+
This repository contains the coreJSON library, a parser that strictly enforces
6+
the ECMA-404 JSON standard and is suitable for low memory footprint embedded
7+
devices. The coreJSON library is distributed under the
8+
[MIT Open Source License](LICENSE).
9+
10+
This library has gone through code quality checks including verification that no
11+
function has a
12+
[GNU Complexity](https://www.gnu.org/software/complexity/manual/complexity.html)
13+
score over 8, and checks against deviations from mandatory rules in the
14+
[MISRA coding standard](https://www.misra.org.uk). Deviations from the MISRA
15+
C:2012 guidelines are documented under [MISRA Deviations](MISRA.md). This
16+
library has also undergone both static code analysis from
17+
[Coverity static analysis](https://scan.coverity.com/), and validation of memory
18+
safety through the
19+
[CBMC automated reasoning tool](https://www.cprover.org/cbmc/).
20+
21+
See memory requirements for this library
22+
[here](./docs/doxygen/include/size_table.md).
23+
24+
**coreJSON v3.2.0
25+
[source code](https://github.com/FreeRTOS/coreJSON/tree/v3.2.0/source) is part
26+
of the
27+
[FreeRTOS 202210.00 LTS](https://github.com/FreeRTOS/FreeRTOS-LTS/tree/202210.00-LTS)
28+
release.**
29+
30+
**coreJSON v3.0.0
31+
[source code](https://github.com/FreeRTOS/coreJSON/tree/v3.0.0/source) is part
32+
of the
33+
[FreeRTOS 202012.00 LTS](https://github.com/FreeRTOS/FreeRTOS-LTS/tree/202012.00-LTS)
34+
release.**
1235

1336
## Reference example
1437

@@ -51,41 +74,58 @@ int main()
5174
return 0;
5275
}
5376
```
54-
A search may descend through nested objects when the `queryKey` contains matching key strings joined by a separator, `.`. In the example above, `bar` has the value `{"foo":"xyz"}`. Therefore, a search for query key `bar.foo` would output `xyz`.
77+
78+
A search may descend through nested objects when the `queryKey` contains
79+
matching key strings joined by a separator, `.`. In the example above, `bar` has
80+
the value `{"foo":"xyz"}`. Therefore, a search for query key `bar.foo` would
81+
output `xyz`.
5582

5683
## Building coreJSON
5784

58-
A compiler that supports **C90 or later** such as *gcc* is required to build the library.
85+
A compiler that supports **C90 or later** such as _gcc_ is required to build the
86+
library.
5987

60-
Additionally, the library uses 2 header files introduced in ISO C99, `stdbool.h` and `stdint.h`. For compilers that do not provide this header file, the [source/include](source/include) directory contains [stdbool.readme](source/include/stdbool.readme) and [stdint.readme](source/include/stdint.readme), which can be renamed to `stdbool.h` and `stdint.h` respectively.
88+
Additionally, the library uses 2 header files introduced in ISO C99, `stdbool.h`
89+
and `stdint.h`. For compilers that do not provide this header file, the
90+
[source/include](source/include) directory contains
91+
[stdbool.readme](source/include/stdbool.readme) and
92+
[stdint.readme](source/include/stdint.readme), which can be renamed to
93+
`stdbool.h` and `stdint.h` respectively.
94+
95+
For instance, if the example above is copied to a file named `example.c`, _gcc_
96+
can be used like so:
6197

62-
For instance, if the example above is copied to a file named `example.c`, *gcc* can be used like so:
6398
```bash
6499
gcc -I source/include example.c source/core_json.c -o example
65100
./example
66101
```
67102

68-
*gcc* can also produce an output file to be linked:
103+
_gcc_ can also produce an output file to be linked:
104+
69105
```bash
70106
gcc -I source/include -c source/core_json.c
71107
```
72108

73109
## Documentation
74110

75111
### Existing documentation
76-
For pre-generated documentation, please see the documentation linked in the locations below:
77112

78-
| Location |
79-
| :-: |
113+
For pre-generated documentation, please see the documentation linked in the
114+
locations below:
115+
116+
| Location |
117+
| :------------------------------------------------------------------------------------------------------------------: |
80118
| [AWS IoT Device SDK for Embedded C](https://github.com/aws/aws-iot-device-sdk-embedded-C#releases-and-documentation) |
81-
| [FreeRTOS.org](https://freertos.org/Documentation/api-ref/coreJSON/docs/doxygen/output/html/index.html) |
119+
| [FreeRTOS.org](https://freertos.org/Documentation/api-ref/coreJSON/docs/doxygen/output/html/index.html) |
82120

83-
Note that the latest included version of the coreJSON library may differ across repositories.
121+
Note that the latest included version of the coreJSON library may differ across
122+
repositories.
84123

85124
### Generating documentation
86125

87126
The Doxygen references were created using Doxygen version 1.9.2. To generate the
88-
Doxygen pages, please run the following command from the root of this repository:
127+
Doxygen pages, please run the following command from the root of this
128+
repository:
89129

90130
```shell
91131
doxygen docs/doxygen/config.doxyfile
@@ -94,28 +134,37 @@ doxygen docs/doxygen/config.doxyfile
94134
## Building unit tests
95135

96136
### Checkout Unity Submodule
97-
By default, the submodules in this repository are configured with `update=none` in [.gitmodules](.gitmodules), to avoid increasing clone time and disk space usage of other repositories (like [amazon-freertos](https://github.com/aws/amazon-freertos) that submodules this repository).
98137

99-
To build unit tests, the submodule dependency of Unity is required. Use the following command to clone the submodule:
138+
By default, the submodules in this repository are configured with `update=none`
139+
in [.gitmodules](.gitmodules), to avoid increasing clone time and disk space
140+
usage of other repositories (like
141+
[amazon-freertos](https://github.com/aws/amazon-freertos) that submodules this
142+
repository).
143+
144+
To build unit tests, the submodule dependency of Unity is required. Use the
145+
following command to clone the submodule:
146+
100147
```
101148
git submodule update --checkout --init --recursive test/unit-test/Unity
102149
```
103150

104151
### Platform Prerequisites
105152

106153
- For running unit tests
107-
- C90 compiler like gcc
108-
- CMake 3.13.0 or later
109-
- Ruby 2.0.0 or later is additionally required for the Unity test framework (that we use).
154+
- C90 compiler like gcc
155+
- CMake 3.13.0 or later
156+
- Ruby 2.0.0 or later is additionally required for the Unity test framework
157+
(that we use).
110158
- For running the coverage target, gcov is additionally required.
111159

112160
### Steps to build Unit Tests
113161

114-
1. Go to the root directory of this repository. (Make sure that the **Unity** submodule is cloned as described [above](#checkout-unity-submodule).)
162+
1. Go to the root directory of this repository. (Make sure that the **Unity**
163+
submodule is cloned as described [above](#checkout-unity-submodule).)
115164

116165
1. Create build directory: `mkdir build && cd build`
117166

118-
1. Run *cmake* while inside build directory: `cmake -S ../test`
167+
1. Run _cmake_ while inside build directory: `cmake -S ../test`
119168

120169
1. Run this command to build the library and unit tests: `make all`
121170

@@ -125,12 +174,16 @@ git submodule update --checkout --init --recursive test/unit-test/Unity
125174

126175
## CBMC
127176

128-
To learn more about CBMC and proofs specifically, review the training material [here](https://model-checking.github.io/cbmc-training).
177+
To learn more about CBMC and proofs specifically, review the training material
178+
[here](https://model-checking.github.io/cbmc-training).
129179

130180
The `test/cbmc/proofs` directory contains CBMC proofs.
131181

132-
In order to run these proofs you will need to install CBMC and other tools by following the instructions [here](https://model-checking.github.io/cbmc-training/installation.html).
182+
In order to run these proofs you will need to install CBMC and other tools by
183+
following the instructions
184+
[here](https://model-checking.github.io/cbmc-training/installation.html).
133185

134186
## Contributing
135187

136-
See [CONTRIBUTING.md](./.github/CONTRIBUTING.md) for information on contributing.
188+
See [CONTRIBUTING.md](./.github/CONTRIBUTING.md) for information on
189+
contributing.

0 commit comments

Comments
 (0)