Type: | Package |
Title: | Check 'C' and 'C++' Files using 'Cppcheck' |
Version: | 1.0.0 |
Description: | Allow to run 'Cppcheck' (https://cppcheck.sourceforge.io/) on 'C' and 'C++' files with a 'R' command or a 'RStudio' addin. The report appears in the 'RStudio' viewer pane as a formatted 'HTML' file. It is also possible to get this report with a 'shiny' application. 'Cppcheck' can spot many error types and it can also give some recommendations on the code. |
License: | GPL-3 |
URL: | https://github.com/stla/cppcheckR |
BugReports: | https://github.com/stla/cppcheckR/issues |
Imports: | htmlwidgets, rmarkdown, rstudioapi, shiny, utils, V8, xml2 |
Suggests: | htmltools, shinyAce, shinybusy, shinyFiles, shinyjqui, shinyWidgets |
Encoding: | UTF-8 |
RoxygenNote: | 7.2.0 |
SystemRequirements: | cppcheck |
NeedsCompilation: | no |
Packaged: | 2022-06-09 15:39:47 UTC; SDL96354 |
Author: | Stéphane Laurent [aut, cre], Amit Gupta [cph] ('fast-xml-parser' library), luyilin [cph] ('json-format-highlight' library) |
Maintainer: | Stéphane Laurent <laurent_step@outlook.fr> |
Repository: | CRAN |
Date/Publication: | 2022-06-10 09:10:09 UTC |
Check a C/C++ file or a folder
Description
HTML widget which runs Cppcheck.
Usage
cppcheckR(
path,
std = NULL,
def = NULL,
undef = NULL,
checkConfig = FALSE,
height = NULL,
elementId = NULL
)
Arguments
path |
path to a C/C++ file or to a folder containing C/C++ files |
std |
the standard, one of |
def |
character vector of symbols you want to define, e.g.
|
undef |
character vector of symbols you want to undefine;
if |
checkConfig |
Boolean, whether to run Cppcheck with the
option |
height |
height in pixels (defaults to automatic sizing) |
elementId |
an id for the widget, this is usually useless |
Value
A htmlwidget
object.
Examples
example <- function(file){
filepath <- system.file("cppexamples", file, package = "cppcheckR")
lines <- readLines(filepath)
print(cppcheckR(filepath, std = "c++03", def = NA, undef = NA))
message(file, ":")
cat(paste0(format(seq_along(lines)), ". ", lines), sep = "\n")
}
example("memleak.cpp")
example("outofbounds.cpp")
example("unusedvar.cpp")
example("useless.cpp")
Shiny bindings for cppcheckR
Description
Output and render functions for using cppcheckR
within
Shiny applications and interactive Rmd documents.
Usage
cppcheckROutput(outputId, width = "100%", height = "400px")
renderCppcheckR(expr, env = parent.frame(), quoted = FALSE)
Arguments
outputId |
output variable to read from |
width , height |
a valid CSS unit (like |
expr |
an expression that generates a ' |
env |
the environment in which to evaluate |
quoted |
logical, whether |
Value
cppcheckROutput
returns an output element that can be
included in a Shiny UI definition, and renderCppcheckRR
returns a
shiny.render.function
object that can be included in a Shiny server
definition.
JSON to HTML
Description
Render a formatted JSON string in HTML.
Usage
json2html(
json,
outfile = NULL,
pandoc = FALSE,
style = paste0("background-color: #051C55; color: #E76900; ",
"font-size: 15px; font-weight: bold; margin: 0; ",
"white-space: pre-wrap; outline: #051C55 solid 10px;"),
keyColor = "crimson",
numberColor = "chartreuse",
stringColor = "lightcoral",
trueColor = "#00cc00",
falseColor = "#ff8080",
nullColor = "cornflowerblue"
)
Arguments
json |
a JSON string or a path to a JSON file |
outfile |
either a path to a html file, or |
pandoc |
Boolean, whether to use pandoc |
style |
some CSS for the container, only if |
keyColor |
color of the keys, only if |
numberColor |
color of the numbers, only if |
stringColor |
color of the strings, only if |
trueColor |
color of the |
falseColor |
color of the |
nullColor |
color of the |
Value
Nothing if outfile
is not NULL
, otherwise the HtML
as a character string.
Examples
library(cppcheckR)
xml <- system.file("extdata", "order-schema.xml", package = "xml2")
json <- xml2json(xml)
html <- json2html(json)
library(htmltools)
if(interactive()){
browsable(HTML(html))
}
# with pandoc
html <- json2html(json, pandoc = TRUE)
if(interactive()){
browsable(HTML(html))
}
Shiny application to check C/C++
Description
Run a shiny application to check C/C++ files.
Usage
shinyCppcheck()
Value
Nothing, this just launches a Shiny app.
Note
The packages listed in the Suggests field of the package description are required.
XML to JSON
Description
Convert XML to a JSON string.
Usage
xml2json(
xml,
spaces = 2L,
linebreaks = FALSE,
replacer = NULL,
attributeNamePrefix = "@_",
textNodeName = "#text",
ignoreAttributes = FALSE,
ignoreNameSpace = FALSE,
parseNodeValue = TRUE,
parseAttributeValue = TRUE,
trimValues = TRUE
)
Arguments
xml |
either a XML file or some XML given as a character string |
spaces |
an integer, the indentation |
linebreaks |
Boolean, whether to break the lines in the JSON string when there are some linebreaks; this generates an invalid JSON string |
replacer |
character vector, the body of the second argument of
|
attributeNamePrefix |
prefix for the attributes |
textNodeName |
name of text nodes, which appear for nodes which have both a text content and some attributes |
ignoreAttributes |
Boolean, whether to ignore the attributes |
ignoreNameSpace |
Boolean, whether to ignore the namespaces |
parseNodeValue |
Boolean, whether to parse the node values to numbers if possible |
parseAttributeValue |
Boolean, whether to parse the attribute values to numbers if possible |
trimValues |
Boolean, whether to trim the values |
Value
A JSON string.
Examples
xml <- system.file("extdata", "order-schema.xml", package = "xml2")
cat(xml2json(xml))
#
js <- c(
'if(key === "@_type"){',
' return undefined;',
'} else if(key === "@_name"){',
' return value.toUpperCase();',
'}',
'return value;'
)
cat(xml2json(xml, linebreaks = TRUE, replacer = js))