Function cargo_auto_lib::auto_lines_of_code

source ·
pub fn auto_lines_of_code(link: &str)
Expand description

This function inserts shield badges with lines_of_code into README.rs.

auto_lines_of_code.png

The parameter Link will be used for shield badge. If empty_string, the git remote repository will be used.
Lines of code are not a “perfect” measurement of anything.
Anybody can write a very big number of lines of useless code and comments.
But for 95% of the cases they are good enough.
Most of the developers use some “standard” coding practices and that is quantifiable and comparable.

The src_code_lines is the most important count.
That is actual code written for that project without doc comments, comments, unit tests, integration tests and examples.
Sometimes is great to see a big number here. It means there was a lot of work invested. But other times we want to see a small number. It means the developer understands the problem very well and don’t try to solve anything outside that scope.
The src_doc_comment_lines counts doc comments. They will eventually become docs. The count of lines shows how many documentation is written.
The src_comment_lines counts code comments. Code comments are important to understand the code. The count of lines shows how understandable is the code.
The tests_lines counts lines in tests and shows how good is the code tested. Here are the unit tests and integration test combined.
The examples_lines counts lines in examples and shows how good is explained how to use the code.

§Folder and file structure

The folder structure of a single Rust project is simple.
The project starts in the folder that contains Cargo.toml.
The src/ folder contains all the rust *.rs files.
The tests/ folder contains integration tests.
The examples/ folder contains examples.
Some rs files can be excluded from the count adding this line near the start of the file: // exclude from auto_lines_of_code Inside a rs file the doc comment line start with /// or //!.
The normal comments start with // or /!.
I will ignore the block comments. They are usually NOT used for comments, but to temporarily disable a piece of code. So I count this as code and not comments.
The src/*.rs file can contain unit tests that start with #[cfg(test)]. I assume that these are always at the end of the file.
There should not be any normal code after #[cfg(test)], only tests.
All other files: md, toml, html, js, … are not counted.

§Include into README.md

If the README.md file contains these markers (don’t copy the numbers 1 and 2):

[//comment]: # (auto_lines_of_code start)

[//comment]: # (auto_lines_of_code end)

In this instructions I changed [//] to [//comment] to not process these markers.

The function will include the shield badges code between them.
It will erase the previous content.
Use git diff to see the change.