123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614 |
- <!DOCTYPE html>
- <!--
- Metrix++, Copyright 2009-2013, Metrix++ Project
- Link: http://metrixplusplus.sourceforge.net
-
- This file is part of Metrix++ Tool.
-
- Metrix++ is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, version 3 of the License.
-
- Metrix++ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Metrix++. If not, see <http://www.gnu.org/licenses/>.
- -->
- <html lang="en">
- <head>
- <meta charset="utf-8">
- <title>Metrix++ Project</title>
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <meta name="description" content="">
- <meta name="author" content="">
- <!-- Le styles -->
- <!--
- <link href="../../style.css" rel="stylesheet">
- -->
- <link href="assets/css/bootstrap.css" rel="stylesheet">
- <link href="assets/css/bootstrap-responsive.css" rel="stylesheet">
- <link href="assets/css/docs.css" rel="stylesheet">
- <link href="assets/js/google-code-prettify/prettify.css" rel="stylesheet">
-
- <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
- <!--[if lt IE 9]>
- <script src="assets/js/html5shiv.js"></script>
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="apple-touch-icon-precomposed" sizes="144x144" href="assets/ico/apple-touch-icon-144-precomposed.png">
- <link rel="apple-touch-icon-precomposed" sizes="114x114" href="assets/ico/apple-touch-icon-114-precomposed.png">
- <link rel="apple-touch-icon-precomposed" sizes="72x72" href="assets/ico/apple-touch-icon-72-precomposed.png">
- <link rel="apple-touch-icon-precomposed" href="assets/ico/apple-touch-icon-57-precomposed.png">
- <link rel="shortcut icon" href="assets/ico/favicon.png">
- <!--
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-146052-10']);
- _gaq.push(['_trackPageview']);
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
- -->
- </head>
- <body data-spy="scroll" data-target=".bs-docs-sidebar">
- <!-- Navbar
- ================================================== -->
- <div class="navbar navbar-link navbar-fixed-top">
- <div class="navbar-inner">
- <div class="container">
- <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </button>
- <a class="brand" href="./index.html">Metrix++</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="">
- <a href="./index.html">Home</a>
- </li>
- <li class="">
- <a href="./workflow.html">Workflow</a>
- </li>
- <li class="">
- <a href="./extend.html">Create plugin</a>
- </li>
- </ul>
- </div>
- </div>
- </div>
- </div>
- <!-- Subhead
- ================================================== -->
- <header class="jumbotron" id="overview">
- <div id="myCarousel" class="carousel slide">
- <div class="carousel-inner">
- <div class="item active">
- <img src="assets/img/slide-01.jpg" alt="">
- <div class="container">
- <div class="carousel-caption">
- <h2>Multiple languages</h2>
- <p class="lead">· C/C++, C# and Java.</p>
- <p class="lead">· Recognises classes, interfaces, namespaces, functions, comments, preprocessor and much more.</p>
- </div>
- </div>
- </div>
- <div class="item">
- <img src="assets/img/slide-02.jpg" alt="">
- <div class="container">
- <div class="carousel-caption">
- <h2>Multiple metrics</h2>
- <p class="lead">· Complexity, size and other.</p>
- </div>
- </div>
- </div>
- <div class="item">
- <img src="assets/img/slide-03.jpg" alt="">
- <div class="container">
- <div class="carousel-caption">
- <h2>High performance and scalability</h2>
- <p class="lead">· Applicable to huge code bases: thousands of files per minute.</p>
- <p class="lead">· Ultra-fast feedback on iterative re-run.</p>
- </div>
- </div>
- </div>
- <div class="item">
- <img src="assets/img/slide-01.jpg" alt="">
- <div class="container">
- <div class="carousel-caption">
- <h2>Effortless application to legacy code</h2>
- <p class="lead">· Recognises legacy, modified and new code.</p>
- <p class="lead">· Prevents from negative trends. Encourages positive.</p>
- </div>
- </div>
- </div>
- <div class="item">
- <img src="assets/img/slide-02.jpg" alt="">
- <div class="container">
- <div class="carousel-caption">
- <h2>Configurable</h2>
- <p class="lead">· Define and apply your rules and policies.</p>
- <p class="lead">· Integrate with your workflow.</p>
- </div>
- </div>
- </div>
- <div class="item">
- <img src="assets/img/slide-03.jpg" alt="">
- <div class="container">
- <div class="carousel-caption">
- <h2>Extendable via plugins</h2>
- <p class="lead">· Define your custom metric.</p>
- <p class="lead">· Add new language parser.</p>
- <p class="lead">· Create advanced post-analysis tool.</p>
- </div>
- </div>
- </div>
- </div>
- <a class="left carousel-control" href="#myCarousel" data-slide="prev">‹</a>
- <a class="right carousel-control" href="#myCarousel" data-slide="next">›</a>
- </div>
- <div class="container">
- <div class="row">
- <div class="span3">
- </div>
- <div class="span9">
- <h5 class="text-right">Management of source code quality is possible.</h5>
- <p class="text-right">
- <a href="https://sourceforge.net/projects/metrixplusplus/files/latest/download" target="blank"
- ><button type="button"class="btn btn-danger">Download</button></a>
- <!--
- <button type="button"class="btn btn-warning">Donate</button>
- -->
- </p>
- </div>
- </div>
- </div>
- </header>
- <div class="container"><div class="row">
-
- <!-- Docs nav
- ================================================== -->
- <div class="span3 bs-docs-sidebar">
- <ul class="nav nav-list bs-docs-sidenav">
- <!--<li><img src="../../logo_project.png"/><p> </p></li>-->
- <li><a href="#overview_section"><i class="icon-chevron-right"></i> Overview</a></li>
- <li><a href="#overview_languages_section"><i class="icon-hand-right"></i> · languages</a></li>
- <li><a href="#overview_metrics_section"><i class="icon-hand-right"></i> · metrics</a></li>
- <li><a href="#download_section"><i class="icon-chevron-right"></i> Download & Install</a></li>
- <li><a href="#workflow_section"><i class="icon-chevron-right"></i> Getting started</a></li>
- <li><a href="#extend_section"><i class="icon-chevron-right"></i> Extending the tool</a></li>
- <li><a href="#contribute_section"><i class="icon-chevron-right"></i> Feedback & Contribute</a></li>
- </ul>
- </div>
-
- <!-- Sections
- ================================================== -->
- <div class="span9">
- <section id="overview_section">
- <div class="page-header">
- <h1>Overview</h1>
- </div>
- <h2>Highlights</h2>
- <p>Metrix++ is a tool to collect and analyse code metrics. Any metric is useless if it is not used.
- Metrix++ offers ease of introduction and integration with a variety of application use cases.</p>
- <ul>
- <li>Monitoring trends (eg. on <strong>daily</strong> basis. In order to take actions or make right decisions earlier.)</li>
- <li>Enforcing trends (eg. on <strong>hourly</strong> basis, at every commit of code changes.)</li>
- <li>Automated asistance to review agains standards (eg. on <strong>per minute</strong> basis during code refactoring and code development.)</li>
- </ul>
- <p>The workflow sections below demonstarate these basic application usecases.</p>
- </section>
- <section id="overview_languages_section">
- <h2>Languages supported</h2>
- <p>The tool can parse C/C++, C# and Java source code files. The parser identifies certain regions in the code,
- such as classes, functions, namespaces, interfaces, etc. It detects comments, strings and code for the preprocessor.
- The identified regions form a tree of nested source code blocks, which are subsequently refered to and scanned by metrics plugins.
- Thus the tool attributes metrics to regions, which provides fine grained data to analysis tools.
- The following example demonstrates the regions concept.</p>
-
- <table class="table">
- <thead>
- <tr>
- <th>Source code</th>
- <th>Regions tree [type: name: content type]</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <pre class="prettyprint linenums">
- // simple C++ code
- #include <myapi.h>
- // I explain the following class
- class MyClass {
- public:
- int m_var; // some member
- // I explain the following function
- MyClass(): m_var(0) {
- char str[] = "unused string"
-
- // nested region for good measure
- struct MyStruct {};
- }
-
- // Do not judge ugly code below
- #define get_max(a,b) ((a)>(b)?(a):(b))
- set_max(int b) {
- m_var = get_max(m_var, b);
- }
- };
- // this is the last line
- </pre>
- </td>
- <td>
- <pre class="prettyprint linenums">
- file: __global__: comment
- file: __global__: code
- file: __global__: preprocessor
- file: __global__: code
- class: MyClass: comment
- class: MyClass: code
- class: MyClass: code
- class: MyClass: code, comment
- class: MyClass: code
- function: MyClass: comment
- function: MyClass: code
- function: MyClass: code, string
- function: MyClass: code
- struct: MyStruct: comment
- struct: MyStruct: code
- function: MyClass: code
- class: MyClass: code
- function: set_max: comment
- function: set_max: preprocessor
- function: set_max: code
- function: set_max: code
- function: set_max: code
- class: MyClass: code
- file: __global__: comment
- </pre>
- </td>
- </tr>
- </tbody>
- </table>
- </section>
- <section id="overview_metrics_section">
- <h2>Metrics</h2>
- <p>The metrics highlighed in blue are <strong>per file</strong> metrics. The other metrics are <strong>per region</strong> metrics.</p>
- <table class="table table-bordered">
- <thead>
- <tr>
- <th>Metric (enable option)</th>
- <th>Brief description</th>
- <th>Motivation / Potential use</th>
- </tr>
- </thead>
- <tbody>
- <tr class="info">
- <td>std.general.size</td>
- <td>Size of a file in bytes.</td>
- <td rowspan="6"><ul><li>Monitoring the growth of source code base.</li>
- <li>Normalizing other metrics.</li>
- <li>Preventing large files and regions (large things are difficult to maintain).</li>
- <li>Predicting delivery dates by comparing
- <a href="http://www.compaid.com/caiInternet/casestudies/kanarticle2.pdf" target="blank">S-shaped code base growth / change curves</a>.</li></ul></td>
- </tr>
- <tr>
- <td>std.code.length.total</td>
- <td>The same as 'std.general.size' metric, but attributed to code regions.</td>
- </tr>
- <tr class="info">
- <td>std.code.filelines.total</td>
- <td>Number of non-blank lines of code of any content type (exectuable, comments, etc.) per file</td>
- </tr>
- <tr>
- <td>std.code.lines.total</td>
- <td>Number of non-blank lines of code of any content type (exectuable, comments, etc.) per region</td>
- </tr>
- <tr class="info">
- <td>std.code.filelines.code</td>
- <td>Number of non-blank lines of code excluding preprocessor and comments per file.</td>
- </tr>
- <tr>
- <td>std.code.lines.code</td>
- <td>Number of non-blank lines of code excluding preprocessor and comments per region.</td>
- </tr>
- <tr class="info">
- <td>std.code.filelines.preprocessor</td>
- <td>Number of non-blank lines of preprocessor code per file.</td>
- <td rowspan="2"><ul><li>Enforcing localisation of preprocessor code in a single place.</li>
- <li>Encouraging usage of safer code structures instead of the preprocessor.</li></ul></td>
- </tr>
- <tr>
- <td>std.code.lines.preprocessor</td>
- <td>Number of non-blank lines of preprocessor code per region.</td>
- </tr>
- <tr class="info">
- <td>std.code.fileslines.comments</td>
- <td>Number of non-blank lines of comments per file.</td>
- <td rowspan="2"><ul><li>Low number of comments may indicate maintainability problems.</li></ul></td>
- </tr>
- <tr>
- <td>std.code.lines.comments</td>
- <td>Number of non-blank lines of comments per region.</td>
- </tr>
- <tr>
- <td>std.code.complexity.cyclomatic</td>
- <td>McCabe cyclomatic complexity metric.</td>
- <td colspan="2"><ul><li>Identification of highly complex code for review and refactoring.</li>
- <li>Preventing complex functions (complexity is a reason of many defects and a reason of expensive maintaintenance).</li></ul></td>
- </tr>
- <tr>
- <td>std.code.complexity.maxindent</td>
- <td>Maximum level of indentation of blocks within a region. For example, the following class has got
- the metric equal to 1 and the function has got it equal to 2:
- <pre class="prettyprint">
- class WeekClass {
- int isWeekend(int day) {
- if (day == SATURDAY ||
- day == SUNDAY) {
- return true;
- }
- return false;
- }
- }
- </pre>
- </td>
- </tr>
- <tr>
- <td>std.code.magic.numbers</td>
- <td>Number of magic numbers. There is an option to exclude 0, -1 and 1 numbers from counting.</td>
- <td>Magic numbers are dangerous.
- The <a href="http://stackoverflow.com/questions/47882/what-is-a-magic-number-and-why-is-it-bad" target="blank">
- discussion on stackoverflow</a> explains why.</td>
- </tr>
- <tr>
- <td>std.code.todo.comments, std.code.todo.strings</td>
- <td>Number of TODO/FIXME/etc markers in comments and strings accordingly.
- There is an option to configure a list of markers.</td>
- <td>Manage potentially incomplete work. If project manager dispatches issues only in a tracker tool,
- todo markers are lost in the source code. The metric could make these 'lost' issues visible.</td>
- </tr>
- <tr>
- <td>std.code.maintindex.simple</td>
- <td>Simple variant of maintainability index - a measure of maintainability.
- It uses std.code.lines:code and std.code.complexity:cyclomatic
- metrics to evaluate level of maintainability. Lower value of this index indicates
- better level maintainability</td>
- <td>Identify code, which may benefit the most from refactoring.</td>
- </tr>
- <tr>
- <td>std.suppress</td>
- <td>An option enables collection of Metrix++ suppressions and 2 metrics: 'std.suppress:count' and
- 'std.suppress.file:count'. The first is number of suppressions per region.
- The second is the same but applies for file-scope metrics.</td>
- <td><ul><li>Suppressing false-positives.</li>
- <li>Managing the amount of suppressions. There should be no false-positives to suppress with the right metric,
- but there could be exceptions in specific cases. Managing suppressions is about managing exceptions.
- If there are many exceptional cases, maybe something is wrong with a metric or the application of a metric.</li></ul></td>
- </tr>
- <tr class="info">
- <td>std.general.procerrors</td>
- <td>Number of errors detected by Metrix++ code parser.</td>
- <td><ul><li>Cleaning up errors to ensure reliable code scanning.</li>
- <li>Errors, like mismatched brackets, may result in bad identification of regions.</li>
- </ul></td>
- </tr>
- <tr class="info">
- <td>std.general.proctime</td>
- <td>Seconds spent on processing a file.</td>
- <td><ul><li>Monitor and profile Metrix++ tool's performance.</li></ul></td>
- </tr>
- </tbody>
- </table>
- </section>
- <section id="download_section">
- <div class="page-header">
- <h1>Download & Install</h1>
- </div>
- <p>In order to get the tool working, <a href="https://sourceforge.net/projects/metrixplusplus/files/latest/download" target="blank">dowload the archive</a> with the latest stable version
- and unpack it to some folder. The first run of the tool will trigger the installation within the folder,
- where it was launched.</p>
- <p>In order to checkout the latest released version from the <a href="https://sourceforge.net/p/metrixplusplus/code" target="blank">version control system</a> use this command:</p>
- <pre>svn checkout <a href="https://sourceforge.net/p/metrixplusplus/code" target="blank">svn://svn.code.sf.net/p/metrixplusplus/code</a>/releases/latest Metrix++</pre>
- <p>In order to checkout the latest version under development, use this command:</p>
- <pre>svn checkout <a href="https://sourceforge.net/p/metrixplusplus/code" target="blank">svn://svn.code.sf.net/p/metrixplusplus/code</a>/mainline Metrix++</pre>
- <h4>Change and Release Notes</h4>
- <p>Change and release notes are available <a href="https://sourceforge.net/p/metrixplusplus/wiki/ChangeLog/" target="blank">here</a>.</p>
- <h4>Prerequisites</h4>
- <p>Python Runtime Environment (version 2.7.* or later. Version 3.* has not been tested)</p>
- <h4>License</h4>
- <p>This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; version 3 of the License.</p>
- <p>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- See the GNU General Public License for more details.</p>
- <p>You should have received a copy of the GNU General Public License along with the Metrix++;
- if not, contact <a href="mailto:avkonst@users.sourceforge.net?subject=Metrix%2B%2B License">Project Administrator</a></p>
-
- </section>
- <section id="workflow_section">
- <div class="page-header">
- <h1>Getting started</h1>
- </div>
- <p>The tool is relatively simple to use. There are 3 fundamental steps:</p>
- <ul>
- <li>Collect the data, for example:</li>
- <pre>
- > python "/path/to/metrix++.py" collect --std.code.lines.code --std.code.complexity.cyclomatic
- </pre>
- </ul>
- <ul>
- <li>View the data, for example:</li>
- <pre>
- > python "/path/to/metrix++.py" view
- </pre>
- </ul>
- <ul>
- <li>Apply thresholds, for example:</li>
- <pre>
- > python "/path/to/metrix++.py" limit --max-limit=std.code.complexity:cyclomatic:7
- </pre>
- </ul>
- <p>Please, check the advanced <a href="workflow.html">description of the workflow</a> with real examples.</p>
- </section>
- <section id="extend_section">
- <div class="page-header">
- <h1>Extending the tool</h1>
- </div>
- <p>Want to enable a new metric or a language, need advanced post-analysis tool?
- Please, check the <a href="extend.html">plugin development tutorial</a>.</p>
- </section>
- <section id="contribute_section">
- <div class="page-header">
- <h1>Feeback and contribute</h1>
- </div>
- <p>Now it is your turn. There are multiple ways how you can contribute and help to improve and progress Metrix++ project:</p>
- <ul>
- <li>Try Metrix++ and <a href="https://sourceforge.net/projects/metrixplusplus/reviews/new">post review</a></li>
- <li><a href="https://sourceforge.net/p/metrixplusplus/tickets/new/">Submit new feature request or bug report</a></li>
- <li><a href="https://sourceforge.net/p/metrixplusplus/tickets/new/">Ask a question</a></li>
- <li>Share your patch files and ideas, colloborate by email to
- <a href="mailto:avkonst@users.sourceforge.net?subject=Metrix%2B%2B Project Request" target="blank">project administrator</a></li>
- <li>Create and publish your plugin.
- <a href="mailto:avkonst@users.sourceforge.net?subject=Metrix%2B%2B Plugin Reference" target="blank">Request to refer</a>
- to it from Metrix++ project space.</li>
- <li><a href="mailto:avkonst@users.sourceforge.net?subject=Metrix%2B%2B Plugin Submission" target="blank">Submit your plugin</a>
- to include to the standard set</li>
- <li>... and consider to
- <a href="mailto:avkonst@users.sourceforge.net?subject=Metrix%2B%2B Join Request" target="blank">join the project</a>!</li>
- </ul>
- </section>
- </div> <!-- end for sections -->
- </div></div> <!-- end for row and container -->
- <!-- Footer
- ================================================== -->
- <footer class="footer">
- <div class="container">
- <div class="row">
- <div class="span3">
- <p><a href="http://sourceforge.net/projects/metrixplusplus/"><img src="http://sflogo.sourceforge.net/sflogo.php?group_id=275605&type=3"
- alt="Get Metrix++ at SourceForge.net. Fast, secure and Free Open Source software downloads" border="0"></a></p>
- <p>·</p>
- <p>· ·<script type="text/javascript" src="http://www.ohloh.net/p/485947/widgets/project_users_logo.js"></script></p>
- <p><a href="http://freecode.com/projects/metrix"><img src="assets/img/fm_logo.png" width="130"></a></p>
- <p>·</p>
- <p><a href="http://www.softpedia.com/progClean/Metrix-Clean-241097.html"><img src="assets/img/softpedia_free_award_f.gif" width="147" /></a></p>
- </div>
- <div class="span9">
- <p>Copyright <strong>©</strong> 2009 - 2013, <a href="mailto:avkonst@users.sourceforge.net"><span class="normalImportance">Metrix++</span> Project</a></p>
- <p>Code licensed under <a href="http://www.gnu.org/licenses/gpl.txt" target="_blank">GPL 3.0</a>, documentation under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.</p>
- <ul class="footer-links">
- <li><a href="https://sourceforge.net/p/metrixplusplus/tickets/new/">Ask question</a></li>
- <li class="muted">·</li>
- <li><a href="https://sourceforge.net/p/metrixplusplus/tickets/new/">Report defect</a></li>
- <li class="muted">·</li>
- <li><a href="https://sourceforge.net/p/metrixplusplus/tickets/new/">Feature request</a></li>
- <li class="muted">·</li>
- <li><a href="https://sourceforge.net/p/metrixplusplus/tickets/search/?q=%21status%3Awont-fix+%26%26+%21status%3Aclosed">Open issues</a></li>
- <li class="muted">·</li>
- <li><a href="https://sourceforge.net/p/metrixplusplus/wiki/ChangeLog/">Changelog</a></li>
- </ul>
- </div>
- </div>
- </div>
- </footer>
- <!-- Le javascript
- ================================================== -->
- <!-- Placed at the end of the document so the pages load faster -->
- <script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
- <script src="assets/js/jquery.js"></script>
- <script src="assets/js/bootstrap-transition.js"></script>
- <script src="assets/js/bootstrap-alert.js"></script>
- <script src="assets/js/bootstrap-modal.js"></script>
- <script src="assets/js/bootstrap-dropdown.js"></script>
- <script src="assets/js/bootstrap-scrollspy.js"></script>
- <script src="assets/js/bootstrap-tab.js"></script>
- <script src="assets/js/bootstrap-tooltip.js"></script>
- <script src="assets/js/bootstrap-popover.js"></script>
- <script src="assets/js/bootstrap-button.js"></script>
- <script src="assets/js/bootstrap-collapse.js"></script>
- <script src="assets/js/bootstrap-carousel.js"></script>
- <script src="assets/js/bootstrap-typeahead.js"></script>
- <script src="assets/js/bootstrap-affix.js"></script>
- <script>
- !function ($) {
- $(function(){
- // carousel demo
- $('#myCarousel').carousel()
- })
- }(window.jQuery)
- </script>
- <script src="assets/js/holder/holder.js"></script>
- <script src="assets/js/google-code-prettify/prettify.js"></script>
- <script src="assets/js/application.js"></script>
- <script>
-
- </script>
- <!-- Analytics
- ================================================== -->
- <!--
- <script>
- var _gauges = _gauges || [];
- (function() {
- var t = document.createElement('script');
- t.type = 'text/javascript';
- t.async = true;
- t.id = 'gauges-tracker';
- t.setAttribute('data-site-id', '4f0dc9fef5a1f55508000013');
- t.src = '//secure.gaug.es/track.js';
- var s = document.getElementsByTagName('script')[0];
- s.parentNode.insertBefore(t, s);
- })();
- </script>
- -->
- </body>
- </html>
|