[go: up one dir, main page]

Jump to content

Cpplint: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
No edit summary
Update content to match source.
 
(5 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Short description|Open source lint-like tool developed by Google}}
{{Infobox software
| name = cpplint
| title = cpplint
| logo =
| screenshot =
| caption =
| developer = [[Google]]
| released = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} -->
| discontinued =
| latest release version =
| latest release date =
| latest preview version =
| latest preview date =
| repo = {{URL|https://github.com/google/styleguide}}
| programming language = [[Python (programming language)|Python]]
| operating system =
| platform =
| size =
| language =
| language count = <!-- DO NOT include this parameter unless you know what it does -->
| language footnote =
| genre = [[Static program analysis]] tool
| license = [[3-clause BSD license]]
| website = {{URL|google.github.io/styleguide/}}
}}
'''cpplint''' or '''cpplint.py''' is an open source [[lint (software)|lint]]-like tool developed by [[Google]],
'''cpplint''' or '''cpplint.py''' is an open source [[lint (software)|lint]]-like tool developed by [[Google]],
designed to ensure that [[C++]] code conforms to [https://google.github.io/styleguide/cppguide.html Google's coding style guides].
designed to ensure that [[C++]] code conforms to [https://google.github.io/styleguide/cppguide.html Google's coding style guides].


Therefore cpplint implements what Google considers best practices in C++ coding. The script cpplint.py reads source code files and flags deviations from the style guide. It also identifies [[syntax errors]]. It is rules based, and uses a number of heuristics to identify bad code.<ref>{{cite thesis |url=https://engagedscholarship.csuohio.edu/cgi/viewcontent.cgi?context=etdarchive&article=1732#page=20 |format=PDF |last=Dutko |first=Adam M. |title=The Relational Database: a New Static Analysis Tool? |date=2011 |oclc=750403495 |issn=2572-3480 |number=733 |page=20 |type=Master of Science |publisher=Cleveland State University |url-status=live |archive-url=https://web.archive.org/web/20180518113320/https://engagedscholarship.csuohio.edu/cgi/viewcontent.cgi?referer=&httpsredir=1&article=1732&context=etdarchive |archive-date=18 May 2018}}</ref>
Therefore cpplint implements what Google considers best practices in C++ coding.
The script cpplint.py reads source code files and flags deviations from the style guide.
It also identifies [[syntax errors]].
It is rules based, and uses a number of heuristics to identify bad code.<ref>{{cite thesis |url=https://engagedscholarship.csuohio.edu/cgi/viewcontent.cgi?context=etdarchive&article=1732#page=20 |format=PDF |last=Dutko |first=Adam M. |title=The Relational Database: a New Static Analysis Tool? |date=2011 |oclc=750403495 |issn=2572-3480 |number=733 |page=20 |type=Master of Science |publisher=Cleveland State University |url-status=live |archive-url=https://web.archive.org/web/20180518113320/https://engagedscholarship.csuohio.edu/cgi/viewcontent.cgi?referer=&httpsredir=1&article=1732&context=etdarchive |archive-date=18 May 2018}}</ref>


Cpplint is not perfect, as it can suffer from occasional false positives and negatives. Nevertheless, it is still a very useful tool for style enforcement.<ref>{{cite web|title=Google C++ Style Guide, section cpplint|first=Benjy|last=Weinberger|url=https://google.github.io/styleguide/cppguide.html#cpplint}}</ref>
cpplint.py suffers from both [[false positives]] and false negatives.
False positives can be eliminated by tagging lines with {{nowrap|<code>// NOLINT</code>}}<ref>{{cite web|title=Google C++ Style Guide, section cpplint|first=Benjy|last=Weinberger|url=https://google.github.io/styleguide/cppguide.html#cpplint}}</ref> (or
{{nowrap|<code>// NOLINT(rule)</code>}} to suppress only the incriminated <code>rule</code> category).


Moreover rules can be fine-grained selected using the options {{nowrap|<code>--verbose</code>}} and {{nowrap|<code>--filter</code>}}.
Moreover rules can be fine-grained selected using the options {{nowrap|<code>--verbose</code>}} and {{nowrap|<code>--filter</code>}}.
Line 16: Line 37:
Some options can be stored in a configuration file {{nowrap|<code>CPPLINT.cfg</code>}}.
Some options can be stored in a configuration file {{nowrap|<code>CPPLINT.cfg</code>}}.


cpplint is implemented as a [[Python (programming language)|Python]] script.<ref>{{cite web|title=GIT URL for cpplint.py|author=Google|url=https://github.com/google/styleguide/tree/gh-pages/cpplint}}</ref>
cpplint is implemented as a [[Python (programming language)|Python]] script.<ref>{{cite web |author=((Google)) |title=GIT URL for cpplint.py |url=https://github.com/google/styleguide/tree/gh-pages/cpplint |website=[[GitHub]]}}</ref>
It is distributed under the [[BSD license|3 clause BSD license]].
It is distributed under the [[BSD license|3 clause BSD license]].



Latest revision as of 08:06, 26 November 2023

cpplint
Developer(s)Google
Repositorygithub.com/google/styleguide
Written inPython
TypeStatic program analysis tool
License3-clause BSD license
Websitegoogle.github.io/styleguide/

cpplint or cpplint.py is an open source lint-like tool developed by Google, designed to ensure that C++ code conforms to Google's coding style guides.

Therefore cpplint implements what Google considers best practices in C++ coding. The script cpplint.py reads source code files and flags deviations from the style guide. It also identifies syntax errors. It is rules based, and uses a number of heuristics to identify bad code.[1]

Cpplint is not perfect, as it can suffer from occasional false positives and negatives. Nevertheless, it is still a very useful tool for style enforcement.[2]

Moreover rules can be fine-grained selected using the options --verbose and --filter. Line length rule can be configured with option --linelength and file extensions can be configured with --extensions (by default: 'h', 'cpp', 'cc', 'cu' and 'cuh'). Some options can be stored in a configuration file CPPLINT.cfg.

cpplint is implemented as a Python script.[3] It is distributed under the 3 clause BSD license.

See also[edit]

References[edit]

  1. ^ Dutko, Adam M. (2011). The Relational Database: a New Static Analysis Tool? (PDF) (Master of Science). Cleveland State University. p. 20. ISSN 2572-3480. OCLC 750403495. Archived from the original on 18 May 2018.
  2. ^ Weinberger, Benjy. "Google C++ Style Guide, section cpplint".
  3. ^ Google. "GIT URL for cpplint.py". GitHub.