Finished /after, wip on report
This commit is contained in:
parent
cdf2205ff5
commit
0dfad5fe1d
3 changed files with 57 additions and 6 deletions
|
@ -157,9 +157,11 @@ public void addInitializer(final String name, final BackgroundInitializer<?> bac
|
||||||
protected int getTaskCount() {
|
protected int getTaskCount() {
|
||||||
int result = 1;
|
int result = 1;
|
||||||
|
|
||||||
|
synchronized (this) {
|
||||||
for (final BackgroundInitializer<?> bi : childInitializers.values()) {
|
for (final BackgroundInitializer<?> bi : childInitializers.values()) {
|
||||||
result += bi.getTaskCount();
|
result += bi.getTaskCount();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
BIN
report.pdf
BIN
report.pdf
Binary file not shown.
57
report.tex
57
report.tex
|
@ -8,6 +8,7 @@
|
||||||
\usepackage{xcolor}
|
\usepackage{xcolor}
|
||||||
\usepackage{lmodern}
|
\usepackage{lmodern}
|
||||||
\usepackage{booktabs}
|
\usepackage{booktabs}
|
||||||
|
\usepackage{multirow}
|
||||||
\usepackage{graphicx}
|
\usepackage{graphicx}
|
||||||
\usepackage{float}
|
\usepackage{float}
|
||||||
\usepackage{tikz}
|
\usepackage{tikz}
|
||||||
|
@ -92,10 +93,10 @@ I choose to analyze version 3.12.0 of the library (i.e.\ the code under the
|
||||||
version analyzed during the SDM class.
|
version analyzed during the SDM class.
|
||||||
|
|
||||||
To verify that the project satisfies the 5000 lines of code requirement, I run
|
To verify that the project satisfies the 5000 lines of code requirement, I run
|
||||||
the \textit{cloc} tool. Results are shown in figure \ref{fig:cloc}. Given the
|
the \textit{cloc} tool. Results are shown in table \ref{tab:cloc}. Given the
|
||||||
project has more than 118,000 lines of code, this requirement is satisfied.
|
project has more than 118,000 lines of code, this requirement is satisfied.
|
||||||
|
|
||||||
\begin{figure}[ht]
|
\begin{table}[ht]
|
||||||
\centering
|
\centering
|
||||||
\begin{tabular}{lrrrr}
|
\begin{tabular}{lrrrr}
|
||||||
\toprule
|
\toprule
|
||||||
|
@ -119,8 +120,8 @@ project has more than 118,000 lines of code, this requirement is satisfied.
|
||||||
\end{tabular}
|
\end{tabular}
|
||||||
\caption{Output of the \textit{cloc} tool for the Apache Commons Lang project at
|
\caption{Output of the \textit{cloc} tool for the Apache Commons Lang project at
|
||||||
tag \textit{rel/commons-lang-3.12.0} (before fixes are applied).}
|
tag \textit{rel/commons-lang-3.12.0} (before fixes are applied).}
|
||||||
\label{fig:cloc}
|
\label{tab:cloc}
|
||||||
\end{figure}
|
\end{table}
|
||||||
|
|
||||||
\section{Running the Infer tool}
|
\section{Running the Infer tool}
|
||||||
|
|
||||||
|
@ -136,5 +137,53 @@ automatically run the Infer tool using default options through the course
|
||||||
tools docker image \textit{bugcounting/satools:y23}. The analysis outputs
|
tools docker image \textit{bugcounting/satools:y23}. The analysis outputs
|
||||||
are located in \textit{before/infer-out/report.txt}.
|
are located in \textit{before/infer-out/report.txt}.
|
||||||
|
|
||||||
|
\section{Results}
|
||||||
|
|
||||||
|
Table \ref{tab:infer} shows the results of the analysis performed by Infer
|
||||||
|
providing comments on true and false positives and the actions taken for each
|
||||||
|
result.
|
||||||
|
|
||||||
|
In total
|
||||||
|
|
||||||
|
\begin{table}[]
|
||||||
|
\small
|
||||||
|
\begin{tabular}{@{}llp{1.2cm}p{0.8cm}p{6cm}@{}}
|
||||||
|
\toprule
|
||||||
|
\textbf{File} & \textbf{Line} & \textbf{Kind} & \textbf{True Pos.} &
|
||||||
|
\textbf{Comment} \\ \midrule
|
||||||
|
AnnotationUtils.java & 72 & Null & Yes & -- \\
|
||||||
|
reflect/MethodUtils.java & 486 & Null & Yes & -- \\
|
||||||
|
reflect/FieldUtils.java & 126 & Null & Yes & -- \\
|
||||||
|
concurrent/MultiBackgroundInitializer.java & 160 & Thread Safety & Yes & -- \\
|
||||||
|
\midrule
|
||||||
|
builder/ToStringBuilder.java & 223 & Null & ?? & \multirow{2}{6cm}{??} \\
|
||||||
|
builder/ReflectionToStringBuilder.java & 131 & Null & No & \\
|
||||||
|
\midrule
|
||||||
|
time/DurationUtils.java & 142 & Null & No & The method which may return a null
|
||||||
|
value returns a non-null value if its parameter is non-null, and a
|
||||||
|
non-null parameter is given \\
|
||||||
|
\midrule
|
||||||
|
CharSetUtils.java & 181 & Null & No & According to \textit{java.lang} documentation, the
|
||||||
|
method always returns a non-null value \\
|
||||||
|
\midrule
|
||||||
|
reflect/FieldUtils.java & 341 & Null & No &
|
||||||
|
\multirow{4}{6cm}{a utility method is used to guard the dereference reported
|
||||||
|
with an exception throw} \\
|
||||||
|
reflect/FieldUtils.java & 385 & Null & No & \\
|
||||||
|
reflect/FieldUtils.java & 599 & Null & No & \\
|
||||||
|
reflect/FieldUtils.java & 644 & Null & No & \\
|
||||||
|
\midrule
|
||||||
|
reflect/MethodUtils.java & 987 & Null & No & The method which may return a null
|
||||||
|
value returns a non-null value if its parameter is non-null, and a
|
||||||
|
non-null parameter is always given according to the \textit{java.lang}
|
||||||
|
documentation for the inner nested method \\ \bottomrule
|
||||||
|
\end{tabular}
|
||||||
|
\caption{Results of the Infer static analysis tool execution with default
|
||||||
|
options. \textit{True Pos.} denotes whether a result is a true positive,
|
||||||
|
while \textit{Kind} denotes with \textit{Null} and \textit{Thread Safety}
|
||||||
|
respectively null dereference issues and thread safety violations.}
|
||||||
|
\label{tab:infer}
|
||||||
|
\end{table}
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
|
||||||
|
|
Reference in a new issue