Skip to content

Commit

Permalink
Revert "all"
Browse files Browse the repository at this point in the history
This reverts commit fcd1cf5.
  • Loading branch information
joernroeder committed Jun 5, 2014
1 parent fcd1cf5 commit 704b264
Show file tree
Hide file tree
Showing 1,900 changed files with 262,536 additions and 0 deletions.
35 changes: 35 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Logs
*.log

# Runtime data
pids
*.pid
*.seed

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage
build/coverage.html

# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release

# Dependency directory
# Deployed apps should consider commenting this line out:
# see https://npmjs.org/doc/faq.html#Should-I-check-my-node_modules-folder-into-git
node_modules


.idea/
/build/coverage.html
/test/fixtures/core/utils/JSONStateHandler/save/
/src/bin/core/search/elasticsearch-pid
/utils/apacheTikaMimeTypesParser/fileTypes.json
/utils/topologyTestRunner/zmap-results.json
/utils/topologyTestRunner/configBuilder.pyc
*.pyc
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "vendor/docstrap"]
path = vendor/docstrap
url = https://github.com/terryweiss/docstrap.git
184 changes: 184 additions & 0 deletions CodeStyles.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
# Code Styles

Als Basis für die Code-Style dient die `./codeStyleSettings.xml`. Diese muss in den (ignorierten) `.idea`-Ordner verschoben werden.

__Für alle Listen in diesem Dokument gilt: Eine Leerzeile zwischen den Items!__

## Module

Module sollten nur bei kleinen, zusammenhängenden Klassen & Interfaces konstruiert werden. Siehe z.B. `./core/config/Config.ts`

## Interfaces

Interfaces sind getrennt von den Implementationen in einer `./interfaces/InterfaceName.ts` Datei.
Die Methoden sind alphabetisch geordnet.

```
// ./interfaces/FooBar.ts
interface FooBar {}
export = FooBar
```

Sollte eine Typescript-Definition __mehr als einmal__ im gleichen Zusammenhang verwendet werden, muss diese in ein eigenes Interface gekapselt werden.

```
// Bad:
getConfigKeys():Array<string>
setConfigKeys(keys:Array<string>)
// Good:
interface ConfigKeyList extends Array<string> {}
getConfigKeys():ConfigKeyList
setConfigKeys(keys:ConfigKeyList)
```

## Klassen

Eine Datei pro Klasse. Die Datei exportiert die Klasse direkt. Der Dateiname entspricht dem Klassennamen.

```
// FooBar.ts
class FooBar {}
export = FooBar
```

Die Datei ist wie folgt aufgebaut:

1. Interface Imports `<reference path'../InterfaceName.d.ts' />`
2. Node-Core Module Imports `require('net')`
2. Externe Node-Module imports `require('thirdparty-foobar')`
3. Datei-Imports `require('../src/Foo')`
4. Der Kommentar der Klasse

Eine Klasse ist in die folgenden Gruppen gegliedert, die Mitglieder einer Gruppe sind alphabetisch sortiert.

1. Properties
2. Statics
3. Constructor
4. Public
5. Private


Klassen __erhalten alle Dependencies__ als __Constructor-Injection__. Es wird __niemals eine Implementation erzeugt__ (`new FooBar`). Der letzte Parameter ist ein (optionales) Optionen-Object.

## Methodennamen

Methodennamen wenn möglich in die

## Options

Optionen sind Interfaces die die Optionen eines Objects in alphabetischer Reihenfolge definieren.

`interface ObjectNameOptions {}`


## Kommentare

Der TSDoc-Generator analysiert __keinen__ Code und erhält seine Informationen __nur__ aus den Kommentaren.
Dater müssen `@class`, `@interface`, `@member`, `@method` etc. überall angegeben werden.

Weitere Infos [http://usejsdoc.org/tags-type.html](http://usejsdoc.org/tags-type.html)

Kommentiert werden in erster Linie die Interface-Methoden.

### Klassen und Interfaces

Über der Klasse/dem Interface ist der Kommentar in die folgenden Bereiche eingeteilt:

1. Ausführliche Beschreibung
2. Beschreibung des Objects (`@class`, `@interface`, `@extends`, `@implements`)
3. Evtl. Beispiel, todo etc.
4. Die Parameter des Constructors

```
/**
* Description
*
* @interface
* @class topology.BucketInterface
* @extends utils.ClosableInterface
*
* todo foobar
* @example
* var foo = false;
*
* @param {namespace.InterfaceName} parameterName Description
*/
```

### Properties

Properties IMMER konstruieren (v8 hidden classes)

1. Beschreibung des Properties
2. Typ (private, static), Member

```
/**
* Description
*
* @private
* @member {namespaced.type} ClassName#_propertyName
*/
```

### Methoden

1. Beschreibung der Methode
2. Typ (private, static), Member
3. Parameter, Return der Methode

```
/**
* Description
*
* @private
* @method ClassName(.#~ static,instance,inner)
*
* @param {namespace.InterfaceName} parameterName Description
* @returns {boolean} Description
*/
```

## Code

- Aussagekräftige Funktions- und Klassennamen
- Code gegen Interfaces schreiben – nicht gegen Implementationen
- `'` vor `"`
- Leerzeile vor `return` Statement
- Inline-Kommentare beginnen mit `// `
- __keine__ Kommentare hinter den Code, immer drüber
- __keine__ `if` one-liner
- Eine Leerzeile zwischen Methoden
- Eine Leerzeile vor und nach Loops
- Eine Leerzeile innerhalb der Klasse/Interface, etc.
- Jede Variable mit `var` am Anfang des _Levels_ mit `var typescript:Type` deklarieren – Leerzeile am Ende des Variablen-Blocks.
- Anonyme Funktionen so kurz wie möglich halten _(v8 performance)_
- Private Methoden/Properties beginnen mit `_`
- Variablen, Methoden, Properties, Klassen, Interfaces, Module und Event-Namen in `lowerCamelCase`
- Bei Vergleichen gegen definierte Primitive steht das Primitive auf der rechten Seite.

`if (err.code === 'MODULE_NOT_FOUND')`
`if (err.code === 1)`
- Java-Style für Array/Object Deklarationen `Array<string>`, `[key:string]: Object`

## Error

- sync: throw Error
- async: (err instanceof Error, res)
- emitter.emit('error', err instanceof Error)

http://stackoverflow.com/questions/7310521/node-js-best-practice-exception-handling
http://www.nodewiz.biz/nodejs-error-handling-pattern/

- Fehler haben das folgende Format: `Class.method: message`


## Tests

Die Tests einer Implementation sollte alle Methoden des Interfaces berücksichtigen. Sie müssen aber nicht in "Test pro Methode" aufgeteilt sein.

Der Test einer Implementation ist vollständig, sobald min. __95% Coverage__ erreicht sind.

110 changes: 110 additions & 0 deletions Gruntfile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
'use strict';

module.exports = function (grunt) {

grunt.initConfig({
env: {
test: {
NODE_ENV: 'test'
},
dev : {
NODE_ENV: 'development'
},
prod: {
NODE_ENV: 'production'
}
},

plato: {
source: {
options: {
exclude: /node_modules|reports|interfaces|namespace\.js|\.json/
},
files : {
'build/js-source-analysis-report': ['src/**/*.js']
}
}
},

mochaTest: {
test : {
options: {
reporter: 'spec',
require : 'test/config/coverage_blanket',
quiet : false
},
src : ['test/**/*.js']
},
coverage : {
options: {
reporter : 'html-cov',
quiet : true,
captureFile: 'build/coverage.html'
},
src : ['test/**/*.js']
},
'travis-cov': {
options: {
reporter: 'travis-cov'
},
src : ['test/**/*.js']
}
},

// monitors the compiled .js files so that external builders (e.g. WebStorm) trigger restart
nodemon : {
dev: {
options: {
file : 'app/main.js',
watchedExtensions: ['js', 'json'],
watchedFolders : ['app', 'config', 'test']
}
}
},

nodewebkit: {
options: {
build_dir: './webkitbuilds', // Where the build version of my node-webkit app is saved
mac : true, // We want to build it for mac
win : false, // We want to build it for win
linux32 : false, // We don't need linux32
linux64 : false // We don't need linux64
},
src : ['./application.nw/**/*'] // Your node-webkit app
},

// execute 'grunt curl' manually to refresh the external definition files
curl : {
'ts-definitions/fs-extra/fs-extra.d.ts' : 'https://github.com/borisyankov/DefinitelyTyped/raw/master/fs-extra/fs-extra.d.ts',
'ts-definitions/mime/mime.d.ts' : 'https://github.com/borisyankov/DefinitelyTyped/raw/master/mime/mime.d.ts',
'ts-definitions/mocha/mocha.d.ts' : 'https://github.com/borisyankov/DefinitelyTyped/raw/master/mocha/mocha.d.ts',
'ts-definitions/node/node.d.ts' : 'https://github.com/borisyankov/DefinitelyTyped/raw/master/node/node.d.ts',
'ts-definitions/should/should.d.ts' : 'https://github.com/borisyankov/DefinitelyTyped/raw/master/should/should.d.ts',
'ts-definitions/sinon/sinon.d.ts' : 'https://github.com/borisyankov/DefinitelyTyped/raw/master/sinon/sinon.d.ts',
'ts-definitions/superagent/superagent.d.ts': 'https://github.com/borisyankov/DefinitelyTyped/raw/master/superagent/superagent.d.ts',
'ts-definitions/supertest/supertest.d.ts' : 'https://github.com/borisyankov/DefinitelyTyped/raw/master/supertest/supertest.d.ts',
'ts-definitions/winston/winston.d.ts' : 'https://github.com/borisyankov/DefinitelyTyped/raw/master/winston/winston.d.ts'
}
});

// These plugins provide necessary tasks
grunt.loadNpmTasks('grunt-env');
grunt.loadNpmTasks('grunt-typescript');
grunt.loadNpmTasks('grunt-mocha-test');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-nodemon');
grunt.loadNpmTasks('grunt-curl');
grunt.loadNpmTasks('grunt-node-webkit-builder');
grunt.loadNpmTasks('grunt-plato');

// Task aliases
grunt.registerTask('createReports', ['env:test', 'mochaTest:coverage', 'plato:source']);
grunt.registerTask('_runTests', ['env:test', 'mochaTest']);
grunt.registerTask('_coverage', ['env:test', 'mochaTest:coverage']);
grunt.registerTask('test', ['_runTests']);
grunt.registerTask('dev', ['env:dev', 'nodemon']);
grunt.registerTask('prod', ['env:prod', 'nodemon']);

// Default task
grunt.registerTask('default', ['test']);
};
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
abschluss_app
=============
2 changes: 2 additions & 0 deletions build/js-source-analysis-report/assets/css/morris.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 704b264

Please sign in to comment.