Skip to content

Commit

Permalink
Merge pull request #583 from cqfn/style
Browse files Browse the repository at this point in the history
style improved a bit
  • Loading branch information
KatGarmash authored Jul 31, 2020
2 parents e377caa + 21727e1 commit 0382fdc
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 47 deletions.
11 changes: 11 additions & 0 deletions wp/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
*.bbl
*.bcf
*.blg
*.fdb_latexmk
_minted-wp/
*.fls
*.log
*.run.xml
*.aux
*.pyg
wp.pdf
2 changes: 2 additions & 0 deletions wp/.latexmkrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
$latex = 'latex %O --shell-escape %S';
$pdflatex = 'pdflatex %O --shell-escape %S';
7 changes: 7 additions & 0 deletions wp/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
all: wp.pdf

clean:
rm -rf *.aux *.bbl *.bcf *.blg *.fdb_latexmk *.fls *.log *.run.xml

%.pdf: %.tex references.bib
latexmk -pdf $<
19 changes: 3 additions & 16 deletions wp/references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -1244,8 +1244,6 @@ @article{10.1023/A:1010933404324
volume = {45},
number = {1},
issn = {0885-6125},
url = {https://doi.org/10.1023/A:1010933404324},
doi = {10.1023/A:1010933404324},
journal = {Mach. Learn.},
month = oct,
pages = {5–32},
Expand All @@ -1260,8 +1258,6 @@ @inproceedings{10.1145/3194164.3194186
isbn = {9781450357135},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3194164.3194186},
doi = {10.1145/3194164.3194186},
booktitle = {Proceedings of the 2018 International Conference on Technical Debt},
pages = {57–58},
numpages = {2},
Expand All @@ -1278,8 +1274,6 @@ @article{10.1145/3133925
address = {New York, NY, USA},
volume = {1},
number = {OOPSLA},
url = {https://doi.org/10.1145/3133925},
doi = {10.1145/3133925},
journal = {Proc. ACM Program. Lang.},
month = oct,
articleno = {101},
Expand All @@ -1294,8 +1288,6 @@ @inproceedings{Learning_a_Strategy_for_Adapting
isbn = {9781450336895},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/2814270.2814309},
doi = {10.1145/2814270.2814309},
booktitle = {Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications},
pages = {572–588},
numpages = {17},
Expand All @@ -1306,8 +1298,8 @@ @inproceedings{Learning_a_Strategy_for_Adapting

@ARTICLE{Software_quality_the_elusive_target,
author={B. {Kitchenham} and S. L. {Pfleeger}},
journal={IEEE Software},
title={Software quality: the elusive target [special issues section]},
journal={IEEE Software},
title={Software quality: the elusive target [special issues section]},
year={1996},
volume={13},
number={1},
Expand All @@ -1327,7 +1319,6 @@ @inproceedings{static_code_analysis_for_security
month = {05},
pages = {},
title = {A survey of static code analysis methods for security vulnerabilities detection},
doi = {10.1109/MIPRO.2014.6859783}
}

@inproceedings{Ilyas2016StaticCA,
Expand All @@ -1343,8 +1334,6 @@ @inproceedings{cognitive_complexity
isbn = {9781450357135},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3194164.3194186},
doi = {10.1145/3194164.3194186},
booktitle = {Proceedings of the 2018 International Conference on Technical Debt},
pages = {57–58},
numpages = {2},
Expand All @@ -1367,7 +1356,6 @@ @article{Code_Smells_and_Software_Quality
pages = {},
title = {A Systematic Literature Review on Empirical Analysis of the Relationship Between Code Smells and Software Quality Attributes},
journal = {Archives of Computational Methods in Engineering},
doi = {10.1007/s11831-019-09348-6}
}

@inproceedings{Overview_Static_Code_Analysis_in_Software_Development,
Expand Down Expand Up @@ -1611,5 +1599,4 @@ @inproceedings{LenatFeigenbaum1987
month = {01},
pages = {1173-1182},
title = {On the Thresholds of Knowledge.},
doi = {10.1109/AIIA.1988.13308}
}
}
57 changes: 26 additions & 31 deletions wp/wp.tex
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
\documentclass[10pt]{article}
\usepackage{natbib}
\documentclass[12pt]{article}
\usepackage[natbib=true,style=authoryear]{biblatex}
\addbibresource{references.bib}
\setlength\bibitemsep{0pt}
\usepackage{pgf}
\setcitestyle{citesep={,},aysep={}}
\usepackage[colorlinks,citecolor=blue,linkcolor=black,bookmarks=false,hypertexnames=true]{hyperref}
\usepackage[colorlinks,citecolor=blue,linkcolor=black,bookmarks=false,hypertexnames=true]{hyperref}
\usepackage{url}
\usepackage[inline]{enumitem}
\usepackage{float}
Expand All @@ -11,9 +12,9 @@
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{setspace}
\setstretch{1.1}
\usepackage{enumitem}
\usepackage{caption}
%\usepackage[margin=1.3in]{geometry}
\usepackage{xcolor}
\usepackage[top=1.3in, left=1.4in, includefoot]{geometry}
\setlist{nosep}
Expand All @@ -33,36 +34,32 @@
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}

\lstdefinestyle{mystyle}{
backgroundcolor=\color{backcolour},
backgroundcolor=\color{backcolour},
commentstyle=\color{codegreen},
keywordstyle=\color{magenta},
numberstyle=\tiny\color{codegray},
stringstyle=\color{codepurple},
basicstyle=\sffamily\footnotesize,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
keepspaces=true,
numbers=left,
numbersep=5pt,
showspaces=false,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
keepspaces=true,
numbers=left,
numbersep=5pt,
showspaces=false,
showstringspaces=false,
showtabs=false,
showtabs=false,
tabsize=2
}

\lstset{style=mystyle}


\newcommand{\pattern}[3]{
{\bf #2. #1} \\
{\it Description:} #3 \\
}

\newcommand{\todo}{\textcolor{red}{\textbf{TODO}}}

\setstretch{1.1}
\setlength{\bibsep}{0.0pt}
\tolerance=800

\usepackage{pgfplots}
Expand All @@ -80,11 +77,8 @@
\textsc{Aibolit:}\\
Static Analysis
Using Machine Learning}

\author{Yegor Bugayenko, Anton Cheshkov, Ekaterina Garmash, Andrey Gusev, Yaroslav Kishchenko, Pavel Lukyanov, Evgeny Maslov, Vitaly Protasov}
\affil{Huawei Technologies \\
System Programming Lab, Russian Research Institute, Moscow}

\affil{Huawei Technologies Co., Ltd. \\ System Programming Lab \\ Russian Research Institute (RRI) \\ Moscow, Russia}

\begin{document}

Expand All @@ -95,12 +89,11 @@
\begin{abstract}

Aibolit is a next generation static analyzer powered by machine learning.
Aibolit gives recommendations to developers to avoid specific software patterns
in order to improve quality of the source code. Aibolit can be extended by adding
custom patterns and quality metrics of choice. In this paper, we explain
Aibolit gives recommendations to developers to avoid specific software patterns
in order to improve quality of the source code. Aibolit can be extended by adding
custom patterns and quality metrics of choice. In this paper, we explain
how Aibolit works and how it differs from other static analyzers.


\end{abstract}

\pagebreak
Expand All @@ -127,13 +120,15 @@ \section{Conclusion \& Future Work}
\label{sec:conclusion}
\input{sections/conclusion}

\newpage
\AtNextBibliography{\small}
\setstretch{1.0}
\raggedright
\begin{multicols}{2}\printbibliography\end{multicols}

\section{Appendix}
\newpage
\section*{Appendix}
\label{sec:appendix}
\input{sections/appendix}

\bibliographystyle{apa}
\bibliography{references}


\end{document}

1 comment on commit 0382fdc

@0pdd
Copy link
Collaborator

@0pdd 0pdd commented on 0382fdc Jul 31, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wasn't able to retrieve PDD puzzles from the code base and submit them to GitHub. If you think that it's a bug on our side, please submit it to yegor256/0pdd:

set -x && set -e && set -o pipefail && cd /tmp/0pdd20200730-13-157q04g/cqfn/aibolit && pdd -v -f /tmp/20200731-18980-gkuwmt [1]: + set -e + set -o pipefail + cd /tmp/0pdd20200730-13-157q04g/cqfn/aibolit + pdd -v -f /tmp/20200731-18980-gkuwmt Found 10 lines in...

Please, copy and paste this stack trace to GitHub:

UserError
set -x && set -e && set -o pipefail && cd /tmp/0pdd20200730-13-157q04g/cqfn/aibolit && pdd -v -f /tmp/20200731-18980-gkuwmt [1]:
+ set -e
+ set -o pipefail
+ cd /tmp/0pdd20200730-13-157q04g/cqfn/aibolit
+ pdd -v -f /tmp/20200731-18980-gkuwmt

Found 10 lines in /tmp/0pdd20200730-13-157q04g/cqfn/aibolit/.pdd
My version is 0.20.5
Ruby version is 2.6.0 at x86_64-linux
Reading .
Excluding test/**/*
Excluding test/**/*
Excluding stubs/**/*
Excluding aibolit/metrics/halsteadvolume/target/**/*
Excluding scripts/target/**/*
227 file(s) found, 3608 excluded
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/binary_files/halstead.jar is a binary file (10595980 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/binary_files/model.pkl is a binary file (16409229 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/binary_files/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/utils/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/ast_framework/computed_fields_catalog/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/non_final_class/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/array_as_argument/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/private_static_method/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/nested_blocks/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/supermethod/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/many_primary_ctors/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/send_null/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/method_siblings/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/er_class/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/assert_in_code/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/public_static_method/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/nested_loop/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/protected_method/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/non_final_argument/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/bidirect_index/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/mutable_index/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/classic_setter/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/non_final_attribute/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/redundant_catch/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/string_concat/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/implements_multi/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/empty_rethrow/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/multiple_while/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/multiple_try/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/var_siblings/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/loop_outsider/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/var_decl_diff/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/return_null/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/force_type_casting_finder/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/var_middle/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/if_return_if_detection/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/assign_null_finder/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/instanceof/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/null_check/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/hybrid_constructor/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/method_chaining/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/joined_validation/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/patterns/partial_synchronized/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/metrics/local_methods_calls/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/metrics/cognitiveC/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/metrics/number_variables/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/metrics/entropy/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/metrics/maxDiameter/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/metrics/external_methods_called/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/metrics/spaces/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/metrics/lcom4/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/metrics/RFC/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/metrics/loc/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/metrics/fanout/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/metrics/mda/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/metrics/countLeaves/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/metrics/cc/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/aibolit/ml_pipeline/__init__.py is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/wp/sections/motivation.tex is a binary file (1 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/wp/sections/.gitkeep is a binary file (0 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/wp/how_it_works_diagram_5.jpg is a binary file (71972 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/wp/logo.png is a binary file (208813 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/logo.png is a binary file (208813 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/uml/recommendation_pipeline.png is a binary file (223568 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/uml/train_pipeline.png is a binary file (167130 bytes)
/tmp/0pdd20200730-13-157q04g/cqfn/aibolit/uml/classes_diagram.png is a binary file (190488 bytes)
Reading appveyor.yml...
Reading .gitignore...
Reading README.md...
Reading .gitattributes...
Reading MANIFEST.in...
Reading .rultor.yml...
Reading aibolit/types_decl.py...
Reading aibolit/__main__.py...
Reading aibolit/utils/lines.py...
Reading aibolit/utils/utils.py...
Reading aibolit/utils/ast_builder.py...
Reading aibolit/utils/encoding_detector.py...
Reading aibolit/utils/java_parser.py...
Reading aibolit/utils/scope_status.py...
Reading aibolit/utils/cfg_builder.py...
Reading aibolit/utils/filter.py...
Reading aibolit/utils/cohesiongraph.py...
Reading aibolit/config.py...
Reading aibolit/model/model.py...
Reading aibolit/model/stats.py...
Reading aibolit/ast_framework/ast.py...
Reading aibolit/ast_framework/computed_fields_catalog/nodes_filter.py...
Reading aibolit/ast_framework/computed_fields_catalog/standard_fields.py...
Reading aibolit/ast_framework/computed_fields_catalog/chained_fields.py...
Reading aibolit/ast_framework/ast_node.py...
Reading aibolit/ast_framework/_auxiliary_data.py...
Reading aibolit/ast_framework/java_class.py...
Reading aibolit/ast_framework/java_package.py...
Reading aibolit/ast_framework/java_class_method.py...
Reading aibolit/ast_framework/java_class_decomposition.py...
Reading aibolit/ast_framework/computed_fields_registry.py...
Reading aibolit/ast_framework/ast_node_type.py...
Reading aibolit/ast_framework/__init__.py...
Reading aibolit/ast_framework/java_class_field.py...
Reading aibolit/patterns/non_final_class/non_final_class.py...
Reading aibolit/patterns/array_as_argument/array_as_argument.py...
Reading aibolit/patterns/private_static_method/private_static_method.py...
Reading aibolit/patterns/nested_blocks/nested_blocks.py...
Reading aibolit/patterns/nested_blocks/README.md...
Reading aibolit/patterns/supermethod/supermethod.py...
Reading aibolit/patterns/many_primary_ctors/many_primary_ctors.py...
Reading aibolit/patterns/send_null/send_null.py...
Reading aibolit/patterns/send_null/readme.md...
Reading aibolit/patterns/method_siblings/method_siblings.py...
Reading aibolit/patterns/er_class/er_class.py...
Reading aibolit/patterns/assert_in_code/assert_in_code.py...
Reading aibolit/patterns/public_static_method/public_static_method.py...
Reading aibolit/patterns/nested_loop/nested_loop.py...
Reading aibolit/patterns/protected_method/protected_method.py...
Reading aibolit/patterns/non_final_argument/NonFinalArgumentCtor.java...
Reading aibolit/patterns/non_final_argument/non_final_argument.py...
Puzzle 146-4f2084fc 30/DEV at aibolit/patterns/non_final_argument/non_final_argument.py
Reading aibolit/patterns/non_final_argument/NonFinalArgumentMethod.java...
Reading aibolit/patterns/bidirect_index/bidirect_index.py...
Puzzle 139-732b1bcc 30/DEV at aibolit/patterns/bidirect_index/bidirect_index.py
Reading aibolit/patterns/mutable_index/mutable_index.py...
Puzzle 147-d9d6862a 30/DEV at aibolit/patterns/mutable_index/mutable_index.py
Reading aibolit/patterns/classic_setter/classic_setter.py...
Reading aibolit/patterns/non_final_attribute/non_final_attribute.py...
Reading aibolit/patterns/redundant_catch/redundant_catch.py...
Reading aibolit/patterns/string_concat/string_concat.py...
Reading aibolit/patterns/implements_multi/implements_multi.py...
Reading aibolit/patterns/empty_rethrow/empty_rethrow.py...
Reading aibolit/patterns/multiple_while/multiple_while.py...
Reading aibolit/patterns/multiple_try/multiple_try.py...
Reading aibolit/patterns/var_siblings/var_siblings.py...
Reading aibolit/patterns/loop_outsider/loop_outsider.py...
Reading aibolit/patterns/var_decl_diff/README.md...
Reading aibolit/patterns/var_decl_diff/var_decl_diff.py...
Reading aibolit/patterns/return_null/return_null.py...
Reading aibolit/patterns/force_type_casting_finder/force_type_casting_finder.py...
Reading aibolit/patterns/var_middle/README.md...
Reading aibolit/patterns/var_middle/var_middle.py...
Reading aibolit/patterns/if_return_if_detection/if_detection.py...
Reading aibolit/patterns/assign_null_finder/assign_null_finder.py...
Reading aibolit/patterns/instanceof/instance_of.py...
Reading aibolit/patterns/null_check/null_check.py...
Reading aibolit/patterns/hybrid_constructor/hybrid_constructor.py...
Reading aibolit/patterns/__init__.py...
Reading aibolit/patterns/method_chaining/method_chaining.py...
Reading aibolit/patterns/joined_validation/joined_validation.py...
Reading aibolit/patterns/partial_synchronized/partial_synchronized.py...
Reading aibolit/metrics/local_methods_calls/local_methods_calls.py...
Puzzle 183-069e5295 30/DEV at aibolit/metrics/local_methods_calls/local_methods_calls.py
Reading aibolit/metrics/halsteadvolume/README.md...
Reading aibolit/metrics/halsteadvolume/pom.xml...
Reading aibolit/metrics/halsteadvolume/src/main/java/com/metrics/halstead/ASTVisitorMod.java...
Reading aibolit/metrics/halsteadvolume/src/main/java/com/metrics/halstead/App.java...
Reading aibolit/metrics/halsteadvolume/src/main/java/com/metrics/halstead/HalsteadMetrics.java...
Reading aibolit/metrics/cognitiveC/README.md...
Reading aibolit/metrics/cognitiveC/cognitive_c.py...
Reading aibolit/metrics/number_variables/numVariables.py...
Reading aibolit/metrics/number_variables/README.md...
Reading aibolit/metrics/npath/README.md...
Reading aibolit/metrics/npath/pom.xml...
Reading aibolit/metrics/npath/npath.xml...
Reading aibolit/metrics/npath/main.py...
Reading aibolit/metrics/npath/__init__.py...
Reading aibolit/metrics/hv/README.md...
Reading aibolit/metrics/hv/main.py...
Reading aibolit/metrics/hv/__init__.py...
Reading aibolit/metrics/entropy/README.md...
Reading aibolit/metrics/entropy/entropy.py...
Reading aibolit/metrics/maxDiameter/README.md...
Reading aibolit/metrics/maxDiameter/max_diam_of_tree.py...
Reading aibolit/metrics/external_methods_called/external_methods_called.py...
Puzzle 183-9b03d7d9 30/DEV at aibolit/metrics/external_methods_called/external_methods_called.py
Reading aibolit/metrics/spaces/SpaceCounter.py...
Reading aibolit/metrics/lcom4/lcom4.py...
Reading aibolit/metrics/RFC/rfc.py...
Reading aibolit/metrics/ncss/README.md...
Reading aibolit/metrics/ncss/ncss.py...
Reading aibolit/metrics/ncss/__init__.py...
Reading aibolit/metrics/loc/README.md...
Reading aibolit/metrics/loc/loc.py...
Reading aibolit/metrics/fanout/FanOut.py...
Reading aibolit/metrics/mda/mda.py...
Reading aibolit/metrics/__init__.py...
Reading aibolit/metrics/countLeaves/README.md...
Reading aibolit/metrics/countLeaves/numberofleaves.py...
Reading aibolit/metrics/cc/README.md...
Reading aibolit/metrics/cc/cyclical.xml...
Reading aibolit/metrics/cc/pom.xml...
Reading aibolit/metrics/cc/requirements.txt...
Reading aibolit/metrics/cc/main.py...
Reading aibolit/ml_pipeline/ml_pipeline.py...
Reading aibolit/__init__.py...
Reading wp/.gitignore...
Reading wp/references.bib...
Reading wp/.latexmkrc...
Reading wp/sections/usage_scenarios.tex...
Reading wp/sections/related_work.tex...
Reading wp/sections/how_aibolit_works.tex...
Reading wp/sections/conclusion.tex...
Reading wp/sections/pattern_emp_analysis.tex...
Reading wp/sections/appendix.tex...
Reading wp/sections/introduction.tex...
Reading wp/sections/threats_to_validity.tex...
Reading wp/Makefile...
Reading wp/wp.tex...
ERROR: wp/wp.tex; puzzle at line #62; TODO must have a leading space to become a puzzle, as this page explains: https://github.com/yegor256/pdd#how-to-format
If you can't understand the cause of this issue or you don't know how to fix it, please submit a GitHub issue, we will try to help you: https://github.com/yegor256/pdd/issues. This tool is still in its beta version and we will appreciate your feedback. Here is where you can find more documentation: https://github.com/yegor256/pdd/blob/master/README.md.
Exit code is 1

/app/objects/git_repo.rb:66:in `rescue in block in xml'
/app/objects/git_repo.rb:63:in `block in xml'
/app/vendor/ruby-2.6.0/lib/ruby/2.6.0/tempfile.rb:295:in `open'
/app/objects/git_repo.rb:62:in `xml'
/app/objects/puzzles.rb:36:in `deploy'
/app/objects/job.rb:38:in `proceed'
/app/objects/job_starred.rb:33:in `proceed'
/app/objects/job_recorded.rb:32:in `proceed'
/app/objects/job_emailed.rb:35:in `proceed'
/app/objects/job_commiterrors.rb:36:in `proceed'
/app/objects/job_detached.rb:48:in `exclusive'
/app/objects/job_detached.rb:36:in `block in proceed'
/app/objects/job_detached.rb:36:in `fork'
/app/objects/job_detached.rb:36:in `proceed'
/app/0pdd.rb:358:in `block in <top (required)>'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1635:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1635:in `block in compile!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:992:in `block (3 levels) in route!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1011:in `route_eval'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:992:in `block (2 levels) in route!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1040:in `block in process_route'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1038:in `catch'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1038:in `process_route'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:990:in `block in route!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:989:in `each'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:989:in `route!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1097:in `block in dispatch!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `block in invoke'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `catch'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `invoke'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1094:in `dispatch!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:924:in `block in call!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `block in invoke'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `catch'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `invoke'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:924:in `call!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:913:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.4/lib/rack/protection/xss_header.rb:18:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.4/lib/rack/protection/path_traversal.rb:16:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.4/lib/rack/protection/json_csrf.rb:26:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.4/lib/rack/protection/base.rb:50:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.4/lib/rack/protection/base.rb:50:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.4/lib/rack/protection/frame_options.rb:31:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/logger.rb:15:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/common_logger.rb:33:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:231:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:224:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/head.rb:12:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/method_override.rb:22:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:194:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1957:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1502:in `block in call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1729:in `synchronize'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1502:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/handler/webrick.rb:86:in `service'
/app/vendor/ruby-2.6.0/lib/ruby/2.6.0/webrick/httpserver.rb:140:in `service'
/app/vendor/ruby-2.6.0/lib/ruby/2.6.0/webrick/httpserver.rb:96:in `run'
/app/vendor/ruby-2.6.0/lib/ruby/2.6.0/webrick/server.rb:307:in `block in start_thread'

Please sign in to comment.